pax_global_header00006660000000000000000000000064147730213030014512gustar00rootroot0000000000000052 comment=7dfba11e4e92edbff24632e912cfb76f38ab776b extension-manager-0.6.3/000077500000000000000000000000001477302130300151445ustar00rootroot00000000000000extension-manager-0.6.3/.github/000077500000000000000000000000001477302130300165045ustar00rootroot00000000000000extension-manager-0.6.3/.github/ISSUE_TEMPLATE/000077500000000000000000000000001477302130300206675ustar00rootroot00000000000000extension-manager-0.6.3/.github/ISSUE_TEMPLATE/bug_report.md000066400000000000000000000005631477302130300233650ustar00rootroot00000000000000--- name: Bug report about: Create a report to help us improve title: '' labels: '' assignees: '' --- **Describe the bug** A description of the bug goes here. **System Information:** - Distro (e.g. Fedora, Ubuntu) - Extension Manager version (e.g. 0.6.3) - Package format (Flatpak, Snap, other) **Additional context** Add any other context about the problem here. extension-manager-0.6.3/.github/ISSUE_TEMPLATE/feature_request.md000066400000000000000000000007121477302130300244140ustar00rootroot00000000000000--- name: Feature request about: Suggest an idea for this project title: '' labels: '' assignees: '' --- **Is your feature request related to a problem? Please describe.** A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] **Describe the solution you'd like** A clear and concise description of what you want to happen. **Additional context** Add any other context or screenshots about the feature request here. extension-manager-0.6.3/.github/workflows/000077500000000000000000000000001477302130300205415ustar00rootroot00000000000000extension-manager-0.6.3/.github/workflows/main.yml000066400000000000000000000011041477302130300222040ustar00rootroot00000000000000on: push: branches: [master] pull_request: workflow_dispatch: name: CI jobs: flatpak: name: "Flatpak" runs-on: ubuntu-latest container: image: bilelmoussaoui/flatpak-github-actions:gnome-nightly options: --privileged steps: - uses: actions/checkout@v4.2.2 - uses: flathub-infra/flatpak-github-actions/flatpak-builder@master with: bundle: extension-manager.flatpak manifest-path: build-aux/com.mattjakeman.ExtensionManager.Devel.json cache-key: flatpak-builder-${{ github.sha }} run-tests: true extension-manager-0.6.3/.github/workflows/update-pot.yml000066400000000000000000000031321477302130300233450ustar00rootroot00000000000000on: push: branches: - master paths: - 'data/com.mattjakeman.ExtensionManager.desktop.in.in' - 'data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in' - 'po/POTFILES' - 'src/*.c' - 'src/*.blp' workflow_dispatch: workflow_call: name: Translations concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: update_pot: name: Update Template runs-on: ubuntu-latest container: debian:sid steps: - name: Install Dependencies run: | apt update apt install -y git meson gcc gettext cmake appstream desktop-file-utils \ libadwaita-1-dev libgtk-4-dev libjson-glib-dev libsoup-3.0-dev libxml2-dev \ blueprint-compiler - name: Setup Repository run: | git clone -b ${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}} \ ${{ github.server_url }}/${{ github.repository }} . - uses: actions/checkout@v4.2.2 with: ssh-key: ${{ secrets.SSH_PRIVATE_KEY }} - name: Update POTFILES run: | cd po bash ./print-source-files.sh > ./POTFILES cd .. - name: Update Translation Template run: | meson setup _build -Dbacktrace=false meson compile -C _build extension-manager-pot - name: Create Pull Request uses: peter-evans/create-pull-request@v7.0.5 with: commit-message: 'po: Update template' title: 'po: Update template' branch: update-pot base: master delete-branch: trueextension-manager-0.6.3/.gitignore000066400000000000000000000000201477302130300171240ustar00rootroot00000000000000.flatpak-builderextension-manager-0.6.3/.pre-commit-config.yaml000066400000000000000000000002761477302130300214320ustar00rootroot00000000000000repos: - repo: local hooks: - id: format-blueprint name: Format Blueprint files entry: blueprint-compiler format -f language: system files: \.blp$extension-manager-0.6.3/COPYING000066400000000000000000001045141477302130300162040ustar00rootroot00000000000000 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 . extension-manager-0.6.3/README.md000066400000000000000000000127751477302130300164370ustar00rootroot00000000000000

Extension Manager

A native tool for browsing, installing, and managing GNOME Shell Extensions

[![Build Status](https://img.shields.io/github/actions/workflow/status/mjakeman/extension-manager/main.yml?branch=master)](https://github.com/mjakeman/extension-manager/actions/workflows/main.yml) [![Translation status](https://hosted.weblate.org/widget/extension-manager/svg-badge.svg)](https://hosted.weblate.org/engage/extension-manager/) [![Release Version](https://img.shields.io/github/v/release/mjakeman/extension-manager)](github.com/mjakeman/extension-manager/releases/latest) [![Downloads](https://img.shields.io/badge/dynamic/json?color=green&label=downloads&query=installs_total&url=https%3A%2F%2Fflathub.org%2Fapi%2Fv2%2Fstats%2Fcom.mattjakeman.ExtensionManager)](https://flathub.org/apps/details/com.mattjakeman.ExtensionManager) [![License (GPL-3.0)](https://img.shields.io/github/license/mjakeman/extension-manager)](http://www.gnu.org/licenses/gpl-3.0) Written with GTK 4 and libadwaita ![Screenshot of the main GUI (light mode)](data/screenshot-installed-light.png#gh-light-mode-only) ![Screenshot of the main GUI (dark mode)](data/screenshot-browse-dark.png#gh-dark-mode-only)
## 📋 Features The tool supports: - Browsing and searching extensions from `extensions.gnome.org` - Installation and Removal - Enabling and Disabling - Updating in-app ([GNOME 43+](https://github.com/mjakeman/extension-manager/wiki/Known-Issue:-Updates)) - Screenshots & Images - Ratings & Comments - Translations ([add your language!](#-translations)) If there's something you'd like to see, contributions are welcome! ## 💬 Community We now have a matrix room for Extension Manager. Join and say hello! https://matrix.to/#/#extension-manager:matrix.org ## 💻 Installing Flatpak is the recommended way to install Extension Manager. You can get the latest version from flathub by clicking the button below. There may also be independently-maintained packages available for your distribution. Get it on Flathub ### Third Party Packages You may also be able to obtain Extension Manager from your distribution's package manager. > [!IMPORTANT] > These packages are **maintained independently** and thus may differ from the official version on Flathub. There is no guarantee of support. Please report any issues experienced to the package maintainer (not here!). [![Packaging status](https://repology.org/badge/vertical-allrepos/extension-manager.svg)](https://repology.org/project/extension-manager/versions) ## 🌐 Translations Extension Manager is translated into more than 30 languages. > [!NOTE] > We use [Weblate](https://weblate.org/en/) - an open source continuous localisation tool - for translation management. Access to Hosted Weblate is kindly provided free of charge to the Extension Manager project. ### Contribute Contributions to translations are always welcome! We have a comprehensive translation guide [here](/po/README.md). If you are new to Localisation (l10n), fear not! The entire process is explained above in as much detail as possible. If you have any trouble, please also [get in touch](#-community). ## ⚠️ Known Issues ### Extensions are not being updated Updates do not work out of the box on GNOME 40 and certain older versions of GNOME 41 and 42 **unless the official GNOME Extensions app is also installed**. See here for details and a simple workaround: [Wiki Page](https://github.com/mjakeman/extension-manager/wiki/Known-Issue:-Updates) ## ⏰ Using Unsupported Extensions GNOME Shell will not load extensions that were not designed for your current version. You can override this behaviour by manually disabling GNOME Shell's version check. Extension Manager will respect this preference and allow you to use unsupported extensions fully. > [!CAUTION] > Unsupported extensions will likely not work as intended and > may introduce instability to your system. Disable the version check at your own risk. > [!IMPORTANT] > Re-enable the version check before filing issues against GNOME components. Turn off the version check and allow unsupported extensions: ``` gsettings set org.gnome.shell disable-extension-version-validation true ``` Use the default setting and return to safety: ``` gsettings reset org.gnome.shell disable-extension-version-validation ``` ## 🔨 Building The easiest way to build is by cloning this repo with GNOME Builder. It will automatically resolve all relevant flatpak SDKs automatically. Extension Manager needs a recent version of the GNOME SDK in order to build. See the [Development](build-aux/com.mattjakeman.ExtensionManager.Devel.json) or [Stable](/build-aux/com.mattjakeman.ExtensionManager.json) Flatpak manifests for a full dependency list. ### Dependencies Extension Manager depends on the following libraries: - gettext - gtk4 - libadwaita - libjson-glib - libsoup - libxml2 - [blueprint](https://gitlab.gnome.org/jwestman/blueprint-compiler) On Debian-based distributions, the required dependencies can be installed with the following command: ```shell sudo apt install blueprint-compiler gettext libadwaita-1-dev libgtk-4-dev libjson-glib-dev libsoup-3.0-dev libxml2-dev meson ``` ### Building From Source ```shell meson setup _build meson compile -C _build meson install -C _build ``` extension-manager-0.6.3/build-aux/000077500000000000000000000000001477302130300170365ustar00rootroot00000000000000extension-manager-0.6.3/build-aux/com.mattjakeman.ExtensionManager.Devel.json000066400000000000000000000040631477302130300273110ustar00rootroot00000000000000{ "id" : "com.mattjakeman.ExtensionManager.Devel", "runtime" : "org.gnome.Platform", "runtime-version" : "master", "sdk" : "org.gnome.Sdk", "command" : "extension-manager", "separate-locales" : false, "finish-args" : [ "--share=network", "--share=ipc", "--socket=fallback-x11", "--device=dri", "--socket=wayland", "--talk-name=org.gnome.Shell.Extensions", "--talk-name=org.gnome.SessionManager" ], "cleanup" : [ "/include", "/lib/pkgconfig", "/man", "/share/doc", "/share/gtk-doc", "/share/man", "/share/pkgconfig", "*.la", "*.a" ], "modules" : [ { "name" : "blueprint-compiler", "builddir" : true, "buildsystem" : "meson", "cleanup" : [ "*" ], "sources" : [ { "type" : "git", "url" : "https://gitlab.gnome.org/jwestman/blueprint-compiler.git", "commit" : "04ef0944db56ab01307a29aaa7303df6067cb3c0", "tag" : "v0.16.0" } ] }, { "name" : "libbacktrace", "builddir" : true, "buildsystem" : "autotools", "sources" : [ { "type" : "git", "url" : "https://github.com/ianlancetaylor/libbacktrace.git", "branch" : "master" } ] }, { "name" : "extension-manager", "builddir" : true, "buildsystem" : "meson", "run-tests" : true, "config-opts" : [ "-Ddevelopment=true", "-Dpackage=Flatpak", "-Ddistributor=mjakeman", "-Dofficial=true" ], "sources" : [ { "type" : "dir", "path" : "../" } ] } ] } extension-manager-0.6.3/build-aux/com.mattjakeman.ExtensionManager.json000066400000000000000000000043761477302130300262620ustar00rootroot00000000000000{ "id" : "com.mattjakeman.ExtensionManager", "runtime" : "org.gnome.Platform", "runtime-version" : "48", "sdk" : "org.gnome.Sdk", "command" : "extension-manager", "finish-args" : [ "--share=network", "--share=ipc", "--socket=fallback-x11", "--device=dri", "--socket=wayland", "--talk-name=org.gnome.Shell.Extensions", "--talk-name=org.gnome.SessionManager" ], "cleanup" : [ "/include", "/lib/pkgconfig", "/man", "/share/doc", "/share/gtk-doc", "/share/man", "/share/pkgconfig", "*.la", "*.a" ], "modules" : [ { "name" : "blueprint-compiler", "builddir" : true, "buildsystem" : "meson", "cleanup" : [ "*" ], "sources" : [ { "type" : "git", "url" : "https://gitlab.gnome.org/jwestman/blueprint-compiler.git", "commit" : "04ef0944db56ab01307a29aaa7303df6067cb3c0", "tag" : "v0.16.0" } ] }, { "name" : "libbacktrace", "builddir" : true, "buildsystem" : "autotools", "sources" : [ { "type" : "git", "url" : "https://github.com/ianlancetaylor/libbacktrace.git", "commit" : "78af4ffa26e15532847c1ba854ece7b3bacc6b1a" } ] }, { "name" : "extension-manager", "builddir" : true, "buildsystem" : "meson", "build-options" : { "no-debuginfo" : true }, "config-opts" : [ "-Ddevelopment=false", "-Dpackage=Flatpak", "-Ddistributor=mjakeman", "-Dofficial=true" ], "sources" : [ { "type" : "git", "url" : "https://github.com/mjakeman/extension-manager", "commit" : "b680e30c659a8c7c04533b01f7b4e3154504cffa", "tag" : "v0.6.2" } ] } ] } extension-manager-0.6.3/data/000077500000000000000000000000001477302130300160555ustar00rootroot00000000000000extension-manager-0.6.3/data/com.mattjakeman.ExtensionManager.desktop.in.in000066400000000000000000000010671477302130300270050ustar00rootroot00000000000000[Desktop Entry] Name=Extension Manager Exec=extension-manager %U Icon=@app_id@ Terminal=false Type=Application Categories=GTK;Utility OnlyShowIn=GNOME; StartupNotify=true MimeType=x-scheme-handler/gnome-extensions; Comment=Manage GNOME Shell Extensions # Translators: Search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. # Make sure to leave the original strings and add your translations afterwards, so that users can search both in English and your language. Keywords=extension;manager;shell; extension-manager-0.6.3/data/com.mattjakeman.ExtensionManager.gschema.xml.in000066400000000000000000000020111477302130300271230ustar00rootroot00000000000000 800 Window Width 600 Window Height false Is Maximized Wether app window is maximized. false Sort Enabled First Display enabled extensions first in the installed view. false Show Unsupported Show extensions which do not support the current version of GNOME. extension-manager-0.6.3/data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in000066400000000000000000000216131477302130300277340ustar00rootroot00000000000000 @app_id@ CC0-1.0 GPL-3.0-or-later Extension Manager Browse, install, and manage GNOME Shell Extensions Matthew Jakeman

A utility for browsing and installing GNOME Shell Extensions.

Features:

  • Browse extensions.gnome.org right inside the app
  • Manage the extensions you already have installed
Manage the extensions you already have installed https://raw.githubusercontent.com/mjakeman/extension-manager/master/data/screenshot-installed-light.png Browse extensions.gnome.org right inside the app https://raw.githubusercontent.com/mjakeman/extension-manager/master/data/screenshot-browse-dark.png See all the details of your extensions https://raw.githubusercontent.com/mjakeman/extension-manager/master/data/screenshot-details-light.png Check your extensions compatibility with the next version of GNOME https://raw.githubusercontent.com/mjakeman/extension-manager/master/data/screenshot-upgrade-assistant-dark.png @app_id@.desktop https://mattjakeman.com/apps/extension-manager https://github.com/mjakeman/extension-manager/issues https://github.com/mjakeman/extension-manager/discussions https://github.com/sponsors/mjakeman https://github.com/mjakeman/extension-manager/blob/master/po/README.md https://matrix.to/#/#extension-manager:matrix.org https://github.com/mjakeman/extension-manager extension-manager pointing keyboard touch 360 #95d1ff #005edf
  • Fixes a frequent crash when installing an extension
  • Brazilian Portuguese and Korean translations updates
  • Improve adaptability
  • Refresh design of various elements
  • Extension row now shows session modes if any
  • Latest platform updates
  • Fix various bugs and crashes
  • Translation updates
  • Translation updates
  • Various bug fixes

The 'Accessible & Refined' release

  • Accessibility improvements
  • Search installed extensions
  • More extension details
  • Latest platform updates
  • Translation updates
  • Translation updates
  • Performance and stability

The 'Performance & Polish' release

  • Compatibility with GNOME 46
  • Display extension icons and statistics
  • Search is more reliable
  • New widgets, better resizing, cleaner look
  • Translation updates
  • HOTFIX: Fix broken 'recent' and 'popularity' search filters
  • Various stability and correctness fixes
  • Translation updates
  • Translation updates
  • Upgrade Assistant scroll fix
  • Pixel perfect app icon
  • Translation updates
  • Official snap support
  • Improved error log generation
  • Fully adaptive mobile-friendly user interface
  • Paginated search results
  • Upgrade Assistant for checking extension compatibility
  • Unsupported extensions are hidden by default
  • Overhauled error and crash reporting
  • Full-screen image viewer
  • Handles new gnome-extensions:// URI scheme
  • Randomised extension suggestions
  • Performance and stability
  • Translation updates
  • Various bug fixes
  • Performance and stability
  • Translation updates
  • Remove release notes dialog
  • Fix special characters in installed extension listings
  • Performance and stability

The second feature update to extension-manager. Highlights include:

  • View comments and reviews
  • Support for in-app updates
  • Better handling errors and out-of-date extensions
  • Allow installing 'unsupported' extensions
  • Display release notes on first run
  • New app icon
  • Optionally sort extensions by enabled status
  • Translation updates
  • Performance and stability
  • Translation updates
  • Translation updates
  • Fix special characters in search results

Fixes a crash that sometimes occurs while uninstalling an extension

The first feature update to extension-manager. Highlights include:

  • Dark theme and support for overriding the system colour scheme
  • Shows screenshots in extension listings
  • Shell version compatibility check
  • Localised into seven languages
  • Sort search results
  • Global extension on/off toggle
  • Displays user and system extensions separately
  • Performance and stability
extension-manager-0.6.3/data/icons/000077500000000000000000000000001477302130300171705ustar00rootroot00000000000000extension-manager-0.6.3/data/icons/com.mattjakeman.ExtensionManager-symbolic.svg000066400000000000000000000012111477302130300300420ustar00rootroot00000000000000 extension-manager-0.6.3/data/icons/com.mattjakeman.ExtensionManager.Devel.svg000066400000000000000000000112221477302130300272640ustar00rootroot00000000000000 extension-manager-0.6.3/data/icons/com.mattjakeman.ExtensionManager.Source.svg000066400000000000000000000434011477302130300274710ustar00rootroot00000000000000 Adwaita Icon Template image/svg+xml GNOME Design Team Adwaita Icon Template Hicolor Symbolic extension-manager-0.6.3/data/icons/com.mattjakeman.ExtensionManager.svg000066400000000000000000000035511477302130300262340ustar00rootroot00000000000000 extension-manager-0.6.3/data/icons/hicolor/000077500000000000000000000000001477302130300206275ustar00rootroot00000000000000extension-manager-0.6.3/data/icons/hicolor/scalable/000077500000000000000000000000001477302130300223755ustar00rootroot00000000000000extension-manager-0.6.3/data/icons/hicolor/scalable/actions/000077500000000000000000000000001477302130300240355ustar00rootroot00000000000000extension-manager-0.6.3/data/icons/hicolor/scalable/actions/clock-alt-symbolic.svg000066400000000000000000000014001477302130300302410ustar00rootroot00000000000000 extension-manager-0.6.3/data/icons/hicolor/scalable/actions/donation-symbolic.svg000066400000000000000000000016641477302130300302170ustar00rootroot00000000000000 extension-manager-0.6.3/data/icons/hicolor/scalable/actions/external-link-symbolic.svg000066400000000000000000000024241477302130300311540ustar00rootroot00000000000000 extension-manager-0.6.3/data/icons/hicolor/scalable/actions/globe-symbolic.svg000066400000000000000000000051371477302130300274730ustar00rootroot00000000000000 extension-manager-0.6.3/data/icons/hicolor/scalable/actions/info-symbolic.svg000066400000000000000000000014551477302130300273350ustar00rootroot00000000000000 extension-manager-0.6.3/data/icons/hicolor/scalable/actions/offline-symbolic.svg000066400000000000000000000050461477302130300300240ustar00rootroot00000000000000 extension-manager-0.6.3/data/icons/hicolor/scalable/actions/pip-in-symbolic.svg000066400000000000000000000023321477302130300275710ustar00rootroot00000000000000 extension-manager-0.6.3/data/icons/hicolor/scalable/actions/pip-out-symbolic.svg000066400000000000000000000023301477302130300277700ustar00rootroot00000000000000 extension-manager-0.6.3/data/icons/hicolor/scalable/actions/puzzle-piece-symbolic.svg000066400000000000000000000012031477302130300310050ustar00rootroot00000000000000 extension-manager-0.6.3/data/icons/hicolor/scalable/actions/settings-symbolic.svg000066400000000000000000000035731477302130300302450ustar00rootroot00000000000000 extension-manager-0.6.3/data/icons/hicolor/scalable/actions/software-update-available-symbolic.svg000066400000000000000000000021511477302130300334240ustar00rootroot00000000000000 extension-manager-0.6.3/data/icons/hicolor/scalable/actions/star-filled-rounded-symbolic.svg000066400000000000000000000046741477302130300322540ustar00rootroot00000000000000 extension-manager-0.6.3/data/icons/hicolor/scalable/actions/star-outline-rounded-symbolic.svg000066400000000000000000000026671477302130300324740ustar00rootroot00000000000000 extension-manager-0.6.3/data/icons/hicolor/scalable/actions/supported-symbolic.svg000066400000000000000000000022631477302130300304250ustar00rootroot00000000000000 extension-manager-0.6.3/data/icons/hicolor/scalable/actions/unknown-symbolic.svg000066400000000000000000000024261477302130300301000ustar00rootroot00000000000000 extension-manager-0.6.3/data/icons/hicolor/scalable/actions/unsupported-symbolic.svg000066400000000000000000000021331477302130300307640ustar00rootroot00000000000000 extension-manager-0.6.3/data/icons/meson.build000066400000000000000000000005061477302130300213330ustar00rootroot00000000000000icondir = join_paths(get_option('datadir'), 'icons/hicolor') install_data( '@0@.svg'.format(app_id), install_dir: join_paths(icondir, 'scalable/apps'), ) install_data( 'com.mattjakeman.ExtensionManager-symbolic.svg', install_dir: join_paths(icondir, 'symbolic/apps'), rename: '@0@-symbolic.svg'.format(app_id), ) extension-manager-0.6.3/data/meson.build000066400000000000000000000037351477302130300202270ustar00rootroot00000000000000desktop_file_in_config = configuration_data() desktop_file_in_config.set('app_id', app_id) desktop_file_in = configure_file( input: 'com.mattjakeman.ExtensionManager.desktop.in.in', output: '@0@.desktop.in'.format(app_id), configuration: desktop_file_in_config, ) desktop_file = i18n.merge_file( input: desktop_file_in, output: '@0@.desktop'.format(app_id), type: 'desktop', po_dir: '../po', install: true, install_dir: join_paths(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 appconf = configuration_data() appconf.set('app_id', app_id) appstream_file_in = configure_file( input: 'com.mattjakeman.ExtensionManager.metainfo.xml.in.in', output: 'com.mattjakeman.ExtensionManager.metainfo.xml.in', configuration: appconf, ) appstream_file = i18n.merge_file( input: appstream_file_in, output: '@0@.metainfo.xml'.format(app_id), po_dir: '../po', install: true, install_dir: join_paths(get_option('datadir'), 'metainfo') ) appstreamcli = find_program('appstreamcli', required: false) if appstreamcli.found() test('Validate appstream file', appstreamcli, args: ['validate', '--no-net', '--explain', appstream_file] ) endif schemaconf = configuration_data() schemaconf.set('app_id', app_id) schemaconf.set('app_version', meson.project_version()) schema_file_in = configure_file( input: 'com.mattjakeman.ExtensionManager.gschema.xml.in', output: '@0@.gschema.xml'.format(app_id), configuration: schemaconf, ) install_data(schema_file_in, install_dir: join_paths(get_option('datadir'), 'glib-2.0/schemas') ) compile_schemas = find_program('glib-compile-schemas', required: false) if compile_schemas.found() test('Validate schema file', compile_schemas, args: ['--strict', '--dry-run', meson.current_source_dir()] ) endif subdir('icons') extension-manager-0.6.3/data/screenshot-browse-dark.png000066400000000000000000002276011477302130300231660ustar00rootroot00000000000000PNG  IHDR>sBIT|dtEXtSoftwaregnome-screenshot>&tEXtCreation Timemar 11 feb 2025 22:51:00 IDATxw\' [! *֍={=?gݵjnEqcŁEQѪ Qd$?R"@ݛ.G{e#̮@.cLDDDD(29CP< id/""""܋SO N)1""""""u :0Di1!"""""C1x&P 'rQɵ3ܺDDDDDr]m+/e&p- QZGxK@gN3ܿԮ+c""""(aϘ!1Μ_#G""""ȐhgN Hi}_ӎ%O cgN Liٗ^MJ0-1G͜#`zL""""mQf:n """"lu6l2ӳlv=DDDDDAz@*lf dnc6Dx e= t7VVa3;#c,5`2T.O}go.!3-Slඈ(7ӰeRfvFi }! DDDDD:tJnYjJM]}םrɌҐAq%"""""!CZ\Kg Y5^)us6(;'TfcKDDDDDihR L;.Y.lf0^!S߀Ҽ\fMDDDD[e4ٔgr 9&lfҊov eF^f(;0f2S 8ӫu3˄ͬj#d0S. 3+c"""""RҷU2e l6JJM= RlJS@kDDDDD}VkR((fVE2SjXN}} """""J_Okk )2lf0u颪ޥV\mӶMCQIͭLjt OT"B)A3=BQ2Ք(DDDDDےh+RH4Fԧu3[ :2[tX4$H2\eSWgJ (&SW+!39"lfO"VWˤXQk^kE(괵`?O=NkԷꥯ\4Ji)#V{XN=?W߶yDDDDD5ӝVyk3P&}+Ѷl63:;d${mqe=7'+7 ϓNm_?mMڐ2WICGI2Vmω(k5@Oz`\o!S56K׊)S_z,##1WraZ'6`)2\˖-¢X,P\A4(g$)G>Ϟ=9|4N]2iXL.l.2MmԚjr-ں& ?&vvv֮ŇD  %@&Cr_QDHĐHL`bb 7o^oS$(d:ok&-Q^LA:}L׮ݢi_YcfQoɔ8::mbwY""J-䃕U@,fD011LȨrFOH}5ջ&>7U3Kt*ASWY]jT/f2eʍJ'}߉gnn;;[H$y[j2&DKK $$ 2:DC b+{{`_h*ue,AWkږyڂX$22DDZ-o=H|01Dd2 wރ ڵkʕ+a!~?+WopvVRTJe?A С1x@|Ǐ[9k]h%CƔ)u T*Ŷm;bTmoep"-˗ϣpB(Q^x77e ڵu۶@0ut5SFO{өSG4jP)Up/LLLpqԩSjDLL T \>}1*W?<|ѥKw=`Ag^*3i… ც._XWx_/^€e b1N8k?'OݻE?C&X1W˗OJJ}J\|V9֭/ZE 9ƏB-cʔ>|(F>QI>V,BC?`̘ !!!7nӴn=`咈rTݻ׫)mݹs[|B7rDSlذΝI7o^|bbbxXǏA?r{p/|}o@'@ߡdɒw1G ٳg5k>}{{{A;;;|_Onժ55k6VXL4Ӧ -^ 899!~e.] Jm~Ç PbyWT*GPxqX[[RR͋/AP{8~.GG')ϭneʔ?X1WH4qq鸸xt3$dܓY-@D)WYT]vz[r\\}Зo.\F&Qbk:Cڵ0kl+Q;9p%\x h֬u%ͱ߼yz[{dߏ~/W.MӦ߼5oN_n=z,۶mFm~FUnFNׯP(>|4<=P>c =N}O@'8;;~F ''G<}C@p+ԕ*U˻h" Ñ#Tgr;y~ׯ^yӞ9r,bbbU1R)nU]|n@ۡH=녱c#!!_FaQ<GGG4mطALD'00 U?!66Nڵ.?:Ϻ)LQR^3"(ñHm8G?&?Y7DDСVj:.I߹s=zкSoC,Ih޼?3xyW j$%Ҩ/_>XXXumllpoe dZeP$ʓ<&>OlaLI%mTZy}E3'MɠIDD*#&eMC"7rb?4(Y*`fN:1r9LȯF[_d:Gf4[7S:"""#Q)%ibbb111F,yz$""rd2^S%ʙ}@dd$]ط7!""RḪ (66QQQ]6JAS,FfZdIDD-A*i7G*g$%d2]a6d5l$"lO9aҘBaԑ) ` (0l | ]"A( Ri|fWRI*Gx'v%"22^IDD )077)$1xHVL&T*E\\&Q:a$""2""o{Y~]LDDDDD9Q:=hQàIDDDDDDFŠIDDDDDDFfLDDDDDN091hQ&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$""""""b$""""""b$""""""b$""""""b$""""""b$""""""b$""""""b$""""""b$""""""b$""""""b$""""""b$""""""b$""""""b$"",X1WǶmaooU""T2 e6KKKm͚5C2raaaxΝٳ^d]L1oG5[4nܨ۰ɇQFiӦ(T r9?XrQСØ9sV2( IDAT:(gZx!Vu4nSLO?/kEDDIDZ&`\,XPcYrX&ֆ҂Ar%+++,YPkȌ91c4?1+4oT0-} qqqx/jx,AV\ǏQ\Yܺu7o*Q*1hQԺu+ ݾ틙3g@$ݽ ~esUGxxxFW9Ub1ryfW#Y&&&ȟ?`ݿc^CΝaX8x^z+cjӦ<<͟wQMl62e:޽{i]֭([W˕(XsUXC5-JQl(I&ACHH(.^ 6#,,Lk݊sE޽Pv-*Ty/_op7ݫq={ JRM_p#FV_5ѥK'l &>|ëWq1={Νy]ē'O0b0t ϟq]_ F7"܆Ar%sssy ӧ]_M֣tRhҤ14iaȱD"̜9H$,+P  8qF2d 5u>|eEƍPl|SSS q5:7r8th?,--UJ.3A8pG鵲KѪUKAre1hX[lKq}>>}zfycƌFLL $ L,xݻpqTVL8| vKa ͛7CϞ}3itM=Vuǰa1vuaXWwq) hРQݻw:eff ֢qFyᇖhܸFW3l߈rGr'Oj[jƏ%Krܿ@ZnooCiCvmEuԨ2dFTW\YlٲQE۷ezϏ۷:XkBfRutnP"[l$ OѣG,Xoй9L&ܹP( NZɤD",Y(I*T kذf͚ [ؼydZjb۶!S]req~,7t`AL˗/A];f͚(Yb\~Zj6FD|PL5L1VgC׾D DHR|]qkٳQ=5Ø\l {^x; AUMjpp0(h1c^LD"T^ 7n|y-.^< lڴEc3?h^GYFu{֪US0%O? -&O9sji='ɓ'x9R)QLiԬYÇ.] EI/Unn'O55kxo 7"Q葟`YXpzҥKaÆLҥ+mmmѭ[Ac߱nf̘~Z(w劷 d.] _>.^EpʔɂkP'L [[[-[7B^= Gzyo|(׷o_-Vڵk+mΝ;!3D͚5ЦM+tBBL~ЫWiV[W_zN=6oހǏ֭x5D\\=֭۰qfץtY8`SLVM[YYbҤ22 /^1Dl$\iϞhԨ`^^=ѫWODG@,iL&É([ /_MjpT^ ~~aoonݺnȟrKOϳ@JhFpynj^*q'nER%QByk%{k̰w>̝;[5mc'OիްΫqQLk ޽{,bѢ%#ر8z8zիb1ϟ{ ed|5ׯ_1gμ4iP`Aռ_] 6ŋpttҸ1"^/^BppE￯qOϳPoDD9&JW\šCѽ{Weukk 'Ξ=ժUU X#ѹs'tIYպs}~CP>::VVVX2Ν5 *T:uQ6&&K,K6iϞh޼ԩgeeVZj-j<B2c1332߾0`4SL͛<>7˧O"+L4ӧ`)D,ɰzvޣoݺCGh0g޽[s߈rhQ%/?Ю]ԫWEr>}k Ѻ/ѡCgn :w#c[x{_ո͆T*ŀ1hkŊT*ׯ{q ݻht[BǎU˗p"8?%::cǎGڵн{WTX T*EPP_$O"2..k֬Y;>L8 .V?C  * _>ye7Ԟp uA"E`mszOΔ\fZKhٲ9\\\`c>!0;Osv˝7"W>Q ϓ'/gbb#ܹ39sfNP.*H$u:TۮXB4i:::`Ÿ}OSݻLj>?R_촺79D$+@"""Я@z֭Xr5È5#CyxBB 'Od1113J^^hҤ޼yc/ xQl.&FsGnh۶5Ǝwueʔ֭Y/#AٳUb1.]m;B*\[PByl۶OQp! <M4An=C\.G`c?aպ#{V1233{9s#445j|ٳg!o޼زe[ G+}o,?srMU4A.bccH\Kgv51Gmsx{_3+CNx5ʕr*N8#aR=z$֬Yz 自U 'N‘#`Y?~jgCg^tokZ[*_zWzkzuZժė/0{}HRԭ['ӃfvîDI(ڵk7o^С(Q /^6m'ɓp XŵS8,Mvݺu3'W^# o߂'Pd ܹ~~㍹sg&`zڵ] <|x}Fٳp񢗠#m`mmŋΝ{~ہrʪ'w,LLL0cTܾǏ`Ѣ055Mv_/_>6mZCv @ھ6}/Gur sv*;/,ʕ+xB<~ )zon%TMB a׮x!n޼aÆe淖HÇK{ÇQp`={v})₎pP.]:2~%.]#۷..Ue1wp={C z[X| lmm_b„q?X| .͛7>c;)Dɓ'x!/_~sH9٥KgxEr<Çť0v؊G%/4l@ޔKu"#F Õ+NGV-e/c̘Qطo?[9@vmqY<{CڵgggZ4J9r8%K}l/_>}6X?tAxolڴŊ,'O¨Q#睺=i]ׯ_fZl!8% ΝB׮]mmmдi\p1m+!!b®۷R!=H$>|۶mV+U={VZ3'Jƍp?'ի*cg禮9C?sr"M"5cƌٳдislܸ3gNGժ EZ?\+WAZuzbu8vڷW`„q8q`Æ …ѩSWԩ#,}]U;v*"HzJ,XFdd$p^|]{`ܸغUG?D:ZOfMajj'NʕH$Y P ,YLLL} "[nBJ1~$>|{5R?s]vy ХKw|3Tun݆ ԪU7n4h7nٳgaŊUhذ)6oކkWHHUv g1b4u뉄)6llڵ=GG<ի/&Le˨ޛʕ֭:3F=.3gOB3ix1 .Fǎqlݺ CHH([ ơH899bƌiXx޽лw?@1dȰיmڴС#СCX[[cѢk4i#ǠIx%6n\DOjq(Y$v!(Ծ}g5-[!Tׯ_ 333t:uCb1czrӧ7,]tGHH(FQ. z^]0a8lذvFuT_ԤI0bp*tǏ54X4h;VիhԨ!~u9:t`׼KAPhl7sȑx-jժE}lQ^=1s.X9J,7oi7 YTH IDATXcɒeŒ% tzK&^011A2eT$ N8 ʣlo۵kϟ?Zex!?8 UTN ])}H2 ?8jD6 t";OsiI,h24i~~vj!9> !ʉur]p#FVM9r Onkƽ{CAum#soؾ}' 0 ` X +VիcAHHj=}Bpd_'lb)S={ADDO^xM \}R~oe2:uꊄ)w {삝>}x2˗Pmw񈊊ƤI?B&F*U*C"ڵvM6]n*>%'ҥ˪WT}kĉhѢ9f͚Hܿn),Lyl?|CDg (1'DEE6mڌ+W@$APh"x9ݻ3gTT>5Ոp76lNj/U!;((ǏDڵa&{}iUž}#..^c{rp}`UgP<syQf Iss3]1 f} 6ŋe۹0?'O+\0Ǝ/Q:tX5=|P8q 7oUӦ sÇ0X,Ɣ)T[?}к\DP,] -Z~]ϟ66Z4b1@}ƍ{{{[QyP.]bɒ6ou!us$҄뷁vٹ.]W`;z{*Z+,,oeʔ{x7&< ?y`@K1g<̙GV;v ӧ?Hpp}yjbe 8 L{e}./$Wr1n 9z4}:r70jHxjGZ3^z޽??Z{G0ojĿm ԩӶrrrh۶-EE?;暑\{5|wv'O&r[ptt$&f110_nѣKϗVZUgϞqqf[a~ǕU_[#$$uo2z=O@m>箻j1*o~"""*cE||V?00tzs3o~ 1U㺔Y۷ى%< ?^"+,S]]5oޜ6u>hd0 %%>iĉ}c)..&"[zUߜ|.;Q ͉#??ȞGFСCUږwhݻWCun;vڵk 6=|G%2'vE7A8v87#ӵkx/;mC*wss㡇|/՞KOOgժՌ9QF7^gbUeQ\\\%i:.'xdN}[h9ټ˕MF:wTf4~Jz5ƍS%4#ÇcΜq[\\<Æ %"";+:ӧO3m|_/ϛo]#_-r杖Iƺu())u6v6Jܹ3ߥo>tܙ_|g?77EJ=ZBC;Ӿ}̙BC;Ҿ};\\\.j~aÆҶm߁jo0 yxڵkWgD…_oA.WѧOofxU]<[K/_Gǎۙ?{4m6fo詩i0`@?ZlY2_3fG _:|Nڼ|]]uU݋ٳgp!֬Y[`^|:t@s=ppp૯'K9w|-O=$#Gc*Zm.;Q>'// >婧Fӱc&Mȸq3s5w|nf&N@uL}ͼy󉉉᫯qSP<>|~ͷ2FAx<3|:ܬ!;;֭[ۚW~\eq‹K[l7_El 9٬7GJrEi֬KPeCHNNf^yu^}ena,#F\úu:O$77o@@u3k /z:/eV7y8t(;wSO=g- 뮉z/[7x[q*FEnoYoʕ%%%%}<̘.&~xOU)_~|^|\]]c֬U.Qܹ֭+K3͗_~Naa!QQx_x챇iٲ%III/?ޅSg_`ΜYv{%;;^zG}{aFXf]M<gÝ}3qj앯E>UV+Ouvv6OgKoذlޞ}/yKt2>h^=߉n{~?ϗx~Q/_qdɏ83u<+V>b׿N{ᦛndڴa˖mxUUSO=]eIps喛>%DEfT_ڵ8s&;vTo[.cWeG7.~!|uL&'NԸRRRk?,ZCaɒѣw5Gioܹٻ7(geL4s7ߜl#rBu)Ϯͫ|+{qٴҴ}DD=u999uF}Z\)0 LF`̘0?Cw^|tvBDDӓ݀bRͽ(4m-7Mo{r̫<}>?@%j:+r5{̳||zu\wݟ8q+VDվe䦛n *j9#GU ó>͖-[dHtV  9~8ӧ?\m3(+oG}w}___YSfCC-Y-[#((֬YkQDDDMgEDDDDD.5J4EDDDDD^)zDSDDDDDDMWJ4EDDDDD^)zDSDDDDDDMWJ4EDDDDD^)zDSDDDDDDMWJ4EDDDDD^)zDSDDDDDDMWJ4EDDDDD^)zDSDDDDDDMWJ4EDDDDD^)zDSDDDDDDMWJ4EDDDDD^)zDSDDDDDDMWJ4EDDDDD^)zDSDDDDDDMWJ4EDDDDD^)zDSDDDDDDꕱ+ɄdkDDD͛aHYXJ0RXXԙMiF#n8886t("""" ; '''"s(..nDjҨL&doo/L&SC"R+%hF<==PY2vxzz`4a4nJ4rwwCIHevOihJT:菚ˊTQMhQS)~8EDDDjKҘ)єFCiI3%(^'SDDDDG1pUH] @!! П\]]%>>7sرKHӠx)є&ޞnK}+{ntލ7RDDDDʢDS$l6j9{6f͚ѝÇ2`@?wiӦ5cǎaΜ[)O\\<7nwؒCO?-ʌF#ΡCl۶ڵ+++,,$>>/+Wչ/mCxgXn}}*"vKlK2gg`XHOO'*j%~1fW4y$s۱c'-fѢXf-ZGK G3gw?pz)3< &M=X,s̙z)_DDXGЩS/OFFN4Y`ժ58q?~իվ!55TcU5 899qaP\\\OWdZٰa%9[*""ϿwcYvwq{G%"Jնm[k|]tnFIvmm#G^KlקOoBBY+2dAAA'v: >|fbiiiixx@Ϟ=3iil߾cǎЩS}f׮hzERR2t (m~ 0'L>}nFvv11سg/V(mN5hڶm=IIlܸtzi`]lڴ'kW4{͠Abp 6RPP`_s h8V^SzURRڵ2d0-[wԩҥUg^f'[VMٳ4kɲe?ǃ>SO=Appy78|#;r6sl^^^<}9;H-tFS,WWێ|ʞwuu17z /f͚1prss;w>[leٳgҬgeԶ̲eqdmZnEaa!Vfܸyg`dff0vk¿˧S0WmoK/Hٳg/foqvvb왌'ϰmB޺}҇b޼򜗗au.O)MirspYf3{)QGJ^^ƺpwwgddd$$`LZkp[b;;;V0PYr[>HvCtn233quuo>lٲl~NVVi/+ jRTTd+|Fǟ4i"mڴmGFF&[nJU vYéSiժ>>,Z5&MёŋbΜ҃O?Ç?[,HPP}au :kבIIIСXNLe+û^)[@fرL|77ŋёٳgO~ח֭[{jr5#{'s}֩ eƌxyy1ci۶-зFQS)MV||<ݻw#";QQ+ؾ}mN:M||:tC d~'V+^^0\uHGGG222m 4Jm``K[VɄ/yyy$J`:T/II.7ٳg%99Ϸ닯oo6K.k׮v_TX.8Mee˖s=w3lؐ_.+k¸qhNPО=6N:Enn.gKF-**bҤ{mvT$4#+V,UGΌҮ][>}|!-~iyq:'(є&ktލÇrȑjiӦ Æ T?Æ ~svS=GHH0-֛ٽ{6m{!{8p V|fl\uC- 7o!..sDž_ƅԯ1nNN>W_-߿Ct ?{*,w-uYfٲ>>F7aLrFrslԦ͛[f-3U|=wo ˖-gÆtkvgϞ%==*IffY,b9w.vsww¿gΤQ,''gV+)))Qa]mQv_!iuqqYf^p""rf]w%e=M&vEkW4t%M~h4ydًw5(=YvuԨLo_쩘EJJ @@Pڊ/>a9 wa׮hrss޽/33xxڶmk;9}#J2岤3Ҥ1`@?Fi񔗓+SNaΩLRS2d06mDddO9j{Mb)#'iӦ5["'l 7ȑ޽ɑЎe% ӧ.zc6ðaC1 gXj5ic\Gnn. pgȐ$&&SNğt-6l]Ү][m3-:W%9޷o?ݺueԨ#--M@iĖ.]Ƅ wҪUw5Yf駟3`@&LЎ3x l۶-SNN2w7`$ == |qcȐTT6%%%̙3'|i_ؒCb9}4˖wN׮,X0 菛^3o=Ll깼e|*7߾t[@@}DJRbKrpvv<ķʕ E ?:uDLLL?A@@= nC||<6lI`0н{7:wDvv6'Nۛ}cX8y$;vWHBCCIMMcUugffҭ[W"#{Kaa՘zĉ5LLLjҳgOzys6omN֭ٵe`+Cb9wYYYޅ^"iӦ5fÆMm?z4}ݻW]ՙB/_AVoexzz2`@\\\HHH{n$%%sL fckB޽h߾ɬXlJG$4 @5d5w""r~...u`0.7ߑj%+Æ !,,\ʉ'ؾ}tr[~~~ZS܃ N:^/""4o޼]IiItn@1`,,?m-7Mo{jOT뒔[>rE?D5QGS999ތCDDDD䲧3H5""""/IDS%¯)"""r%%i̔hJT6TO1S).?#"""R3_L4J5_RDDDJe6)єFM4Z9He_'4^J4*..&+J6EDDDX:GqqqC"R#%Ҩf"""r3TYi Hm?<...<Xl"""t_Z'KA42_ liӚW_}'|S7dx"""YeҸ(RSHMM05PD"""""McҫW/֭[ǛoŹs:t9s ?h4RPPȵ׎b֬|墋ё~#F`4YjoҾwu'z3͚58Νƍ<4<==?~%zݻ[oͦMm G[nz>#[=VO"""""i0 ߯_:'ѪU+O&u[v)SRPP9e+cذdee1id.]8p>8^{#f„lOr/&; &vZy-c{W1idxiw2o:-f̘Xv-2NNNx{{G'ѝwyN$""""Rh-00+~رwУG;wf̘< ?O.]µ^…_3%#Gkك^"3g.Ό<oرܹ3lٲĜ9'#c;11HKKc-|Bst>^ H?atN^^s!==i01~8<<<:zdqDFJΖ{/7ru?~[P7GG:uĬY3lԧo&O>F;޽1$''3p`\]زe {`q_'N0h@V+6lJwݻw`ȑ[\cLǏct=/DaZk,]vѝBBB3g.DDDEq5| NC0kLڷoLJ --茦\V>sweVfjIJeO9̗_./dxxZvΝ cѢ̟ I:,?hĉɓ'X,;͹sYxzzr\vet܉-[]7qM7rZ" !ᘭhmegpыnL&z fVҧO<==8{6-[  l#yűп?~[n8\\\lslgpp:w$&&CQLՋ-[RP{귢IYYvff̦\1h㒒۴Z̓ (b44Oaamb`0שښ劈\ с\7C ?V+ ϏL?APPݺuTrssquu >>sqppO''g'8 h5IIIu}v̩S ,, /fDE:t>>).6K^JlʕJH9%%% }- 1СCKQH]Mbb"n;WWW<<<˫111< ##|6ob룹yF7ndrp3$$uJ4޽;6m&% =-oAqq1>>+QQ+IOLJk+dfd֬k׎wy a\RJ4EIOO'< x{{܆pCJJ DFՕX,%8;;-uvv&77Tȥ@vvfJG~=v:g;EFF&j/Bvv6! <WWWJG[7)&gL&Pz<<xҟ-` u*3.."""r)FBBBpsse۶mXС={&00-I-?NAPP $$$if[JkyQXXdΎd3dffrlnnn4oޜ4|||pumg3g;vSu加DSDDDDl, ;N- 2''(vԨ֬6((="psseˀ eu) &77ac0:t6l &f='N ==47oW'== //o[ژ(ɔ+)""""6V!>>ww7ڷo߿l6//;vOi̋c`6Ӿ}{JJJؿ@#)4n ֭Ǜfͼedggؒf<9~8˖l}ڵ8Q:;;v '˔єdʕ[ץ}z7pT"""){dtø$|||2d0;voנbϙ3g..ϠȕJMgE@L>5'@V74t"""D)є+R۶m۷o>o߁j^" Յ nF\\KTڵ+=zDNvv6oPh꫇ӡC9z(V$)2']LZZ:[nرc\nnnL< #fĈ1cݻѳg\\\HJJfŊ_8w\: o߾x{{޽{ٽ{V&MȒ%?I>$$$r* @]پ}Looo D@@K 9z4͛DHǎ0L9ʕHOO}'f<6ΞbOܹ}eΝӛ$, ɑAѮ][F#O'aRSӀ&c <''goG>|-[ǚ5k9vxu޹s' ć~dĭ̙`6봍5}η}ӿ:wCU5&;wg{|/ gXk#GСX i׮;v %%u֑Ldd$N_~DDtg5l߾#GLVViӆ;wTy\l&&&={if~y9E#k֬%66PZ nݚcDzk.֯/MƆ 'O&b2h`۷9qQQ+da>P:uāZk׎ړxkqi+ 3puueذ!lذgԃHSFnĜHN>=(}iNm7є+N޽8|0۶)NKK\{lݺVGQ IDAT\d"??[ 5>bbbqa KRSXrgΤHVغuҥHHH #c'-Zk׮?~jG^^-77sKh;{eVfvvvXVzEtt4vEG&6ѯ__6ob+g}dۖ9rgE>}]:/D矗s]%55OOOIJJ`5 '/t*$~vvXVAAAdO9{,+Vݻw5!5lݺ L^I͵ܵk={ˋ z?Դu T޾ά\#G-lVc|7nmo] l矗ރ  V̒%KiӦm]lذB|qqqqpv{}h׏Cb+;u4=͛Xz0 @+CRRr'))t֕I&rq9z4kʒ2元nS!0mgoKAA-,шl&((@tR!FvɱMPX[҆~~~`)zzzJtnƎÄ wrIN8~Q Daaa:#77J>}-*,g6mCe5˶bԴu T޾ʼa08}:'kM47K<~~$%%UHsrr8z[&77gҢ-,K0vX,jFȥDS(kuP_t̘i܇}s!Ӹ*,Q}7[ϾuV"2'g⯫|> .6Ӽ-lڴdGGNj*7..kW_vfԩS̛7`9r$|wjjmG'5mc(}ͮjbʬi'NKǎ8}4>>>,Y """.o"WZlYa^˖X,%LHH0QQغuG!77p\]]رlذ?_;vSܙιsl7w/_$RgΜN}(55 ee1Hll,+Wo#0%~~߶'WWW<==+oٲE7ldrh_ـEej dffbXhժUAAA=u̙+$nnntR#S2...4k֬jrAڷoO9u* G"""r)є˒d׷­R۶ 44^JGCm߾=Æ e ((( //Ν;Ѽ\u}8991j(|}}iݺ5l>.rMExx8NNοlf׮hFhhG|||7H``iPXX#~~~ *C@@^u\`۶턇0$$nC׮]\Fe}GUL wj %@N]owݢ[uĮXAC J %! -^gGd$ 1̝{=sM3sf?L4`BCC:u ƍ曘6m*!!!3h@jkk).vG9O̙lMBDDLp ^qZÙ3XVnemҞn̥ёGpAGӫW/5j$~~~u>ij~\\\}yyѷJLL47L̙3їu"""r4tV:nݺѭ[7u` dee_2|pNee|mr d„ ̛w$&n%%%\c2wJuL:1`0p7\֣IQUUȑ#򢬬M6f";;sg+|>}L:l㉉7t(, [Ԑj7*//?$>>Yf`0:G \j5cǎa[quuܹs\mh핲Z|駌3iӦDvv~ܒrj ;wOf֭vt[αGm޼:ni...&%%_V=-S^^qp睳0l79`III}.<đ!%%%%<ͻ m l'>~43|0:uy II~U -kMƌd2DJNʙ8&~A3?g</...wB.\D.]x6>Ě5k:u]zHHH®_ի/xv/~^3fIjj*={:up%!M<$***cÆLt{?={K9snnn '99,222x%<.h`ժt&>~4^3?IEw%33M6t鿹Y^MK_f;wxyy}Em(""""rhJŨQ#Yvm_M~}ҥ]v<+ylR/~ݻcXZ377mvt&NHiiIg=guO~#0Ls傂BYDDDDoggg{`00e$-{VWgGʼλlܸxc{ywyŗZ>g&Mdժ&555,]2olww՜"""""Қԣ)ɓؿ?wu72o=lݚdlll'O:Td2K^^>~_~ӟy:֭ rm2`@,e>>TVV鉫m]DDC\%ҡ7+&==ꫯѥKĉX1>h%UUUqssO?czɀL4t⭫cժ<:JFFF^}9f`DEE2fL<_={m7`X/~Ftto&N:hJ2iHJJjC:u)S֭X&AA,_?S\ T2}t ]tW@nnO?1g|E۶m'?nFxu~_~?;|<~_۟^{n /EDDDD7h9R 5~~eSeqqC;vFX,XVX} o6|w*#""r50Ljb6m&77`7 \]:w̞=):̻4Z6X/l:k3/_#eɀDDDDaFgFS˅C'''X:<\9}!"""r2LtII2^"mM=rݺ;ZH{0v3\]]RϦHR5ŹCDږMkdph4iHR)"""rQ:Ԏ"mG5F RP;%""""='uEڎMiUJ4b9,Y1Ǎ˨Q#)ӟ|qFz\^ye+Vo{".t8RQQ+B~~~{#""nL&w=w{СC rPFMwϧk׮wL>}x)ٔS{ ҚxXo{ 7'''Qxxx}v֭[9q$ccZIHH4h&cزe+sA7iii]z:###Ν)**fЩS' s!wƨQpsscqwwg4)**&55g۷/TVVr)OMM2tP¨d}P|ygsճ) %r]lXlVcӛGDNuu PߋɡIlfP- NNǏ:7n,~V1c DDD0p@, R^^ǏgggLDNnPYYI݈f#éx{{{rz>Dɦ\h4`X0.ZQQQS9p nE"""صkN˓n )..s)RSӹ7TVVmv=۶mDb6\]]z0{AxxC``РA$%mܹFNJpp!!XYn=3yoVRXXĒ%?ॗEdd$?g,iSJ4E'6?999ѽ{7JСC1sQZZʐ!7u1-zK(//.UH[=@ii8;;\?kf zbرSPPȩS/9_@]R{0v<<;;ecjWukCu~XDDDڂ=zӃd,+zE1l0Á Ijy ""qvv&##mTTTP]]+KUU5I@@yyyqufGs庠DSDDDDlf3}Epp0,++g8g{*xŸw8"""ҁ(є[XVJKKlpԀ<C!7;wG+5* +::,jjjU|4NDDDZM鐜ɺu멮oݝ [ȨQ7gg>Lqq]=iٙC;ؑLzzEcܸ1QWWlݚ`efԨtgggΜ9͖- s-߿O>8;w"!!!Cn`Xgǎd233m bܸS^^ڵ>>TTARRRM`` )X&USSMZZ:۶m۷/Cۋlv}ɘϷEqq1u]رcܹ\֬RۛE駟1lP())aӦ͜8qv\gggr#ӣG}&q.\x>>PTTobÃB9v,ͶEsvBXX>Mqs>FNPP%%$'pGS+g/b덍BC0?=<ܿS=QQDEEn4hvM7HLL47nfΝtܙb6ٻwe?f"ٴi3));qrrbܸRSSӤ;EAA!֭'##{s!F#s`u6~#80}ԩӘfyW9q$#G770rrr(..Ãyٳ[SN1z( //IlǏ'::>}p!V+ũSټy gΜ!//CPPP@~~M7#!!'끁?[ne߾ocԨ>|7Bbb";bqssc8r(k֬S7rpwwg޼;˺u8~<ЫW/<@޽4i"v&!!JƌS'Wv쵌k.;ƍM0 `uڵ={ңGRS+qqe$''CٻwHL&ǎ+ IDAT/h#G)(( 22W^yPWWǨQ#c֭PWW7D^^>{IJJɳZ>)$$[HHH[nO~~i:\***0 i*֩S'rrμ Xk3|pfs~M鐢Ȥ4bbblɡ e ?D>ipuu;2d!!6);Zj/F#{b;={2k ܨr{l<8UV@A.0`YY'Ouuk|mKk9?[n l祧ѣmMYY9YY'Z|L&6mٳXk!c۶r ˿=B %,,#G᎓ǎQZZJii)pXKXvܿj {72xpٹsyyxzz0zK^RRʡC{=z)(O87;|KJFvv6[nO8sLbL\\7oȑsfذv=r9o߾}8qVgxx8&=CeZ"""~hJJXkۺ#Gп?|||(**ę3v!k/N~t?]]]l=AAAdg 1ɱ%"lQIIICll,RR .u};Ey999DEE:\,"""Gt8zd21u&O `N;8?(a'ij[ &??s^|K1o\9zXK;<|h0 yK=p'N޽{q/7߶+ǾX,70#Fp222ؽaÆ_Dnٳ?^[[}'jTҥӕ`[>&Fc/NZ*uDS:dggnG%ftBaaLDDmّ2ѣGwV,R<{}%VtޝT""bŊgvu4N ۋs.EDz ٳ~\26www|||qL;OMSWWG~~E5Lrl=F`}a޽$&&%...ٳHNNaڴ ͥgϞv=:u"$$'{%/|NǾd?*((0Pr/kry!!!:u5,,<˴tEDD9ҡxzzΝϷ{%''CHH05558pՋF.G4VUUEEE}! Pnu%H߿?...L< """6m*l6SXXh`ҳgƌcWGyy9nnnFmm-wo":7; <<ӓ[nO`` t8G]4-<<ӧKffVCdrcڵ AAAL<WWW/=z?ߌm Νo01|OOO&MHpp0L:qؽ{7{fСӧOqurĩS СCڵeDzw^ݻ>8bccINNiZ>ߏ:t({bi:`DEE]V"""ݩGS:޽{S[[KVVfm99g)**&&&l޼:ni...&%%qLCV?^Ʉ 7.IL܆œr>࿌7;\g{ ZxFsgILL[ȑ̚5#GnzQUUȑ#򢬬M6 QTTʕ+;v,w52֭ԩS.ۅǛ825ҪHLL[nӓs|J֭g„[5q) 33öS5 :1cPUUÇٶm>C5k|Jy;_eذ1֯ٳ>GtqX) 2Çqs Vbb555ǏÃB+.ht}۴i3C%$$Rz-Ǐg8\l2po{YEDD1}Qk?`]s7i(li=.n辖(b`Z hP &ɮh4dɣz̙3(..f -gdBH`0`4jժsٓ2ͼIeke|nvh(jKQuח9sfc23pvvS[[d+Gxxlڴ"kMTaa!6l3jH裏O> 6l`{\4tV*:+"""8 ]Cg)""""""J*%""""""ҪhHR)""""""J*%""""""ҪhHrjD_!R)W%ADDD䪗!4KCgEDDDDDU)VDSDDDDDDZMiUJ4EDDDDDU)VDSDDDDDDZMiUJ4EDDDDDU)VDSDDDDDDZMp^x<:uִ1&[l$%e{O<ޡ]Ҝ9OmPDDDD+N\^{m9o[WXX>;f3Z;:z(6m{;(;wGwe}ݻh\Ǝ[o 1q }  JJvM>ׯŵ`|Jlkѣѣ;ؼy#V}O~#l?Νs-[6W_r=Ks2jHvH~u+prrbʏ0&ODJvFjp`/ĭY|֎87[x7?fڢ}DDDD7J43bp?qF~2gz [GŶ x饗X~=={[Ԑ/K}j%>~4?SRn}&+Vɳ&1,\_\x䑇瞻yp,^0  yf/1XXe xON\ v.Zt?6ld,_O<8^q&%m>?&ѣG1~WG]]w!%%ɓsVLJRRv2kl~3o\&Ml }ϪU_ɗ>"""" ΢E 뵼cZ~*̟Y5ǎg_'ii׿bFII)[&PUUʕv:ʚر4qr|饥$%m͍~ nM 3Mw}s&O7-_׼DGȑ_|%k׮>`̙ :ov{晧y晧}p^6cƌY(**"??L~~>@+6l ''n}rsskr] eѢٴi앴\DS;1^m?c={qrr"**J:u{lٲ˖-%22E%Kk׮c;ӏIJƮ]ظB"\ l3ٶݻѩS'/v'Я__֯ڶPp[v9 57PVVm_,[gϲbś5bMO?ƍXevHf=lذD|5{e֬F5 h` `phHff,Ymu :C`,yE";;lۭ-oڴ[q (""o''55KZV~ȑ3&%K?Y/""""M9rAڭ4huuuIUUU2&BttoRygbΜ;:um[``]ve۶b޼1LpEc8pc_4, !;; mG #''ǶݻQ[[{e 栐~&//G}n>iX߿r}t ̚5Iً]Ar1inhJI޽^AAAL< #**o1ǔPYY{ n!**{o~kl8$$$~ 11̘qKt֍YfCzzz13$A UTT;3ĉdg|_/}eX=4((IC^_kn6o³>]waȐlIqwwkXWwҭ[7ƌg5)FFF2^'F;vc?^{%-ZȢE }gwr]s͜98|o2o=oӯ__zM~gYjwu׮[O>Nqq W嗗5[/~lܸ447-9R 5~~eSeqqC&Włj%00"""ҼСF_4*3I< ҹsgIfޭѲ2 >7|`; YYxb)ht>=1_;X;r(:ޑtxCDDD#ad^J@6 ޑtxJ4EDDDu>=1 ;DrLmӳ#Дh\ *ɼS}HQ)"""r- W"Њ!%""""0Cبᚥi;J4EDDDe~Km'fh\+i3J4EDDDeʩDڌS{ /~7Nr֯@ii){ݶdffif*++m ?EE 8n1?s2222e2ѽYekleMJ^Qٺu+'OjR_cYVJKؽ{7{$yd1ΝWڭy唔gYN4@yy9{e]vu^*ŋO>s2{$%mc- ""rze8G{DS:s2vL'pwwg7Zc?""񡨨s!nF***ر#:ڵ+ǎՋŕĞ={0MחoזSUU23/L~+8Qpbb$xV///zرKՅzb$yY|* vۭԩS4<==1vkd' ϒ_׮dx^rϯ-O0ٔVY5ř>}K~dS;:+bLEE[l%,,777%%ݻcbb8~8Ǐ'&&:-R[[blZ$''#GҧOL3qY3SSSÞ={)++Kfj~g'ODF^xttt4{쥺ul߾crvߟD"#{$Zjjj̙3ڕi)N:1crY1n$~,&8s<&H%oow{Grj+3 YzOfQ/ B;YzaVrMO6,//"##y?`HYJ)++kd6uBݻ䜥o,G???`ۯT᳕QQQy$2mI&zAq+سg/]t6a& R( {7ճo7v qvvLJ8GMM-9?s }ɓ1 ""moq*'wy>X(N?>Xq^x/UVN߉?cŢ &txhu/99AJLL~Zw0&&Ljjj>|LϞ=9zԾ粬lݯcǎa2md25ygzq:wl{n,Y(K<ʼywQSSCyA IDATBBDZmvFp "", bEVlo95f+~tE;XoL[UՋِ/XߛSOCis#ZXn`]?_65Zvj7t_qqcg$+łj%0P7ʋ8pGk͢JKϭP<],ZKZĺcb9؃g[jf?rʿ g'̪ӏxw9X]ď'0g,kfdg ULw'%#\0ȅa{vhƬ̺vfff<VnnվԖ׹sgIfޭѲ2 >7|`; YYxb)ݣ)""""ͪrO:1+ٵt` ݙ:blA o$WVޝx||g"|Mɮ%Co'w#Kl/Ε-`J݌,7'GcWV5]/\zuOLfY|MN'-1䖚 wW3kTRʫ̈ o$ɞrWl2pSt',Vê"ΖLT3+=YMa䱢ZΖ9]XBf^yu[(ɔ띆UECgEDD.Cgym5tvŊCzz:= [ hz:HVV]]Mjjj&"W3ݣ)""""zhq{ Үԣ)"""r-^yHQ)"""r-k]j;6DSDDDZVp#vDڌMkLR{pRۉ%""""ײ;Q\{ַ %""""8rXm&"mFȵ8?+t\VE;MHGu3F{)yHCfEڜS{ """"8քСF_4ޑ&G'Q)Q)"""d`UR%"HtHFnL>}Ll.2d0mpp0Ç#44'''ٶm9 1o]ddd駟C=ĉ10L&y޽tc,ygggVx& 8nGVV+W~ Fݛ={3gΠk]Q~mְjWW#Ø1c16qq8;;k˩nL8gggrUz f[dehc4wݯUMp wq;޽\<8ݻ{ 2lP^yVbrssIK;NMMMGz4N8Ɇ Z-ݛ9s_ޤ|LL4_aݺueSD4%ro[,X0K6c޼6.\@QQ1ׂ*bcgQTTo+ .%|󩪪f9RWWgXVPPHxx8'JWWW<<<(,,D03N[[555F! .(b`9rwMBqs$wcpE :#G7>'|f[SRRpssӃ2'N|}bu^x nH@@t j5vv}n?::DGG2 +++9|Q=#F0mT\\\P\xS>ӨT\Stc5@bʔX[;`IDDښ:NLА 1x{Fnn'NZv6n|3gCPP >}3gyy89u^?ٳ46^?b( 4 $''~hZimmnꮿk:,7o.FBPˑ#Gh:^k}3sݝE#d88?ѣ 9믮 !1SAfv$Fio^W={}/w/M679gǒznTW\ +++"#'piӦCcc#AA,\cILL sR6yyhZ|||ٴXj% ͥKٴȑ#QTQZZs#- I=t: nedffɥKNII)YZ{{<ą fdff\]ñٳuttASUl7n,'OꈈGee(L4K\ ꂻSDsR+99 .ܹ ١TZ솅i|9zQPP@ii̙392={3'O}m qyaQTTG$jk>}VVJJJJα5k֬(_nW}wrr"11SNӉѣHK8dTVVrlllx!.."""5jDFFǙ3gILLxegP__Opp06υ h43jHJKˈO++%<#;L~~>^kҲ>`BBFQ]]MBBL<]{ tܮ(ѣپ ϢhXjZ={pbcƌݍ`͹|ruU;Z 3| CaذaTV}oiˍiw+a[H[[+h4.\HNNmmJjj*???|}}:xL0rgnnɓtttVPQQJ29sI&gЊ ܹshԄBa8aÆjJjk8xL7dC=dHgh=?'1+W8t(Pqww7,rrr8{3]ZZZP;ZmO6?`H_cz5ZRSSG|}}ԛz3ӝFEVWˎ; `B@SU:h ^nVNNGq#QZZkP<<??&O̙3ض^_ڗdcY\]]7o /Q]T*5۶mNVWW3qbQwiCUV}ﮤL"":UU~.ZK ŋ1oƃTVV@`` ~~,Xvi>PЀ=3g$>>ްluq06ot?yyy'ZxTl ) Z;"==\eݺ9?Fݞs&'ōrbƍhs`lm ,d-ħňQ@/UU3@FJ%K. s猃暚j VrssyAA!DG4Saeֆ%$$V0}boc;QVVVyfddرcikk5ܯf ...XXXGرc'>xxT~55E;7#F޷g^τ ݨ.$h488{Ⱦ555888-ooo;oo/'''^S7̵WRwn^ìP(FRsyGBB zL!H):Νu5ƍCqdgΖjk눎̙3(qƲzJqvvfܸq f}T謭ƚ2+X^pwwg88s9󱱱L /KKKJK˨dٲeNl,,kk>С8Xb9!!!0uVXNNe'}ikkch4{{{,--Xr9gꊷ7!}9kkkɱ]\\\ذaFiBtwNǗ_fҤTTf IMM5o~,+ihhѣx̌ٳcÇ{+!.0w&&&%K‚J>[ƆQ:Zhٖ-[fɽރ55|>м?)S0gl,--hllĉ]nn.yl4?gԩ̝;sssjkkٳguwkM@@@Ѽ=`}̚òeK]nwqE>BQQ{aԩL:5ϟ7 uQTԩS}nT<<sYz%fffcǮd`J_Ú5obu-߈^VTTDEE߿;wIݹEmm'0}4&Nȇ~_d֬h֭[ @qq1 ŋ 0ČGt722ܕ+WG;}\PE!WSSYŝёQ'ݧݦnƏG=&@jB!B@S!B!II)B!¤$B!BaRh !B!0) 4B!BB!B!LJM!B!&%B!B@S!B!II)B!¤,B~ B!Ih;PA!WSS;EOuV!B!II)B!¤$B!BaRh !B!0) 4B!BB!B!LJM!B!&%B!B@S!B!II)B!¤$B!BaRh^GFPP!~ +ā8~j>r;;;^zEϱc?ȑfffl0_}&fΜaǚ5ٵk'N$kfώ<Bѫ϶󟿀ii)K/R 2ro&G;+v`,Ztii)L> oooR6VZZ 117U~W^'w{Pf {8co4端dݺAAA߉?ʁxqp7,^} ~Nqb<cǎAvֲhy_,Zvx7ǟ׿-'Ng? }1ΜI'--Ep/s̯̙`ٲã>FCC#=\]]ywPT<Ӽ+5^_yqwwW6n ܿ&t:-ux)jkkyw2C#<:c BC ]g]ޞۈR#}ٳg/PXXի0a<bҤDFN`ժ5޻V5?/Lbbҷy|ѣYv ))'*Ikח:Gssseh4uXX(߿uzmO xB!~($w 3o^gB_+V`Ĉ gȑJmm!U5<@H( 57fSUUzB>|8;w(ӧ 4CCC9!ȑj{^ϼys;v .ݻv׹={07e!B$ 4]ܹFףRA'/wDqq17vi6nWi4я5lذg}BEō2(+++]d5b IDATd$7HK;Ş=ҥK]̌V?n]G}@mm-d4 땤%zB!MqW&//|d,][7ŋ_t 777|}} Xn-nֆ1|pNH֣P(X`~ez}V2lhg`<.__f׮/IKK(Mul&͟˘ǓO>͓O>c@(++f歆tyYV^_͕ϗ3Yba>1cF駟?޽x_7ߠDD33ߌ^; [[|}<[[[? /wy6 x?&˟ y?x78x߯k+++.\O~I !B 3gv|u-z5mcڢȨsWG' :^ۍ !=?$zVkxmjjj133us8::6>]i}ir1tL6 h !B|) JK . ,,,鴴wp!ĭ>B!6lPt/ss9^Bnh !B|) KVVVTL0!B!r&OKM!Bsss.{ sB+m$B!H!QGM!B LCB!3LӐ(#B!B@Suu<3~'یŌӁ!ӟ96]!۴]>\\(B &,:Plڴ.B1dYA֯.QQYA&Ot8U[}Ȓ%YAn2Ғpz 6P@Szpuuw7}h?Jg`kkGJJ Ν`ILLhz=IIǁ&L\˹$$$q2_ ;rss9t(^<8q--iӿiiiMGN!8OOOϟGKK ;wܑ~x792~YjkkXB|gESU>Sϒr7|o>cFc̘lٲ-[0sLoѣ cm|G8::2kV̀5bo?__F5<7ߒ S!ihhg%77~M܆XB|gES  @MM-%%%hZtGGG^7ѣIIItǏ'rr>r_pvۡp򬫫ܛo!;+++֬YFA\aNWHI9ICCÆ #2r>(JT*5yyyddd3f9y$yS(46^!++A300ѣG@KK \pogETT>>>p9( 6Z6~Mi?hFc^ o狟/mm@}/0j17W (uB!n%3Qtthpqq!6vw^'&&(**Ϗǣ騮ARakk @~~>MMW{a0k*++iii!00hۏRQQ1ԩS蠬 pvv".ٳcquuC@Ru>DMC%t:ͯ]֨jJK˸x1K.l{#O!b NN{{;>lmmqppʕ+8;;pJJJʺ pD'R0XY)Z0PiffƄ HN>Auu ŋ酗'WW7@O\aquueѢ{LLg)o_ٰѡ.BtSWWǸqcŅ23dڴTWWsU&O-qqjuX[[ZKQTB!nj^mKKK,-;G~-,,fԨ̚5+7PZZv4-W^=YbٹsU|@e |tXOhZ:777cgg7Bnh MJJ /7R\\¥KنeYX[[j J%=z <-[^ȑq#|GB!nϿ}g,55r| ?ɓ}E`iiAiieeejQk_>ңpUzC{ěovf " qI): }͆馦lݺ߼O>gzͯw3߻w$&& (ϼ<-Bq;XXX-tzFɔ)S)ҒO;:))Pմaee36hlnnnꊭٚd?zF-~$B!Zѣðӓz Y677.\8LCZ??_&Non) DRu Vgǒą Om^W]=-z:wʕNt:z=@c!?666C]FF^^Baa!ߋ}XYYŶm=L6KsYg{mƆkWRپ};{ח3wʔ(rsÏIKKc֬hs( rs/{hjŋ&rs/ckkڵkhkk/vg^\\\Xr ŵ#imme۶den]V(\{{{kvTy̘1ɓ'֭۹|2K@@@66֬^r>ky]]U #+R_mmm _eV̛7װzukaa=6gΜID8g4773eJayױ믿ah:.] @BB"))'&NLN>$>#XZ= {!##-[ܹsͫ 'O䫯>UV{ 3wΟ͛9~SN!44Đӓ{;iiia5{(OΤIOd˖|2`mm͊QRR‡~޽@hhhe@GJ{m 9キ /ӦMĉl9,YpYt).]b-$%gڴiL>r-Ysssn֭prr"&&L5BaNvvuo?5zt8gϞ>ի\///o?ߏ#|B|$wP @ӑKXص@T2fh|2u$'zPir6oJ~~>-Sfffxyy'OVPRRBEE% ƙ3gP*8;;]ġCqQ^^ݐoff999T*Ξ=G}}MnJZBVRhAGGRkݍzS[[khnpسg/eTUUo~oRIRR9riKSqaXj%u,CΟ?O}}TUUtDg^JJJC;NҒ#9xyyy7pirs󈈈:,\^Jii)|ᠺz^kjõݡCˣÇT*+SDΙ37Gr """}܅%7P__ώ; ?V0 ~ 󫠠 ZZZ8{NDRQSSC~~aBy문XYY 󲳳;v NNN466d>]II)NJoo/|}}qvv s/6/:%0fXXt]xyySOt}tttW&-(}<<ܩ@Tj0t&WWWUF4uKވ37zoeeŚ5qsseYf͊!((|(++uڌQ[07W`aan8׫3] ?P+hhh-,--%89uzFNNN :^5wC׵r0OFK]]Ѽjmގq₳stT*Α^'++˰҂˗v5WWWߗ;K!#]g]',, >3>l3}O?ЀV5 ^ѥ{wƁښ@pd*/_FR9USS#MMMW{{;..~XwW j{[oo/'''C@akka%^7]::4.]BBB赵g^τ )##۝v31|?Je?}illDe41Ξ;v~^`$K}}uss-t^^F뺗/>>KTVVՑjlmmqtt4ZoЀFrpGJ///IMMcǎ1ncnTUUKKKyN ިTjΝ;޽HHH"2r!Mcc#eeȑ#=7k/!w> 4]___N:C]]+55'''z277gݺDGϼ<Btw:::(**쵬+QYYE||̉ETu4Qe;^ΝX`<#\'pu?8*?hV^EEرk@]۷ zJ9z(>>VR}ưfjǛ ,:/͜9seh:RRRnǏ'Nt lllg߾}FT<< x2:ӵ͸#vwX<̛7Ғ˜>}q:[jkػwL6*?ҥK y+Ғɓ'=ǔ]OfQSS͎ CyN`|V^Ikk+.\yz=w&&&%Kܜ > 5'hmmc|cǎ,--eDEM&&&V.]ĉ먩$$$2oIY!B!&%B!B@S!B!II)B!¤$B!BaRh !B!0) 4B!BB!B!LJM!B!&%B!BMP@!B!ᮋa@S,,,xHJg׮iv]_}%֭wC'--JNNd˖Ϙ7o!7ii)|=eccmH޽_s!Q*-y9ru#...׿bϞHJg-<Ѓ(pիW^m݆B!)Y u05B>t3999xyy?bl8MMWMիWcx2y=W\g~;&餥B) Y"S}" W(CT^ "" ݲ(KB".&ۛ&m~?'ɽ{r9\ O=|Fs+*hڴ)&O?SNmg|s:\갶l߾/ƍ̖ w-EAA-x1b8:tɓB8MDDDDĠIЪU+ < .]2l߹X > ,VZFJJ3gЩ׿)>X!CII ]KMMšC>7ޘ J#Ǡp!ݻ?{*]DDDDՙOvsz 6LPT5k6\b3cmؿj!"## {M6⩧Ć ">~?f1BCC3gNǛoNCzp2n ðd">͛ VZشi#F%%%E1sSiKLg~}}V̙Yop`ӦHH8aÆuHH83jժ3Ν۰kN̝;ML …_`߾=ؾ}+fΜڵ Œӑpe{cz/bӦ? = 6mڈO?{mfK =A0t`ǚ5?LuL{‚a~sǎ9'L۷ۥhڴda w}~>f̘bР&߲L:kKǰjJ?cРcbeߏ_~YNHnu=hDxx8?.Сt|ϛ7-[oc̘ƲeKРA1u&MO`X[h4t 4[n/ҥKܹ {Сñp߿?&Mz/4i;vܹLٳ疫G?tCGLLwf\|111"*9Lر(**·.CPP@pp0-[|;3g̛9d72퉊jLfp1C#c=ӧV*|uƎŐ!Ch :[lhzqT*tC_{֘;w7o SNC>9sfޗq]vO?#t6]q-1 [lEPP.]\9 o5ڵżya̝;/_.˜1;Ƥͱc0Bϟǧ~ oor)>Nj% 6@elѮ][s":: 7LÏQPPC#''9991?];8b0ر}=݈VG}e˾۷mzAAA?P(h47 t9r>?!t }1e4(JC?@V}nG:<7o*>l111X'9C=SVZB 7WPRRBo߆L&_-u;wvӧ:v|Oڇb>>>x饁yؾ}ްa(F{v-`|,^Ѱ=,, /8klxzzBH…HO0^6--_}1pU|GkX~=]QQ͑#c͚X'@F%Cl|RC]/3}t($&O=0hRr.X-l/jx -ZDT*C7oBPCrMڵk&uvm'O&BP "N8iT*1zt,@&}4i| ꐢRL@z1 [3֢E4aï&ӧOB&dffbLs-xxxG2l֮]yym7nM|NcM47NH4~d"^|d2PF+"##r deeau&~i͛^#Gȑ#a͵a&hlva&]MNNAо};uo[>ͽ @‰r 8,U#HOOGp@\<aaawϚh5%^{|hqӴ4b6M}`(k*''Ç*]+Fh4߇zP9lyk[!&Ydƍv"*6BTTsmONNAXXC\~IƆՄϝ |>>> -c\Kg0w$ɺu?KwKjj$'9h@5'NĩS1k'X`!T*Xgϗ@jW^5L 󐞞86m ~u̼@~nkV- RTL :tԦ:?ga޼9Ÿuzx}ARaп?|{Xz |}}1axd2l; ++> O9X|V?7ncǎcÆ#$$L\v * k׮ëBSѧOoL>@a~~>]] _/FTT C@^^|s 9_" z* MڐΝ;a„2e?_{Bc $$+0o\dgg!..:u2;>JDDD˕-]9%Rx1dѣ;F,qn F_/^{U|™3g1z2׫Y;vĢE_aǎO$:tӦѣGaů7r变:u26l &JիWCNNكEnօS'#88˗`c9^IƺwLۮĉG))0vxõ5*&%K? 439s:bbŋ/2331lH=cƌF@@\~XU8dmĈa1bɶ3޾Э;qťK9WNƘ1c%9h4>}&~q>=L<o5&sg'a -!>}&}OW_EL&Ñ#G0~D:S#1z(`Xdzlt٣m'o wI6~ȡ &u<Z4 ZɔA"""ShG |[T5j MAZBUᲲ!CM'(xh%a5n6qaAՕF4aidKDDDBh5 ۲[9P>P>A{vLQe.X*nc\On٩DDDD.#'f1dZRB;VuKrN'"""rZsC*iUHZf4fBa >#r-*TB;rlym)䊪MqǠiO盻ؖw'""jAhUžJ"YfUuya_JA8/9 j#¦+ersMkmKdKr+u"""";ƾ#'eɴ 2acmRUl3hgrw(.T~;r2\F{J1s,dkh_2Gܹs9-*;>>\rvJBpp0;wq {Caaa 3f4ʛX@6mOH@zz:[DE5KpNL!22Vk.\Z*UN8S2ub!HH8&ǏLl_˗۷ Zn~ .-ɓ8vI;7nč:ׯ/<3gZmۥ79TE  P4hqM[jUZwHN} (5r>mێ2,H@Ѻu ++^x.-? %%%曥___|?fGfMQ %%%(..ƵkpU1)c޽{T$$$""rm{0l~5kMŋh֬f 5ڒ Y-fu 4` Rxxx*_GV刌͛ʨP4\xQ20SԮom`?C]Y{ \.Í7̶-%3#-7 Cff&"""̖ k LrJ¾}+"""wqOŋhҤ1/aQ(MKK]3yb2h:=I^jY#ڮ=jU*p?(((;'NĉfáT*T*qU 4lj\ kT"==CjddpuA摆iQHIHNNAdd ә > "##Q^=zb& ԯ__={$Ҏ]N@èm ""0-B=Ľ?fՒ`8VC6>?tk/S=9 mkז^ukr(Ok5.͚EEsU* eåTVL-iZVq{̕ZGjaʊ?TBR-mv!r9 "xxx@Tbm&eV^xᅞȀR4싉yrcƌ O=VZm[B!/GM1]((֢E'f FﯯC>{!z v%K7uR \Fhn;^~rM<5>~ᴲkTWh׈hŋƸq]M#'L&LJ:h覹5~mkuxXuŀ+IuxS0zo۶C ՃZ7PRR%%%ݟ'PTT///r]?@!!s1Pf۬YS8$L&ǰaCѠA}\~pq$&_u{uIDATFFaaQ>r*nVBƍGaaIm߾=ZhQ&hIh<@ .:: iؽ{a[UfeYP*HL<֭[!!!vjlٲEEEضmz˗/Me@DDα/(a|}ѤҲJмnt8&baU z Xr]dxݬon2UݟkG#jTtas„WhWh֬͛!CWu |}}POL<>fB&P6@5ʻW:kKJ́)~~~5C^ yyyeBإK#7&ڵkh<׮]7_#<K8"dZj˩Qj_[z.ܴW1Zj8bIDDDD| d2ZnijR-AS|E&`LqgQs,Z {L@zz,=zmM O¦-kɀIDDDDzMI?cM?wt4͜JnA\MRZ YZ0\xc;[2}갥}T۠Ys6'pZ*g]쳧 U-Rs֕`0걥]TAUv*;lZ*o襸L"""""r-M[¥j2@^'ˑZ [bYk#>KΖExl+e^U#GjFJϐIDDDD2gn=і,UL:92l3iKt^{Ŭ&""""ɬMITZ=֦2-B&ǑhwZ3qτݔ7T'p3QJGbqP@fϽ-mq2?GMkeSe+zCTb@buX[G-XE&*U4h:c9zlEsW 9 %Iyʊ˹R4{۔*gˊ}6d6uYG?Que,3%B&A"mȨ-s \/Yީc˄LuѦ~{s,B{-uSrPr";IDDDDT8j"SjB&gEYEȹʻOEqS]o!J"""""#:.B#Zv{%9;`:sTY4X""""Qmy!ɑvVt׾%""""I pξuU wCn3o㉈螪ѡB&P=3Cu"""""n0Sr{N}DDDDDD Sx?խψȺ"d74UHDDDDTUv6S~U}~"""""2^UijJrNm%""""rܩRBMM{DDDDD:}ԫo"""""|5&`U?9O z Z/jl4pUŀi:1XZeQpi#cU? |c""""" IDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDKRYIENDB`extension-manager-0.6.3/data/screenshot-browse-light.png000066400000000000000000002274471477302130300233640ustar00rootroot00000000000000PNG  IHDR>sBIT|dtEXtSoftwaregnome-screenshot>&tEXtCreation Timemar 11 feb 2025 22:50:49z IDATxw\@X먳hڪQpVjw={:qZ^UEEQY#Me@|?>$wo޻<Qb(r@~u܇DDDDDh0$bSƸHC QOP J> """"bUA~""""">6tԠUP>8 Z*hKDDDDDG %xevf {CDDDD޲;Ì1/(/l3fH̷3 cl!ȯ 2$#,RVGFDDDDDMO)+ےk~"""""(f%0拰TvL^IDDDDT8r0ɀ]-/DDDDD9-YVW1Cfvvͫ :@ͼխUr ]I&^CDDDDDO: v+p橰‘Z0* }ç3߷nd)2p]DDDDDYXNe2f^FY }! DDDDD9t6/3eq9DriȠAy!ZuYgn DYWF\5 dN u'Fb)#ӚCG ! ef@}v'`j+iyi|"""""9Te ]dT(#:hfG7ARcMiQڟ DDDDDdWh 叕TCiCUg fkEjiCcoS-TM(w5@j`L >L Q]^_kR.]T3h3|i {0][WXmRYݼyYҥXZZV755--iQ&Lާ=KJJYի,$A=pjj*âUj-o+L]W8j,?f˖gooTgLbc?l]f]-d &Ǐ;|0H_"Ig+Wn7d!R5pf6u]ϩZia3MCZ3 (_{?[YYҳDDDDDD 0lʯTn>P[5?G4Vk."hڮÔ>~8_,6og@=H$){ *4)՝VuZ@Ju\Ӫ1$r/rM H4ݺ74,,=1 99HKS4.&05 077 Q>dee+,,쎫kdfuM,GV&$W|ewfv$j]ǚZ7-`cW\qP?""*@RSS8$''#-M~)NHKKCrr2ԜCʕc M@%@Z5ݴjAt ib*EF`?̐!""R`L`ggM"2N!kLuiHߑhtM,MCi'RIJ1B22sVNS+Wy2dQV| I)񤧣ȕ+<Lu @{QO9Ce[cn]f7N @ʣ: ֖/_-$""BJJ $INWL" %%]h ٵڲsyZZ*R?E"A,Y^$d)wU7 (7M}O)mmm]-ӵ%"/999@$99A(KKKCBBT4I >Y eT'~+C尨uN/fV`m.t_ߩ:&"L:{;Q&q-Qx.{HNNFrr ll 2SDeA JU+%P) e*%t1j{zLdft:uqqqkxz6GCd~xoKHHDBBfNG||<ȳʣϪD0Dj/Y$;Gn32-QIغ50Bo0r?>|E _N8xov3uƒOxMNW(JKKqDZZZVQ`2LNw5 vN"iVF9MII`-(]QY] ?411n 8zlmm2{//OcUHOOnjA1eD۷ ڷo9uVaƌYq&fΜ ٍ6%%>>b1J,ۡY&ٽiDT@gu.&2 0nc]:`kkk =1 jkcY6 0dpg+@DÀ~y3T<իaժ埫Z]vCѢE{r.Seoܸ|} uqX>F굎 x), B/[̌D+9iqV2^[bscMƙ DDrw 6[ɓxƏ(3{\ԫW?XdO4ǍRJB*bҤq>5hs!"[vLfFrrߡJI}y3׹L dh4e3׵vƠZ7󓒈PtUҥ0k\<}˗Ä c ҥq|..h;#9iӦ޾} 77wL8>>mM$-N"\֭+41+#ǰy<{NNh}{ܹ p)RcPpaAW@XXD(S4_66gΜ̙PZUTTݻwCǎqڵϞ=GB֨[.;;;̝'NDV>|(G>cиq#x 6oغ5'N۷`ccz>wt8ڵ j׮eQ%'K۷`ܸI3g&LLL0ad|E~w`mm/(y@*ͻ>|W0}Ϟ}jeW\xAuDF)?O[y ޽rs-)jԨW^#},ʼn'q֝H[Ѹq#ܾ-W|98:[e68::ۻpDGGciHJJ8|_}U...| &Ms0.ii;s;v>}q&x)\\\0c/YZv (t5bF.DDޅ !H$غ5˗Yb]vOx%:tׯ3+W< {k3?ƍOݺoݺ-]^]G([V6Pձc'KTPf``,Y {MeG'''̝;K6ٹ(fϞ ݷ2?5}v #곳rIDX,FN*+HsLF%JP!YJ(}PF:a$t#VZ?ѱYZZTx9&L^С#U2roCǎfͼϞ=Ǔ'Oŋ_WT\ŋa&W^88#&&FP&66vr_?4iCѢE|*,^TPdɒ([ =C߿hPZm(TTtܽ{n݂X,F6ٳ爏Whʃ;LLLo_^w>Bǎ]б/, ~B%" b9s:d\{rEs%\i"HcNʊbt)>:˸qcPBB޽{8z>+Wa„<{ } @bb"6ggg>}ƀZ}OWd \tYV2]x<ճHӳ1.\ŋ _piAӘ3g齎ڵk+=PFѧOoE33GR3͛{ܹ]QvM~?^Ep m-QN>pڿpʼnr.]:+AS$aXdBB!,WW?47nAh-BΝ`cc8{,,Ѵi9Lq-y7y%Gbǎ]y6h@b.9s6d;پ}'ovvu &Wv}=~,EPz5Zyw!46ЬYS rEP^.\X"Y^ނjt[ÇXb8t0:[[[xyyO033~m֭ۀ+Wٳ(Vvr49>j> ҥZ6SDjkeTmT׌ d}MT拔c;%ErCz}vOv**רQ+W.u#D)==O 8{{;ӳ6t7%U ʳrSdJNN62-,,`kkkk5H; Docy |(SnT}0Zf~As4򏴴4'.`de u0 355M!-ƦPv|/Knyc&{KXZZ:aںt#l'4rSS~|W|o'kk+ s6662v5:KDDd 333=@)13W#b zdaakk.妳>^DDT0XXX}C,,,r DLMMakk kkk$'@" --Rl fŰ0mS\^Y&Q`nnߍ%9]2"X ss 055+,fDD*THOL{O+މ2 vv`L`gg3A(`XULppgY""# HIIArr2RSS&E.ԘT333XXX0`eM"""#077gh!""O^: c(?Y'M""""""e4Ȩ4Ȩc}w&?M""""""A DDDDDDdT DDDDDDdT DDDDDDdT DDDDDDdT DDDDDDdT DDDDDDdT DDDDDDdT DDDDDDdT DDDDDDdT DDDDDDdT DDDDDDdT DDDDDDdT DDDDDDdT DDDDDDdT DDDDDDdT DDDDDDdT DDDDDDdT DDDDDDdT DDDDDDdT DDDDDDdT DDDDDDdT DDDDDDdT DDDDDDdT DDDDDDdT DDDDDDdT DDDDDDdT DDDDDDdT DDDDDDdT DDDDDDdT DDDDDDdT DDDDDDdT DDDDDDdT DDDDDDdT DDDDDDdT DDDDDDdT DDDDDDdT DDDDDDdT DDDDDDdT DDDDDDdT DDDDDDdT DDD+~l*Q&L2x_\T屙 6 $=zOG"EAŊj O v)(Qwo7:>|?܄3gBD"888E4QוţY3o_&N 5ʟ}|`q9X#""07 MtRJ\J4-]4SF/fZQ^rǛ7j ?~]J IDAT6m ʕ+޿޽ׂ鉉HNNΡZ>޽޽ 5o _~Y*jd|^ʡQV1hQ|'NT*ͰlXX5kVX1PcŊj!S.?z֬Y'VR|Z QĠIDRbb"f͚1d 99D0ݻ(,^3gY >}Fnn`nnʕΡZeL,Bg TaX">|Zjojt(4@:~bccjժǣTHOOǭ[3BQ`sW9SRi455߿LԩFbҥ3 L{qce&HO>S6jH*U`bbjժaʔI0SJx j׮%xD"ѣq!<agg-I/!޽ط/\vE!%%XMxEf055FuJ*bݺXn?7o">|'NCx9޽{KK )SCvN}C^ׯ,YZo'xYO\Z //O+W޽Xlgԩ-K+c:~&MY0$:ux| O(Q8qG k]=s`^f'Nb){+W '''4l^H"AA{qU~ _BnСڱֵkw<~Dã!Ν옘8ppttD_eKoxy5X,VyM,[ ^*Uƍqa~Q:zWWWmQAàIDRrrڴ|UU`͚i0* 7=LFH9Î0gNڗt,Zۑ.ݻwxΞ=moPhQ۵|JlڴE㼗/_bܸx`D"Ah-B`̜ZV!))I1ѣXx).\?X*11ӧĉ*ӓ"0p{n.O׾2&M{\v]1mh;XZZ"-- ˗ իey3eTh7_QL;qiXŊn۶Xdcbb7Ce6LGݺu ڶ/#"" .b-=;%J׹,D'si8y2gϞÜ9_mQ~{SeR6uXf}z)e$$b1ʖ-++ΟOڽ;H0Fe1fKirr2DJJ ~e?[\]BMZ߽emltcM]GGG̙l6"]g@ĂsO_bbbr!!ghԯÇl22QQ8yuӦ&M>]SXre̜;wwDCmhc?`cch -Z|w>iݮrb(^ ^,Ysss/;/^ߣpɓǣxxf@b/^ &&__VMԪUغ5P0_ݻaݺU(YR֍ر#йs'5 Cq='N":zXwԬYXlZw[hѢynQ~M"**Vt֭ѩSGX[[,{.\TL @G"/Ъ7 *x1|PX_F2% ._zG0aZp:s&Dm9~~!z%Vhٲz졳{iS 4iⅎ;3p<}T0s玊 M6A*eO\}0p`?4ՖaÆ(CeԤO^pvHkkk 4@Lt텃ҥq5ݽϟcGWhР^ۦzKKK T<eRERw ԬYl >ǶGl$#1t_ׯ[}ڵkIIIPfTVtis/^{{ 0JMMŦM[-..ΨZ 6tG&^MT+(|KLᶉb+"slQ~ĠIDYxrs*Hp,_RКC׷bbb2O8qn? Ǩ/"ۏ9k(iqj4 #66NNje+C|}LGS$/i žqLRRh}'Ob]y7o"qI]xKUDZ Z9b1$bZL{rr ھ6"A DCGFzٳ`XFJhӦrjp>|)S \rpuZjbѢ7|#%%%kmˍT+8h\0h|mNč74;r{0f4wߵڵxƮ/0qdl٢{`@m皎$AgFvmQ~ĠIDX,Ƴg?qTOX4)Z\\\t"ڷoTggg,^dz-K/0==7nķ~ΝhQ'=zb\T}uׯvB{TS . ,66+VرZvVIcXʕX,FJJ >|k׮c歂GW/!4aHHH\Sy5/^LmZV{ۈ#DDR_ >}s/ѣǘ0a=.ר7|e߿?8q /^]-^ W d>z>d5SVOw|J5k֬Gll,>|ga}TENR(S`ڮ]A[9rL0(4n9gk׮fff:u޽ZM]}U1U111;vzV|s+슞=kxGCd,_R<11 V1552-sۈ#hQԱc{;w^0mϞ}سg,!k)7o@٠A}U̟={nܸJ*!&&}@pK''GoPptː\ݻ5kQѱ<=io߁oWԪUO<Ž{qs$9CvXw>G^_>qAySSSmb*0p٧L61b0@ZZ}[eػwnܸ @6RcepicS-ZsΣPB;?dV988xezꎲe"**JF;;;֪6t;wƍ7QLiM۟xyy[pvnQ~ĠIDRk#I8qC岵NDz@UII;v F3D޽_>6lb͛ChݺbZQH{ÇcƌIIc6lXpk6m !9,wrrOjӳ"(?ُ ǢGCoނNNNXrZNU2e"<=+lB@-?J*fX7}888`ժej%QUH s311ܹ婳H$!~Z0h]^0u떊u|:u_tkH$7RYrr~Y9&i&3?ÿ+SSS:u{ٵk‚s58쫯*`Fom#"oآIDH$mp1\x^1DppGRPnx{7GѢE5.L2ϵ8v>ϟ#**(Yի۫fC,cѢGCxx8RرcaFޒ%KbY=:TO -[ m[ +++LǕ+Wq=}ffb8N:h'WNb ѯ__A!Cлw?5Xz-F(ӦMk8:A`ܻw033Cb.#eD3{LK5@P\|/_Ǐacc/(:uO*~OΌԯ;a| GGG)S-[g FDd&b[I˟<6S"<<kHw:tPzPacm6Q1hQ1hQ1hQ1hQ1hQ1hQ1hQ1hQ1hQ1hQ1hQ1hQ1hQ1hQ1hQ1hQ1hQ1hQ1hQ1hQ1hQ1hRe6kILL,""nnxqNW%[@9]ӶmGܹ۠ 63fʦ}IIIر ֮]U!=ݸqnnx2sЬ76Ν@Æh۶V^$A9hnV[Ɯ90``Zjj*6mڂ.]~=~m!bbb/'OX4j77wź޽3)$m̙вe4l艮]#(hLfO &k}*~C}rD=/CmhOcV 4yT_~07={_nص+%K4ru177GF QJϲ>:KK~k?7;(^Qן#FѣTPϟc8"V\ X(/J1s,lܸ^0]T*ŨQcp~vWׯիWѱH$©S uEi\Ϝ9Jм$ cׯ/Ǐѽ{ Wvg,9D &(pu*A-,--_*HaÆt5ia؋DV߶m;޽ ֡t/ Gѳglܸ}V\kܹs Ѻw"44T\hѢ_3~QLPuqCfZj]@n=v:aÆz=55FAϞ}x)Fg3i >&L#F &MZ`=8|(6t=ڵ;:u"(ᅣG0ޭÇ*kXdZlƍb칐H$ZC_;v;.\5ٽ{:t{ctSzo4u7ȑxb31uƍ"0pɓOM˖m0[Ƚ~#FBFMкl٦s[Tfzz:6mڂv:ӳ)s޽{fZ o_lW"paʾv}p u۶qd0:v/ EDDLJJ ,Co?>SZhCӧ3f:x{Of>=@)ߗcNg3xz6ԩoeR+WF>hԨ O]Aܺr6m!84:t茦MiDDDয়F˫9:v/qJo ^޽N8)(ӶmGl'9_߮hƕ+WHMys 77w{ߴmve67nmۿmV/KgB0Bh޼)sS_k\nB0`@_iiR4nCHYxx4Ժ.}B*"&&F0 etR)i?AÆ8qd9ϕgϡAo7\tYQsǦAH;wnGϞݱh 8? t2Ǝ-cu<k֬êUkݲeFWk\?ܹѾ}[lڴ u!NToDbѢacch 4Eƚ5+0s6mZ+x.Jӧ@"yfhР>R)]x=={/_k׮#-- nnnHOOp]L VX''G 4D-}o = k׮CajUU&omΞ=_? ځݻaBFmZZ o߾żyz b„I֬Y-[ *J*T˗/#0~jР>V^6Xx)_W~8qfժ5ؼy+F ֢Q#=/^Fիի{ŋa(^ xyybٲ+)Z\TT; bÆ#f͚rjܹع3e˖5%}5k n߾5kVb֬XfƏ_Nطo75jɓ*9Gʕkqf 4ׯw L2M+;[nD_ܹ6W|]klذ>>m0g>|~1ڢvZeoUTFb*ܾ}G?t?2|"SNիp cYhܸ|(v _W¤=t IDATIS3s 96u =G:KJtt4<<bOnM6t AAp5TV EPH8:Q\~ҥ3~AWti}V}ݴ֭U+oԭ- ڃ7nY:*3fѣGXb)AA{Qx L<"JӦnz ,, nn舣G*~a4nUf \p ŋPv-K_DZ5akkWo2e;vbO(?c1hP|yܻwO%B055U_իW`iim}дlld۟{kjju VVV_6l$bbb {/ʖ-!C> 2zZXYY_eי3q)vo'+;WV}$l۶3f wKΝص+Epi,\666Z ڵ%ut,;;; ȾpO4=c_| ˗Ejc#%E"\P}5oli_Tԣlٲ-kիWh֬ҥ^Ϛ]☬P<ݻvL:_\v]c299}􆕕%UVi׮?`˖mx9\]]3<.UcbbcԨh\v.)_<"""~4jUN|Ӧ-hѢKfK ֡齓Ot5-- SNVM(iIZNNN:t0fϞ;w+]O-RTReʔ0rp֯-[(_UV<9;vHcY333X;wƁaF899w< ֡烫杗>cK,Cc%x>o޼Qʬs`РV*`Ĉ8t0C :wyNsQ~ŠI T8;; .쀄˼~_\/kbr74޽ɓ'uR0oڵPpa{Ν;h޼bZzz:ٗnWWWj千xc|ÆسG6K7K.;\xڵܿ''G&&&Q:ݻ/x<իWZ&_i&ص+wFPvm4n졘{kooĉ}_(W$+m*uի :;;{a899<={ III=zGٲeǎ oce*|@… Dsssv˜1ѥˏ[ի=MѱJ*{)|]"qwXdΜ AZ5Ѱ;|$T^M0oQ;&u/=&mmmX,L\4%E֝\R=fM?(j֬J/j7o&m!dAP9 {pq >+VC4-WY\ܮ)i6mСwÔ)ɩdjX,F׮]еk| Gڵ&|ju!3Сo߁ÂsZ}9oQY(ְsǦ!A  g#yz͛b͚u6pww?{U9I% %$B ;Uiko?]AAWzs@!:#fLBHqΜܹsO4k֔3fV^vv͚5:ktž}{~U/) Kx\6mL .[oͩSشiky~ %%]tV|R+^WQ9zؼy 7oay `ܸ1pzƤI+v̜Y&2+өƯk׮c۶m<܋1}ԳʩXUt^5jkٶmgΨQ#xZIT\5Rr<8*p8BTױqww'<<-[~tX,̞=+V2cg垟)Sd̘x㍩ԯ_T͛.-[`2hqkC^ǻφ ٽ{QQmiѢy{%`@e5nʸqw3<ɓ\?LT QX^ΩRgN#rRMT{&*-IIɄyyddd9Yy-Zw#믿vJ<~D^} ZjEbb5rM\q/&MpUY|nihh-Z4g(,ҦMڴiҼyk6mZzRر_0l޼*!OMMtĉp8Y@֭8y$ӦȑwЫWl6[qǺkמRRRR? A:aa 9t']nggԨ5~TG0wUqX,\{`|qymoZcƉ'hݺj.v]vm /<>6md:^;v>~!9Ϝp<==ٱcg8vٲϩ:۷q(OuaÆ?5׍hAٱc':?gдiVZ;}Jv/x999|aQ_jիG^=Xb+Vdذg-sNȑ=oaNNnnnUNp4hЀW^y^{H̹s|?sD.WJ4b9xY$łٹsfػ7f͚Ñ#GXz-'?W 0֬YǮ]9r(/Y814jԐ^x~ZܹE۽[HI9ų>޽صkO=|sj~Z{ʽ ݻ_~5111FF#ݺ߸j33eJ`^"99;9X,tpO_W~sbcc˻ÏL֬YK\q W-EemXX3}78V^ԩ*&''~u6L7/~ˋQF+t29ʼy?֭E|LNNqqifc@F#7n&9dʬW_})S͞={9r|^^_:p ۶m'ٲ>%1id^{M=Ʈ]Xt@ѽ ߡÆ eڴwXbGeYl߾͜B'*SyYv<1vOe~ȑ|̛7qp[F䧟r1-ロ{c3jڴi9so`ɒcN&N|njEV۷#n'::YsX~{cZ?'Ç 8q">{sN:lP4i2+VbӦ|'vۭUq*>$$$}^ʾc7oܹxۛ.]:s/jkgNu}\)tV(u׸ܳZˤI_fɒ_/-W^yO>b;ئLy^x7|#={d\t?oLe˖tО?|i'p؉ʴio{<܋t܉FGڧOo>l6ݻџGzg4yoSOywU֤Iӓ^{\ZƎ?3{r2Iw߉7"%!<6""^xi?m6oxseiL0wzUr{qI6l>Сױo~fΜ믿7O>8'?N݈LJG;~%ueV /<ԩy'9s&6mZ3ulcݝ^z<\妬>>>ۼthP]aҤriin1y#xyYxWcРyy1,o|~yIMM%<sܬ3GJqD.c&M;-IJJbڴwҥLj4EP'Opm#hڴ S\MDh7rt g7䫮l̙9BRRѝ>""R+FS%t%&Wϲ""""""P)""""""JT+%""""""RhHR)""""""JT+%""""""RhHR)""""""JT+%""""""RhHR)""""""JT+%""""""RhHR)""""""JT+%""""""RhHR)""""""JT+%""""""RhHR)""""""JT+%""""""RhHR)""""""JT+%""""""RhHR)""""""JT+%""""""RL5HUYV lY!)iiitRe܌L&<<""""r.^L7Z:~86l".8x{[ kF׮]i֬%QDDD&iDhJp8Xg6n\j~Vvî]{뮻Q"""""%R'f޽{ҡC{b׮]Z 6t 7\9q"^wӳb3f|Vatz ]~RR2W̙3 ԫW777ѷoƎƍ8~DM\ʜ9_J*nfnfzNBB"K.- 3l 42_|zFxxׯEDբEsZn_aŊ5rJ4ڸq{I.ӤIz Mت7AAAѼysEbbUn'??4ti8 bb^R': zϫDSYbcСC !~[Nll\m{Ŋ2h@׼-[r n&Yv=5Gl6+VZͪU瞱UiAAA@Q?zcNG~~>t|M t!lJǎٺu; 6ÃE͏F7qqٲe+Ֆv0 @Qs7nQtڕz\UG}Bǎk:thOvQg~N>>ݻNճIDD`G]d1s,ۏ'Q{7y,Z3}fʔ'\{$$$#gȐ,[?;kk7.;F+ԩ9qapb*;?*g; ##O>ƍ),,E=RAD*Mrss\_@NN%Kns7rM7ņ X,3˜1+y:[رc'ݻw[n"<<%KZ'77 D=֭#G_3BBBK.#2%z3]^Ö-[ٲe%Kr) ϰaCdѭ[7:w``̘ttY`B 6E?p1Lcr >xzzr!y΢Z-^zGĢE28N< .-jҹs':SO缾&O~222z-##ɏW<@5RgY,Μ9Cffι\VVk?ә3ghA@@Æ ⅗Wѣ8al6lH@@l6vi֬:u{;N[j!7ߙ,+/hڷvӅ-[ҥKgINNfĈ] ~߾}8|wws׾}05!//]tǛ-[UWuO҈DWo.j_aZ喛\?N:UV?r]=Bbb7oGY={`X-ӲeK7%9$c޽.{n$%%1nxRRR8~M6aZ<xyy¦M[HHHe^zy˙>=>l6JjС}zEߗok݃>|nY+?Oc3kߟ_~U{9eʿ#<Ea // AU*ݝ4W_H(jj6]d&77z%8NLb0 zQ^YI?nnn9둝8GV~}Ke` 88\Μ9Sj={V&88'O@QL@G""RL&Ww߻t IDATȢVӡC{38r(f#U^aÆDG#;;o(,.V/C]:a`נz˗t'D˖El6ѡC{,+Hxx8q̗^z^I\T)uu lذ~[o-/Pt{fc>IfYv:vʶmiZFݻ;wѸq('NPxDD :V#G*ɓ)4j`f3GfZHN>ɺuݻy5iԩ#K,bЬY3ϰf:BCC۷7!!hذ!˖JLL fKllbOJ)|}}*Wm6ٳ~[A),,dM(""oIHHo{2blذÇźu끢{(3663?ӣJ@Q3]vpߟpX$~{:͛v:FcA*c41t>S6oBRRIIDF$$ `سg/?_%r٪T=s+8|c&TmwTv`$-[ffׇV"6l}С#:uCUaE@ӦM8y2;v>z8ݺuu5WN]vsA|||iڴ m7774ȋ#Gپ}!((}{={ٱc'6Mݾ}M4og;wbǎs5WӺu+NN#>>;Ztmv"##,o~mΉlALL F@ᤥmv8s5w#++7GXXwaÆ4hPLf͈c۶m;vFҿ?/qqq8Zh7))ߛȅ;vknq~ |Yf-fȐ4mڄΝ;@||[bʔ'\͚5e$&&Q^=X:P?bi*5Z:p1:i/6~nh4p{; !ْP8|&cIxzzN>#>|/Æ ӓ믿믿0P.s=>ࠨQٿ4LI:S$K4&ӦU);KQlRRR Wk"""uAZZZ5R@sw7wlIgigiJ_&??4Ə@>#^zyo#_F~y GEΚ_\[q)I}4ݎ[rTjǎŲܹ 6^~&M;_~5["33wBCC\Çc4IIɥINNn_p["11F2}|l6WzDDDDDR)o~o믿e„kW_ѣܹ-#ҥ3xظq37'Ř1#yW嗥9rs`Ilݺ˽[9y2YΝxɧx7ʏHYj:+ŋO>O>Izz z=߃lLJߟ[oM{ &&O.jBj4:u~˙3YjՊ>xMs҄ ǻ~@rI6lO2:u&h֬)+Wh4ҫW6m̶m;p8DFFҧO/fs1͙%Q޽,"#[2x@ Ce9r[ѣ?.աR, vkMS+M&&L#:5ȟF5rY뮿ҩUt6s2v]۷{1jFk:Si{e߾uMff&+WR\G;ncܸIHHСU*3))֭[1q%"""uHztZ 66HjjjM%Q\5k'ӴiߏL|+,c߾t _ߢzμy8o߾Cxx8i*2ly1.""⒟7|lfȐA[L=@غu XV, -nDZc^\f͚C݈lINN.[n%!!A@@QQQ7;8eϞdeeIӦMر=ذa# IxyyҩS=Pդ8,|ٔ+M"LOudeJÛPnUiO״ktwYȅ(,,dժ5X,f3OfrM V\ɓ' $,'Nijmv # LJl""ZKaa!-&//eU'44J:tuc6i8,Gzz:[Njj*fooo6nXkS)W*%"%myyyx{{ФIhӦMmR)""R]tiӦ9sy擝LO/C4k֔(233 ˋ=hY4fW}zÜDD8g,"""fȑX~ %x iѢ`˗,Szъc#Lp<==tݻAzéSԯLjj*9~,Czzfxx|-W%""""ƾ}"99@~>>|~۹nϖ-[9s&۵^1b]L&l6˗woͦMY|!瓒b!<< ׯϩSXWHKK춶P)W2GSDDDD\ ]79sÇܾ}411mk`XHMM%==С&a4nWBCCq8?~@n1i۶ ={ϗ222g0 KXXрCtz >>>aL*_3T2]rļ׋O6kȥTlӁnfuMpt"""WnnnMp(enw9}тޛN``K'd2`t5m.Vj#`u2Ӕx^A)1YμReD5"""""Ã64GSDDDD}5HRT+%""""uUGKGHc4:8\:cL& QtE.%""""uj.hͭlJDDDrww4?KKHd40$\bTTEFOOO5HVZΓ`w^5QJ4tQ֭@ZZ:vtz5B6n!00nbh*#))+Wr __ Tvw֭8s&__]Lίp8DFdL$I7oa]DLLW7?c elٯL7۷`˖+q nzC\uUG YYY|LƦM9}4͛7gYCйs'jWiiiX$<<܉GnHի9p4jԐx͘Lw7{cݺ \}ug֯HhhÇ@AUVqQl6!!!݋&k׮_Z|vV"b_{ʕyy|\ *cE,5ػwmR|LtUWup^;7DŽ WOd2ѢEsEaaaVj777:@QSsÉٳ;kq;<<<}_DDD\q⎳`"ZlɨQ#ӧ'۷`Ue~m>3Ŝ9STCܹgĈ߿+WfsǎŲb*z=Ww᧟Ubcz ؟ek׮gۇQFҲe?}?>w\qav7|999,]̵Y'ڶmѣٳm`ݺw>ZFũS|Wsw2`@?֮]Gbb"|X,FC'!![nGc7.YrGW9  }ȑw^!.878 HNNaos$''3b >7p"#;,Z2cU΁Ww^ ȑwŖ-[+o˖mR<99|xxs2tu2se6zҘ7o>Çbi۶ m۶nqRĉku\ hgMn݊k ,^xzz2h  &+6m!9$ڵµvՂߜsxxxТEsL&GӪU+<<]g4l؀N'&+lݺn͛؅رfu , E IDAT ~(&+K,tb0ظq3:]EΝ~9[ݻ!UK֦M+vZ'22$'$44;wϐ!\0{礤AdffDhhn/ h,K{9Nv؟8OBBcM@@Q^;ٳSضm}5!tl6c4QFx{{j0;w̖-[IKKA~hzݿV+waРDFFܝ'SȨ0=*ܹ u]zdNg` ?%..ĶիG"""ؿZ>8J4劓r6mZ׸q(4i(j@zz:iii8ӧOӨQR NHH#LsKjՊ;v3 I&lQj$7)))c2j- 0즣ӕdt:lf㉏/5Z4kɑ]}||\Ey+= ɓ)$''{X/33 өSG_ȬYsh֬aa.((߸qg6KVjkBTU=_Y8vW2[i&&~~4J<)))J}||lymNLq%%c)֮]/ /////OTTT?FȥDSk ~"55vDE!((\7®w9OpD<7oa͚q{2zRI PfGDFFVʍog/Ynܸ1;cbIHH__rEys},v瀳m_ sYx{[8x.\Z)W KHHht#((<;ƠAJdd$ ]ׯLbb65WI䐞Axx{CU^zL&zdeḘDkz5jș3Y(,5GMcKNZZkش4l6mڴfvۭ$$$rꂶǶ爾%EEEc 7|kk?EDD\∋+5} ؟0 +1tX,^t؞]2 z-R+ٳGp???nfVX_뺽ɢE?3k+8s&?^&ٳ;]uҶm ᫯/Uf>YW9رwV)0u DE-5;ncժ|B J֯_o56<<_5|9s:6l5q|ٙuwh0]uȑ#Z5lc狧Ắ[?Dtt4%h3h?<$qKxxƞfQ("""?gGhM},7^gla{eSesݭ;iK l6~hB]]et޵?>Hgux6>fL&>&Bx K 6dhFhFl-k|6NB=""i}l&LHjpDDD.YJ4EDX|555L<S)"">ci[uVDDDDDDJ8Mq*%""""""TJ4EDDDDDĩhS)R)""""""NenDZRTT!R)ADDDwtE{ " R)""""""NDSDDDDDDJ8Mq*%""""""TJ4EDDDDDĩhS)R)""""""NDSDDDDDDJtZVI3bDCǰtgdd2|~DDDDDCtZ}@xxk׮kp>-_3G$""""~ Lv/0I$%M~ҲsA^| 6m1c'IL5\{ojĉÆ ;.su7eV˗`un߾\TCEDDDS)Rr, 1 oo/VY_~ASgU2aѢ7y9vx:X,̘1+pHZ/_رcp(eV~̚5w]ȯ}? PnWy#>$$iVvǎ{L0zg(--0Pr``Ŋ8ۚ5P[['{l@Aw+{ٺ:}~nMn'~vɢEpM7W^r+.lFI+w&MlLJӧ+{43GS:UV3p`]/~ŋfɒwHJl}>޽wwwzު2={_SOzŋoUIIcϖg.Y~KDDUUUIIIIzO<==(//ھ.++UJ4SgΝz-D;sǏg{ԃ,X ^/^;wwV׿ O? ٳUVӪxf3fgC||<=[,7w.][o-"==7CGmh'$- WŢEzR)_Abb[\ʾo!//o9fϾasf8v8sÃ.]?luW]uW\ro&1׿orms_`8]Þ={3.>szV/""""Zvp댍5}5loܰljln^SSu#m@ l6+:JK޽k+fs7s2"""GVo`0`41͘L~~ߔ g՗ 2,-ke[e}nv8M$"""ҁYVjjjw%gl6, шk7 2bPUU$V+UUUX,ES\/_2"""j:$.W]]z6Eڐ~DDDD:CS-%""""bpٟjjHR)"""յwQ(`ԛjGDSDDDs2C(vhS)єN%K>SXXsݺd6m OspK؝wm͡CiJ4ٳg/uםw8"""bh;,ZNw8lݺEa۶S7+Y=PHe޼l%8ӢEPTTkwM6cAqq1yyy 8P6nDyiƌŠAx$%G$'oh42vl۶}ΝZ-Ջ3wYL۷SJ+S'c0YgFF&;vÃu\<<<ڪDDDZ-7$W']wM{sQe޼HO` wX"?hJrm0d`Fϳ'YYY̜9;HM7 (--;o %%o9snԩS$'ohU\3v9t(UuЧOox`L$ _ 66#GrPPPalԣ)=@.t Ʉ~~:u __s֑ʘ1/8e>e=puu(((w^300^bʩUUU´iSؼy Nߟ1cF@ee%;v$;555xzzҫW,#lذ -z1cFӫW,OWcO`Z'>>?*ÇJKKqww{ 4WWWylٲ<<2dsI͆{}@=rP)GhlܙohYYYdeebԵj77wds:]]=,WDDBֲ~F<==qqqk=* 8y$DF,v܅`$4 ޔ\#GHN^D"""ZۡCl...tSP\\ԩ曵ₗ[nh'S)*%"LF,:J֭E"""1lwNYY˖}Jyyw~УGw9uAAxxx0~fbb<uuu@uuCfff&YY'Zhl6vر bZ撛{TӦM!((V$̛gѢ7;,6DS@OXXEEE=zxyBBBsiLh8[8I=s)""ҖBBBŅZjkY6??_ڵ6f|||ddN>mTUUm/--d2c]>88oo/{/?%"3+ޠ{oKee% 5553i~c04i"{bys)""Җf?o 0zHv '++"23y\ƌb}NrѣG7u늧Ǐg:w8o999@׋Aqq k222g!9%tW\q[nѾ 7\ֺ ʰaC{5kF$%mU11D5PWWGFF&OW0jHF#﶐}qEmm-ǂ]ܤFhZVb$S.ez f̘FLL4eee?y5//OF'ӳgl6s!F#sW"""Z;v ѣ7|}}Φ(f͚ Y?Pyy9#GlR):8>y36Zհsòɲ{MM֝a36lV, uuuѽ{vNDDUQQ!t vsHII%&&_ 00Msx6>fL&>齷~\]]uw`mlkLύ_4Nu5]>֔ih8qmd\tڂA]GSDDDDDDJH{C(vht0F9QKDDD15͆3EڎMd27'2LCҿP""""k{СDږMh4atHnnnic L&JZh4!"?-"""ҁ5$O:V+6úh F#fY HH'`2HEC,Ӳl,X =ܸ척羀Y|O҅ o߿;w//Oȑ۳ذa1x@F`hv^nnĐ0ڡgol=eee3ls~~ٳԩ1$'OstTZZoUW]֭חѣ55\~,{}t |ͅ:u ???̹Q,8}45^b[ Џcǎs ntҥ1u}kf-}*Æ %30 pT]]CV̄ 5jEEElݺ!Cc4bһw/{,YY0`@fq!((L~ 86m̎?~#G7|Kpp0~ G IDAT@}'N`!$&& > 甛{q2n\"|7cȥ\Pш`omo Zx˴ܒvihJFTT...Cjj}3e$zr<'())iuL2j<<<5j$۶m'7$>>>ٳf̘n~jh4r㍿h4g,]J<<<˫;vfгgO{ݻك{Sړڳv9GmTwALL}7$?ixyy|ĉ `ƌiBǘ17=سg/'NOޜ>]A]]zハs܁6mgΜoK^^>!!]رc'}1|0(//gMǞ:7ߗ@ǚ5ߴ:5HHCxxJƑJ^^mϦ~f<==1?IJ ӧKKKٲeC|߾}߿Y?i0h@z@||_OcNc%TWWsQf̘f_קO)..joIdkʜMNN=JaYXZ,[,; y{{; WKI)%qu=ӋZSSmOx skgXX==[l^^sd=9mݯ_<~ܞ _ P>11#VL&BB 4 RPPh_WVV޽(,,{݂ٝ]ҫW=9y2\Q>`^ax{g( #|yR6hHV+C[;|{<9xrХK0zCl8$6 l߾͛0`@?{ϖ-Y<ѣG<ƍ척DG0~fq7DZu.ԏՙ֚?Y,]|YDDDڇMtRSgʔI7nlO40M?~3 ?e_nM*++9|0g_Edd$PzxXsQ#++rn_u4M0͔9eee{SPP@MM9c `ߗ ***֭}lw%V|BCCl%77>$ DbầO'555Fhh#GWg> BFa*rsOңY8_\pqqرa lvĉ?'%Gs 77nhsu2"""~MTfذ9FAII 'quue~lذCQPPȦM)**՚2MɁ)+%}԰jjWo~L&lVvCQQ1IN^PRQQ C a͚oIK;Haa!{cٲO`k,vF,哝+%^xOF-ŕk9v8yyZjPր>BNN.YC{(.o'rP^^Η_ɓ8Ê_n]aÆrAnBRRRIIIm9<Z[n}ٶ{=z b}zt2zԩIL;6mo&No4\s5Y2e+V:KlKxIIIZ5ϗ0=o$&&W_or?N:Zҥ΀ҭ[7f̘ζmߓwww0fhZ~K.fѣGvzeڴlݺBDD8SL/EDDDbnDc;L. ?1Lo;9ݻ&g;(V wƏ2x a\r4tV.IIHWjڷl6.|+ z֮M>k}yy\y<ēl6>p)W_}GꫯkZ|s='r>| +V|IZƍȜ9wq&z>¯II5J~JKۯb6!<Mdy~R{nڴ#ٷo}ݟn6XkKæM9-wpwĴix7ts뚐0n5kq-GDDDRDS.9}~I&hgp=kL2Gy͛4y`<0 lذgy>[m'Nh…sx%,XCo.C,\ …>oń I7w[~@xU| vo~C&Mdٲ36{y{m0'xƍX׿`6y:t#G/?gĈaN-#F ?'`Yjuq6̙ynGgȥFCgo1}Ts1 cᮻ{-=zҳg];UZZ?Hll ?gdgׇs5W3m[WX""©s瑐0J}w1O>%u+K=z}1]v/=q~˛IK;H>C_/|ӦMgel=8k=<{o}8o~_p->SWOpp& ZPPHuu5'O$,,P>llv]cccd„${ i9C\rRSӘ1cú!CSWWGzzTUU1t`2II>q]7_'KSN>ahĉCq&=r(UUU7;$RDG %%0iҙfggۓPPQQ4Pdd}Ӄ3w=nsXcb4iw5QF2l&Mb~MeXV53h`7$;cZ<^xa>?]n ^7^uH/o:̯ I5/ '5eee c]Ws ~IH﶐^x{? O{4ׇ]v;۵kfhzݽYի&-7rm;v<,YV^svCr99DD_X,͉9ٷ{{{qQ\\\~|c'yxK/-hRVTTo~2w,Xcǎ壏5+۳gu׮ˡGZDDDD~}N:3VZ͛o.$==o|}}~ի&==wy~ ر}Ajj˖}½ 6r1.]FII 11-ưf7l57SO=_<Ď;k8y28ž={yxgr<׬MO< >6l('cd|v]GtJ))̝{|G#9ywX뚑{-?a;~r:+[{5W`̘QO+o/~qCq} /DAA!={F7Z<ޝw!%%~M̹?c=b߿i pqǹk7|}}y饗=Ihh. @pp02̛kV Gb^7x7xaUW](@ZZ~ﱽ喛_ʒ%-ӟȬY3rÆ o{z{??_fΜμywX?L4FDDDD13g:cuM_ >7,,ԞH~6 l`YX,QZZF]9:+`kR*ٓUCniLF53+z۽Crdzl6c20~l08\(WWA@`iX,-shuMiZGSDDDHͩ幯OXu{rQX!:Wn<4ŏ𶝷@DtH|9o)<ǪV;NOHS^Cd ԜESS)"""=)%?Zf"vht`4\8V!"mHH&Cv"mGH'Cv"mGH[Z!tXj;DSDDD$@Nm'v-X*UU\)񡰰~^͍(&LHþf˯/ vڵk[lQGjjZ`0PVVơC{ζJMM#..fI^dd$_> Faa}P\q4V^^βe0d$|1s lC/8ɑ6bK_߄0ʪ:vwcmm 2o̟MhtJ& ل'Ǐ#''33˙}}}2dݓ螤`4qqq Bӧ7i2&\]]2d0^^?9 4ӽ{wCFFCC Օu=Ԝ}2 ;6Ljk^pAqqq:WUUU|'2r\܆Ex0CCFF&w=IgDS:=f5fX8x03epP:111KJJjFll ={Fqde,o2[lP6''Jhh(zr@3͛3ޞ=&$$􌳖>AnnCofkX,,Y>>>?' ""Q3 pQ%rIQ)fcm o]UEEO0ax>?v‰9=VEE`6СtJJNѵky.**&-ð^zЧOoөseHLLCXojj}iR}EÏ߿CRޚ8v-%%%^ O#[G7ܕ a"X8 }\|(M`Ih=K0]|Ll}+W  ߮`I5 zKgdS.eGS:Kpw?f͚P[nOӳg$~mV}bW^o[nݻwuuu,Z}?#Gˬ_m۶cZ0L6//;|0 fbc`Zٽ{=!##>}z;ر Y-7pö| Y+L&#UUUXV+()9ʕ_`29rx⨪d2qw{KػwADDږ'fWjFpW./b^nֲ&qܙ7:+:VM) ~&VXQ^nޚӅ o[WSPnaj{M 2> y>/ޡ)%L&f̸\\\psssbObƍKdŊ 6wwwX,p/ /$+Wb`2z܌LƍK\\V7\DnIB>|h4~^>]2st !GÃ[n^v6K4c89^}L<ɾWlfY? ޽9rx0M\vLݙ1c|ݺu# bO`||_(~&]̯wh}XVɻߙ 6[KA./f-Yg: xvI%Pl̛gѢ7;,6)y{{,l*2ر NXX(^^xyyҳgO<|z),,b|||s ၷ7L2\]]˞dB}ad;vދԤIزe+&әU2h@z jZJJNf55qړ ȪU_bZ[]'*tu|O_(@>'{jrjm/#2Shn3b:"9(єKȑٵk7դѻwfes'55H\]]Ӈb:gZ22ӻcϥ7a-t H޽XdeecX=3&&SJ˫ѣ|^|q>キ77WƎM8ƌfc-ADDڞѼt6lS IDAT'{~a!:Mƴ~<1;??k}QAf޻+|1 ?TCV/fc%w߯$**gW{$'g8ruF뚾7|nX65Y67}ݺӑ06B]]et޵F=U>Gs+y8o7#s'#<71m)+\3ԋGf_f2/LIiOwhoʽq(\?܋??,Wgڳ9T'̅ 3_'ăebmڙazdVX~(..ߟ/HPP?~<__f3& Hà󍞒 nMmiFiºgӺ!Uٸy7 t#%1|CBwؾr[n*oRowG>YZ?fFrK-]6<\ AiYye^xr%Fh`;l?ZM@3T?uOrqILCgEDDDEVja>+T5UC<1`͍e>aէ/0+B\r_/tCMϖdi6gTb20;V<#\ uj]ǫ)_>MLq^[!+ht`&}`j;_/,W.N(vsm:,HQ)"""ҁM!tXj;DSDDDKnF3I; NKH?Ml#m&"mG$tpq. %`2? ".ܥCϑH'۝70sÍ7ѐYt$]Xpk0XRɞrKX;a2?d`7W&P)3R)"""$vWR%"JtJVwp@*eexyyѳgOFGǛ|׮=l߾oO϶ɓ|Vrrr#<<15*Kꫯt ^}5f6=ztg˖8qBpp0Æ %&&a_Omm-v+۵kk׮%22ٳOsfeCBBXt>>>L6O¬Y3.h8p {]mvΝؾ}̝{nnpի/::_J?;'YsMJdd69FKbY)єNfl٧0ltBYY;vѣpNg^nƯ~5)MHH0111݃>+0?gPȑ#=z>ݻ1qfW 8ر:pFc[###;6a|ffsw1),,bݺd&LODDxq~"&&?BYmvfыgUD7/tvEnn.7tgzzŻ.a˖m$%m"""ڬZV8Ll_Ú5߰zWDFLƺuDF8k/q]]WE߾}ꍎ&445kg(ۢ8p 1Ieaayyx]t9f\\Ť c29(4izL\}Ng߾ !Ʉdd 7x[o!ypUWwUT_ɽIn 遐Jh$DiDYT\quW>~-u]?*":H k I\sS }0w̙33g¼9s/pYjk밳%&&?˗ 넆2~|$-$''sz :z<.@[7#G2aB,)466JPP ),,DV3aB,>>ކu:vkb٪U?ҒR~::OO"qrreeem+qqR<=GDc˖<̙{7n><3grrQKvv999sv 0`@v{=Q*F-ӯLL< gOodffrq***Q LXX(fffݦa`BCiWWWdž i{ɿO>'NȪUpi.\Hcc#΄cȷC),,R? -;} cdžPPPHvv6*Ǝر!??NJٳg/:RAZZQQ6ھBϗXY=v'TG=]ZqNG``&MDl 8nZԝםoܸ{O߿?/C'y;笧*$FKEE]hb>GYY:̌@VV6;vb'Ζۺ۩Tm֭hnn!.nV={'fYh!elٲDFF0stN8Νxg9o\V=VпFj˖mh4f~JɓXk/g>>,Z---$&d˖m,\'0! bzbxx r/^HVV6{g2j%vGfǰ4=CEE%nn]v'1 iӦOII O?Хu^4ƌR|ۃ$tz""¹vxǻɷZYYd4O<ݻ؈594551dHPfFFFbcc  %xp#;iZv}L?**PZ[[9s,f0NNc).. x{…׏iӦ2s4>sJKoaC `Q\pnkkkkFVuvrr2zXXX0ctCٳf5FwsMT.r;W&OvGZgRwntT*PmPm ?hUWWdPlnݬ !9 4ҲF$q֬o<== Qi lll J1pQ˝ +ohjoZt._…Z3KJnhFi[Z6++.-IIɜ={=4tlRɔ)G 딯U|;jjj궵ʂԶ+WRelmm{nH(lڵ4hރj]E8NKYY9MӿlOyy9/4 |oU{?a-[R}[ZZ C%%{tEз vFQvユkۯR<<بqpplkkcwru&utu]XC&33OρgtL!DH)(J'''kCUU5FU~j5O<8ysi>¢Eu!n= K$&&pNaǺӨnnn9s(;v,lԝ#//Opbcʙ3gz (2_P0d`31b8Y7}ĭl<ʦ={sMbv;z'''jkHI9„ 1e_{o]OOlltUAwmJ{ԝ1fLdee_S3&9BљÃxF[ؿa0֏˴/kW__Oee>>DGGlRz=W7nnnhWXXm;;4ԄB)++KK+بqvvvcGu++kRRwYҥTVV1ln /aee .wFÐ!Laa!yyy$&0Ko"++J.\DccƆFihhs ر|JKow~jjj=zq4440|0 V<=ҿ;[n#//7npP2۷,,,6m il޼dgp 6oBPP v]hɝ81'J%ӧe6^Jffؿ?q}&+WWHJJfС7 lnnƍF'&dSVVٳ籰_[wF]]aaep)ʹzb֞l߾̬Oƅ!U]MYXXHOϠ/FA]]| رc%)9vCi ضm.&wrT*ZZZ(--EJݹKj fffR[[Kk8p HOOťmޜ3ʒjfEE~Wl?A$]gܜsԩ3\JM lmm!,,̨W\ O||L8" Es!jkϞɓ'FXa  b<#$''s.M{l]wQkիm-6m6Zdbݘ3RRk7455ʂnBs__.\'ILDt][133k|Fϟ+u.YZc>}+`.wܜž.B!i?VVVx{4[nceDF#XSuuuL2)?ڵzk#󈎞Ȋ+9|Q73gƍfΜ`5S$&fk2h4~Mch4F̞= 6|_"&fӦꫯSSSkX^XX SdKdf端oF '?##Qر1iҴ^!B 4Nggnر7/ϱz /K\I_+W>GEE[ _>a„^~;voϱukv2|x0O>>.]F7XYf;*|Vz?>?oopY~ՌBXX(|۫cxNb֭Mnݗ?ٺu;/888g_yy9+W֖]?s5^~hZ^xg+k|RW?x٧177o+?|gV\Eqq?s~SyfT!#:+xu^VLmYf.xכ8w<ӦM3={xyy+d׮oP(illϿ7^#::y<˩lϸqbooGLx7oӦMֶ2)J>=6l;YS\]]Xd1?B3NNN8;;h//On݄!ӧqApqq6[[̙9uO=zl[L@@?w_oBBK.jQ(|J,Y*pvvwn ҷ]wUDFFzB!~($={o_"֚9`@7qRInn׮]{ii鸸8h{^p֬/(𪫫Sa<|"#:co*˖-eٲ{>p5yyyq=F_|Ezz;u'軓#iiڪaԨFiBCh3rC ƤInffo_".]&//Wۺv9̌ѣGfcvY!IM@5j$o03\]]17﹧ڵ;Qbb3h >cr^߫~hRv999~8qSN駟;f͇ XOÃQT]ҝ9sebb:Yx"۶>w[MeU,_..L2P(/Qfff7ݞB!h#h~~ `,^_%f2|x0eeC<^φ _sFVe IDATXZZRTTçV e9j:}w[m{ls(JC9ٷơ7PqVu+-++3/0Js]>>XX(9y;:t/^2:F---9s},](4Q_w B!5 4-CJa.\뙼ҏ¨Q#oSIMM Pyż_ٳg/ׯgif^x%Μ9 @Bf{ERRK||UUUu[Gy"^|eLĉS? 7Ϯ.\pþdffqP99_m۶µkʦxܹ8q7:[ۥV;Qwط/k׮!++uϟK]]=+q~?yVT* tlOvvII)FyPYYɥKr3BQQ1=f}B!xIY4w>|e˖7^{U^_?{ΝQ_୷oZZZ5j~aU~=Kpww׿9+^M["-|.*--xzzϱtbCgڵ ,X02z"Y Yl)/_ǟw_W__dРA7… unw? +++׿S_@\ zj9}mzV~_ϣR6 oofذ!׿31~|$ӦMeժ6m*uss3#Fky&S!wLQo3tyu/o>4oKK편ڟAסjh45K'B_t[ sssJq gffNS!2Je1 nNtCtf^鞘쏇h !Bt:---]mz=ZV9*c7!\eB!)VKSShjj2 'w$B!t:f ΅$B!ukr$B!hZiK:N qI)Bqh4}]G! 4B!3Қirw$B!{2MCB!B!LJM嫯6;Q^^lС$9 [oKw!̓O"D@SÑ#G롲RFI>|z""5j$}ILx  ))sssƏS={NK`` 11㱰i֭Çqek `ɘ439s,dffrSX[[߫C'BZqq {EV`.ҿOVzk׮쳫xwpqqb M@yefܸp~U 0??3=Ijj*Wd".]LJjjjoWHMMcɒXjRzU,.\)((kʳxUd !GG{^%wFZ4 A^XYYꂗ' {{;{{摚FD8EEEɓ'r#FRPLJro3wB!ASS6|ӦMTWW@DD8NNN466rY iiiAVdeer֮]GD8o̙3ppp`ذa rfeesjjjˋQFR q "$$ĴDڃ{AZ6A4z5y~~>T@s/ZWXZZ a[Rݼ[Bq'Z[[IN>Z‚rLbG133#))D^^>gϞwwWlmm{{;Z[[ٹs 0kkkIJJFGv5=zP]]Cjj*L:ăaaa 'N'@S sZ{cc#666xzz2|0 b݋<B;6///jkkIHB]]um#G0hÆ gg'0<6FaH[Z0333/U9{GNcS\\RoT3M3eee8::fժ~=W]q_K{JM!:prrߟ rrr6lÆ 㸹aggǩSgʔɘ+hllm-fy !vvvXXXJkkۏ>>>dddp` tGTbggύᩧt{7S!G?< 0n\ ? 23̢qW]]Νhm0h'Qu:>6Bvvv^*+x~=oϿu$ؘ~=a˖-1L۱x;v cǎ2c?J3WycYB{Apz& annNFU;NAA!qi`/??V ;x0Sm+1tب ^π\tKKKpp@]]=7nBYYuu&?PYYex>Ǜ=AM!BaP(HMMb(,l 0۟hjjb= lx W~~>Oΰ^;Z K!8x(JFIDGG1bpN>8;;ʍ7ػw?..TTT`eeiv}!A!h !B333f̘\#66jzh,j2*++aȑ(J22bnnFyN#77333ƍ 7g!DEEbooGAAUUU7 ̘81o {[[0ݒIL-;30}yiEie[ZZnwĽmF^VEPSS>.BEx`O 55 ?{v CTP(0337tm;*(@hW:M;L{ay{қ4"-B!B%Æ AgB!&z}]!h !B!0) 4B!3iqޑ@S!>cn.p Q{G.!BR)lG! 4B!3 BZ9 !KB !B܇T*U_&O{KM!B9}] q&BqR(XYYIKXYYIY!B!}=xjh4t:zaff9JRL!Ch !B< RB g!Xz7Zs|wAV[[G||Gtq>c{ʕT;^}p|vͦM6zzNjjjx뭷)//7YB!Ľ"x`bffׯ_<0innf5Ӆ ?>_pի4 omAfst K7Bq{x`J"55!Cux{b}]nyxxN}W<|x=ƃXB$$FL2KK7oZmH8|(WСׯQ>IYkk+'N"--z7.n_ʑ#G0! %((ăV0!֨5C),,R? C'BAA!XX;v cdžm֬'xgggCo6>:___r{9y3fLcȐ!FeQ(3+++ًNGTATT!!8Hnn. q)**FP0u^ʕTRxN…KcÆx dʔF+u,Z(>q$_g̬=z8119|u ПiӦ`ooܼS?gy4}=zK.LPPn9s+#ɡUD޽|؆2~|${쥥3G}'NRZz{{{&NaРArgpqkߝqogֶo?^&MCJll w{._ٳ稬F 5,onn!993jxxx0~|..֣zrF ǰ}G}ZNlڔ@mm]SSHL<y%DFFp 3 inFqq)qq3X`Vl#GqbccXd1lݺ\ټy+^^GO2k Ξ=Gzz-]oGV|V|^;θq,Zرc9\mСCXt QQ=zGX;vhYdK,G}}!}[cȐ7]߯TF͊˱gӦYh- //ӧ !nI)H`aa9}{C¥KO`` ..DFFv[i3e$.]LS\\:0jk߿?xciiɘ1chiih{~_~L6g<<0s4 )-awذbccѣprr"//RFmQ*\p f̘̞079'''ƏQnneee̚5Oρ7V{G其3gA:qtSS6%S{ qDPYYApˡ:u28;;CߪoYZz vٖF DGG޺!9K,Gg1WWƌMee%T*oϳE%&&fJKK8} C:g ګZ bqvvƆj5.]6СCx1jH2d0nm-~Oۿ_>xx ښѣGRUUEDD8666go!?D|zlll 33s6orWљNRnݑFףzL=Έ';]EXtq@q|8JJJ!33Ç0k.?\%BIdd]u :3&/ԩBTT$鴆mum+WR Ell CFu͍zʹsRIMM5USSNV[ZZ(..ݍX`\}w^Ӹsп;Z[5466u{Nu:EEب5j$f$::g88c\vk׮3lZ~B? 4Ǝ',!(..AR1bD0))z*ee9r(MάP\JYY9EEl۶$79:f%%%c.Ju8;;|BHLLFF9<},w1 D[|}}7. JRC7=//O$%%xgou}%6--- Jrr ׯgR^^Ή>ͨT*ϟۥ@PCɄvmYظ1mvysn,̙(lݺx{}[樨HƎ !%0_~4f0mc_}Ѩu58x(77no b<8}멪$4ta3qq39w_|OׇO#wo1iDΝ;ɹs牉]3 QQߟeסt>'SNM$$l裏ΝM׳p|5QQȑ|W:uc qzzz2ct.^ĺu_ LDĸ;:6Maa!}AMMMfY\v/\Ϟ= `Ҥ ݦT`>+ʯ{ !BSRu05NO2WYl Q\\ѣۙl{ |ܹdyL~xキhjjw&8xw,x_eF6|͞=xͿaL61sWGsi&BaJhW_mK[)ރ N/g͚OxwGPd>r?ɾ}@;+)s~DF7=}`„X|r [?w^.!B3חYܽ͛2o\ Ζ mZ]]S :z"?ȸjXmfϞKb}X}y xy㍿RZzw.k|Ǔ@RR2?XfϞG}lJKKnԕ644FaLޝEU.~ ۀÀ X 7MTr߲%[%>RV]]oMLK \S+ӬtK潥") ,?fg6afy9=y)=gϩW;zQ̘<W:~ƍq)…^}us ^/Xԗ{3f<!-m.\2\zP\\E^Cjj/TWWiOqq1>S2LĶxsgHm1wꫯfzO=5 R¤ILmٲÆ mM6#={. ͛7f`۶X4TGUVV>… vo1~8Ko]:6n\ؽ_طo[ni}va֬L}K`͚t`ҤP\|PTTɓAP`ꫯ̜9طo`ڴo.:Q~-1h]رc;&L+/_'N֫? =} 6mO?=7oСl zaFJ(-0yTS_;q$^xo59w?ϱ}wov ={}auA;wEx!(..SRaZ"?+fάn9rgaCG0cXf22Z9#c-YܹK̝;UUUS"""~:KMʍ-c_cvz- ^u'Z/< K/-^GHH""">x 1x0 0o|L<aa FzT*ìY!!!ޡjux啗P(?5Ŷc7T*MLfzn }t&vډp%Wcw>;~9h?M8u4z="""R,*--DAӡuÇCZ=ѣg?;d*++eV̞=0|X} pϞ},Ƴ´iSmLm;ETWWC*]DǡuS 1c5кuk̟5 .Q#++IX~#Ǝkk׮!#c Nlk)=ؽ{/,tvO70hRb iZ/ HjӶPS*555hF1, 2b[.)h49]m3(-njNűcQ^^t1vC& #ǙT͛1br\_w2 ** E9|0hPQQ)6KKK!JPjmQ&<tt:P*F+Ξ=' *%ƌeoQ5E9=ztGϞѫWOm߿kfOAY0'//I8v;r@YY>U}JDDD e HHO?~Gpf1Ic}}$GRژ^'$$6}pд"""kl 1Ѩ}$H߿o?3ܶ#y 6{1h@Ӿ]S;ǎ?qqmA8p`̚|Qh\ӧ`Р TDDD͈3XuFg:|C=?߁/Yl///k-˗:Gaa, $'; '_-?~~~~HLLp|b0TVG Mی7n @ONNRfq)'^;^Ro߾XSrr/vYLov8|")RPO>ŵk+1~X7=* }.22V_~EVV6|7ʶ$[>bbZ>".\4&|_`VUU!"".|iD!FġC1qS?~,PPP?LjFk.̙3??ضm; 0jH;gׯԩӈ5M 0I<,ǡ_txc)}a gڵBl)ZV5bhqLuSRmM8l\BB_Jn]ѱ9EW7%#o6lĆ --^ S+Caa!4M}~kй{(ȑT*k-ĸqK oaٲw sPVVcwLS\-P8,^}"##~j L6:={@z zꁷzϾ]` > S>>%"":٣mg4`TPN6 aⱺry1ujh4(--íp눈|ס*|YWQPlI2)*w"?)Mr˗ ???d2H$R,i5'ܿ3 ȣG/+6mMay{\TiDF6ڹDDDD>I_K7=y%hTi1n5_ֲ9WkN%"""jl0aUL] PvB ^=h֗Ww:+k0糢f;EZ0"k<"&]B[yNDDD,,C:Cy&kB4Y8]])䍚LŠL[ؖ#""&JO7g﨑G}+;4-+1EDDDn'T{ >}G,{~VLUo8i}1zzV{#"""O7g1=B9wm婠cuNy\EEI;.T;j dk,hhm~8$"ϭ1 󡥨junuOs22֢pͅ?bccq="|Gdڮz:+1jH'pAs>ٳYYY6m*2vFNN@*!"B[oS$ Pt))Me_/Mq睩ӧk<2bb'fv)|~ڴM .]R͢N[X#Dtt:o{BNWM455XmTnyZ}Dk7lUi}!hZ#:.A ޽{)r{+#{l$P]}wؽ{)0cʔoq! :t+yP %%7Twtw8pѣ;RMM .^D={;nѮ>}zK.8} r&N|uC\\⋯R ALV}P6JдukcH$(vk++H^_kjڿ2j4Z=mۢ]Ddf>ZĶ_Eii2T]އl~~t:Ѯ]"ΜFR8|퍏B@TTrrY- ,F3iV֭ 44kP|Ex+.\ԩ0l63 |X#p|AӅIb:vQ2ZkKJ`kb*X yyacΟ?h:o\Cbb[!!!4*@ֱv..f۵kHNNBNN4)Pz}FvY\vM^: ɵC b**l):v";Ҏ4l=R_E9>sbibK$7SH1p{>Xx:B*v FH@PkSBa2,|(߾C -qw Ѷ4U ͛Z~ke.Ų `gN6s5VNl!}++/Putiwqqq{" 5!ZARÆ (3nΝ_"> }{VŚ50nX=y4 6ott~wƏ? N ii $$D##c-z=Z RRR:zLA"99ɢ~{G?fڵk(**޽L&EUUt:ˡP(}%%7{d~=աvTUUB&aԧeV3g2awu Am$QIDATv}:ʲT@.)8ywOuR 72$ ;w~[nzon?U%OFL "{Iцp0H?dԠ\WqV?4\//#,Po2kH)}U aV`ڴgp\.fz7fTUUKR-aY *y >[ZRbsGlMOP@P BmJcǎ"&&ZE#$$!!GHHrs[(**FNMDž/io14(( A6C&r( B&`=vyBBѵk .]lE4h 9 zլlt|E=;a^NԠ,ӪyC.yll,:w{Ns DD~/r]?n~ !( LƔKPTZ_U5hQa( h_7"T^^9,,l ij1e#gz-o ҽe^ ?`FR-<3 5?ݻ_qMYHJjWLrrVg!. rddggCsjjjpy$%Y\* Ĵ]T*A5RpJZm{xm7Jq΋/bժtZ-[" @}Իz^q DD~:ߞe_SZGX4BZ_\LaI$l%;ۼF1]^gܹ\ŵe\&HPyfޟ#Ɛ)bglGywIəz%GR66?df?RG)Ke11Ϧ{WP^V F2zkk7t5ϡrhTD[v RLx `h`*eH?X xkUZ[.`HT萶̰x޸ <{w >Y_.yTAx}O fVl-,C{Җ壤ОVÿTq[`V8{ө;:Ͻs\^b>3. V^rBLD ){$* z g ǯtgtYaHcShXV)R#/umN֔kP8U8iU8 Xrä#e8؄eĮf jVYkQ4~Z æX(5R+<_)B DDDDDVȴĂX^)Cڹi/PzEl@bX[|bA֮ Dp#9sl7[gŮ4'viڔYgރ5n 2 td F1Ka6_G ðIDDDD9+[CZBkgkv[W}iDSX֑QMrR(\X|pSlp- ODDDDDi2ݦD,]ikpQ Wf:[it6Me6WZLbml(P"""""\l# }b#r݊m'Z&d5uVۍ$DYTʲ iE|&6ib>usԬ׶6Ux3(X_}ۚ~k-Zkk[%zk+ߐ X6SxYfK"""""svUV[aـ OUbirAuUشvc80)'vֶYhm9hZ+_iQJ{!6#[ w.cΑ`HVF^ϖ&4sNg¦ؾN[lˑ}Δ!""""q$\*c-9l}X=˖F]^ DDDDDOl }ֶ9YV`pʰiȧ#yMDDDDԜٛjzMqu$dkOL;+9;\w. oOtfzŬ1. ̙{[::e5};68b@BstXGG-XC&*54h9:czlCso 9 %I} yS8g+Ȋ}M6d6utYW?QS,39+B&A!mjȨ#s \/YߩcׄL{Ѧ~g;s,Bg#u[xsPr"; IDDDDԴj!SjB&gCYEȽOCovWo!J"""""r+պ^B+ڐvoq$ܹ;`X4X""""Umy!ɕvWվ%""""jN pu5 _Cn;o㉈'tu( 4; OL^Rk+t4jj!1OS3"""""1`@ Mj?5GL4j'"""""<<}~i.Aȗާ/[RhKs 5hӨ5iWsDDDDD>.`1hb_QC5pi. 9 C}#"""""b!9/""""A N >$""""jz*!DDDDDއA,]~eJ IENDB`extension-manager-0.6.3/data/screenshot-details-dark.png000066400000000000000000002073141477302130300233110ustar00rootroot00000000000000PNG  IHDR>sBIT|dtEXtSoftwaregnome-screenshot>&tEXtCreation Timemar 11 feb 2025 22:51:25E  IDATxwT6鳽"HSwQXS޼Db, PQ"wu9;;}gvf+ƙӟsa}@DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD݈8u=rg'c!Q y>C:>#"""""C/>""""" |DDDDD)N0\ODDDDD j:W:98ϵu/uLa;HCf[f[ G(&\e4 ܝ+j.4+?W"""""N`tsHZ3W;I(>["""""jJmd5cktP{Pfk"ϛ\h@ =&lvSjׇ#j/wBDDDDD3hSJUefW 52[ m JϘB -3٭fW Am)G8}+m-`H`Ԇ ;\ڜuz =CfkBy@!""""ʈfz~-fWCmP'&MjC w> w;uLe"ym 6`P(ӻl 2C jXm @!""""xNKoBb4g(*lvf錐h:n$.:^8߻de z:2dkJ V`C`%"""" _U>j) 5a;PB~lI1(u}BL˒׻q񾾿c+TD*!Sy?0QJsZg5T}][͎B@ #m󷮵<XZWh  ?CuǡnFaaSQ S!S ;0J+DDDDDԵ;0:> h cocdOёA3+P؃ "R0`LV;Aa,H4g\,I.ټ_7w7p *b)a]td[j63X@52))).''AP,)vYr( """""  JJZQSSgl~ 3XiQnӄGp0&d 8h4oVkb$%"""""j!"4 jub˾};?3Dzfb8æ]=j3C 5 wň(c&QoZY{IDDDDDAɲzZ=+3wbYY:3ݻfkѪ dV/.P?L3dnw`0 I DDDDD:IaZP(G]VV  ~ޟ y[+Ͷf Me#Fh4XL""""""_6 r`Y eeђIB ޟR-tٖLMf}6++6OG CE$""""" fARHNN+*?Qe0OGj=ҷwmunzLLLj5ͦv("fZ㉉#{jE p3ڵ &[kN.h_@wjMȃjMɻ^992͟.Զ+PF_r@|IX,|΄] I~>-кמA370g ?haO(PW$`5>]&""""GP &&ZvQVV p!l28âwpl^({lЌ 6b ( Ir6%"""":Wt:"jj)* $ܖCas ~o]Bigf?q}DYQ;#..mHY!Ht7dz Cթuv $ѓZ_MJDDDDD=NCLLl牉NkˡdPF g]΁+XNRRRtg:DDDDDEP45X(HNe3LuA+ЮŋƐ!hRDDDDDDLL Մs߼Z6ӥG <n_Prr2_"=z wyw{]pNatHhڶj$2MJ3pYTup6.99c?FTVV刈(6xŸ~ZW_}u xO":w+Ͷ9DL""""ER~q > D$&&ॗǨQ#Q\\ѹyl m^hT&T:xQPE^,(,,@ii~G":w+(zJ&жj爽߿:nXIDDDDbPQQ DII QXXr/~a۟{oEqq1.| >bѹ)A#rv DDDDD] l~E8|0.|gQ]} >Ç(sіQ#FT5~C pck趾]Rz9vg]]]E  ܄ʨ_S(HIIisWWWpoBBo2ϻe%mtݷm{^ex @æQtYx-8t0 vvIf95!sYO]jĥj,Xp3v!"""":g DwIKeh.Sj\yUY""""s@CC#r4%tMm9Q& Cc1a2P"m9]:M""""""`$ɈELFCCAz<Պhڐ10  R W ]z.Áz hTj(J3fH  f(}9LϮ4ڝ``X1k%:Ng>,u3 DDDDDDU DDDDDDU DDDDDDU=hr`!"""""ꉺuAM""""""*M""""""4u[f""""": &u"M""""""*M""""""*M""""""*M""""""*M""""""*M""""""*M""""""*M""""""*M""""""*M""""""*M""""""*M""""""*M""""""*M""""""*M""""""*M""""""*M""""""*M""""""*M""""""*M""""""*M""""""*M""""""*M""""""*egA W: J ٬0448U|Gԉ8y8 KR'ѹA ^t4cƏGv~> VZ R BQ!@TkJR!.>Y1``X ǩDZuFڻU0|DDDDD=&u*J8`a:z$ V Qߺ[p, DQRFbbȲ~`q8~vo݆vѣhfk$"""":0hRP( W.5^4 YYt!Rs:P ݧFgU(+#*EDDDDD QD\B<.;]q9A7`4ۮ[XL9.WK>G]m-qE &u(}L yEuL0L =|j^8݆qS࿯;wh0DpwDDDDD(/XŒ}Zr_ ^̺bvG(W޸h\w(qqP*P)YX} 4Z-RQ4h **`4 ˁNբ̫$8>߁zWXk?vZYINP +;\53. pxEٵ^DVvC]hu: d$$%O?Ù'o4])J[_' >!o $\du OST黯1pWWL*+no&&B^poǨq㠏 ̵,?h 63n#p76>M F~ee$"""" I "$"zgg㮇AC|iy>3P۶৿DANÝIDDDDD'hj陙}<0WX$da8a\}L LK̶<nOî]۰bR :DDDDRcbpa}d__Yq vl`v٩Ov7y8uR=n妀m6+p1,] _~VKXBB{gB$=[K ]w݁.0ps6mV'M*A1p0Lt622z 45J>=6rslYgؾidIjC)mFɓ}ЧOL;>+;v5uZ_LIki F$áW =лߡR[T²Gmuug|IIIziVX[}}\0yHLLhDii6n܈w}Gsp}x_-k׮ǭ3xM7-pW1b 0/0~8 QQRrk׮ogΜʕ+PTTZ~7)HJJwރ[oz3W_(륗ƼyW"//ݻtr|WAOJJWEBVVPWW{a/lrvCw܆; paӟ78ߵOCCFsZ%\+yHOOCmmN.ʕKPSSߞ+9s.7߄fx뭷jρȝB2}BNMM|L53h7ekzOOK6I5ֹ$J6)fa&hF˸q\񈏏G`|< x:|֭5-ͽލϼ_"|ӟ|^9"rW_F~ER1mTL6r#~TUU?e$KJJ L)S&[owjrm999xE߿4aȑ޻_=ԛR=܅G}صNb1;v ^ze/}Q!"CfiZL&lRT:ELca蕕+vRebɞzuZF Q#^YY?t(z}w}%''7^ 3 y!tɻ&8-xy!NRϸ˂^ &G%d&''㣏 FMƍ;oVAwjRRRGLox1vom#G ÈTV":w.BG IKIOÐQZً>|cQhC v:؈z ^c v`sot2zRBNw7oޕ{~߄8m{[l/.h9o/K.J/"uyD 33gÇ==ZM=F<'On7sh‹/.‹/.GOQ{Nrr=kkkZm_2 `-ؼy F#~< /h4FT.Qo\+c`֭[7p?UW] X],[ý͛wokWo~-^|%_oRqE3=yG+];w3ϴ tM ˯@$̘1 {{No駟 Gܹsꫯ㥗^q>ӛK[zzf;vba297geS=z{晿7 Y1mT+ym2\ZP"oGRJrX9d@d8djNpQBMAR@EhT"J V)]) IDAT Q *)™+2e6#Vō2'c,&Lj%T ϓ'`Uρ> 55ˉxt2ݻ}ju?U:s m+ddG}e:I& xߺT[L>#VVVyL?;Wjrr2{ܓhϿZX,x̙38s%%56mO_7ǵ^ JZ7k̀Aĉb@fwXGL2ɵλȝBzHIIIMEv^4a4dx[K[땨WP 5#4͎T(6J #]1,^Ơx12t@2Pm&P\U]f1@L -ɀ$8ZeDAWV<$"GX.CfϾ\#_cE;wSO=ڵ; Y^Rq{+{E>߿ߧL~~&r]Ymvu ؿ Z};泮@Kdmy2ϑbSD!6!!y3MBiO2JUP!!k 5V `}8%t2'$#K'C'H!CMa-aC p B $%3ʀ, (Ո KH@v wxN:t>8~)$&&`Iw_~`6II!p[#Ԧ˕y|}}}e WRRDzd;l]\Ɂ[?M'MH\cbZсOzlSUz`5jSV$*VX_)c#!YAea`Ei 'km2:Pc HNjt @j8$ٳM11蓛6“9s<?o{M?C(Ɂ**u*U .]7kɓ0h@bԩ3m:cǎbp6G| :9wf6mz6jLPUUt| r]<ABV{4KMݝ={FDDDA"_V@H2`KXẁ֝ŁZ R,@J,0EodcfgNº+ 4;kCXYWMhU@Z*(mme@K0Y%HgsZE߂6>544Į]]˽{g|nVXY۷ղ_?*dYF~~F[n ph0e$|񧭞-.l+hfʣ_ߟi{TZ,Xps󖕔`Ԩ@{ 4ct<ԓ(--ř3gpT yѹ%%=A1aOu 0㈈:Bp'h? ޽q&h̟ /1wHNNš5Q*1Q"U Vb߿j;$@@DҎY-HX{hB V#6Ahu@j}9Dg{^]JF^?Y,ŝwjBYXX+c{yyk r*111x'h'?}G$I8r(>S)))xXE7#..x-OjZw=HKKŰaCqaʔ^^MGyȣGV:u'[q uvQ:k4)"<U^Y_:;dwR+cꏡR0ydLIBuVصRZRJ\ubz/,VTj@T"5WEٳgmv=ʵnBff\W_?r];vkYV㭷Dcc#4O=jn67AVg^g8xv؁wYq5WFHϖ`0`Ѹ䒋<DHMY۪ }=OZSOb̘ؽ{q5W!##õgx>s'7t#F#GLd眥 {޼+]Mp?:SEE%V_27+e(((A=9} ֬TDDD1hRD *~3.aoOaɀ^JgMhZdeeTBJA\.\M} X,H֋PߑlEIMV>w;R 8G}<}GAYs VCCo^rT;gfVƾ}]۶g0?=hڵ/{ݮu9x_޽Ï۵L3̍=ՇQE̛7O50b#<ŋbdȐ2dϱGe/ .x͐F}cƌh/g_Á~4_DDf×_ĤIXGTW;t:;}Z`k. po?CqP(PSS]vݔ5??ÇEBBF#Ob[Z-&N<}d?os" RD>s53dl/1dQt6imlÿBR6V2S&:O?1% $GywQ!BA?l?XSjTTT;BYY%KbŊ/#IzQTWW|ا6Y>}Z=g4ࣀWz7ou]|2v܅E7ᢋf֭0u \wݵ:B0ͨ?oҥ˰qQxؽ{ΝhL&6$I /Z믿ǏGff4 c.,__>ȑ3gfϾs\W%" զMQ\|q暫TY;P\\ݻ 110MXv-fϾFk׮( |Zh;vuB'AI?eM-aDޙ;6iiιr%+<ةM[~T|B+׉n_ۛ?+>+GG)ܳ Q M_B**V$ZAQ i 6P» 9 P9CpNDDDD-&)Qg-kŋsPTX|***1qhڵuɓ']2334CbccQTTd"99 :Vpu ~ɓЀ>ĵkF\\\أ w$$$`-Dܾ{;<Ùs Q;k4)"6FZMR@N@9Is=[ \cP+׮}4%Y}͈z-ލ\~qJJJзo_ ݻ7֯0gPT(.>'O`0 ;;;R`W|ˮGVVfѮW" &EJ)+C1"K R.CۜRц?vJqR^TnV$üuWJEEņ  I2 菉'o_g>_vv_T*9r?lN;c4 ez0+ f3Z-DQ@Is<Çd2B\\PQQR&E~8Q+&0$?aY4UZߠԲ @ .4&A 1v;d쫃RY9f38*`>O;Y64Zfc]ײspyf LwnR̙3wcǎ?~OuHOOdQYYJK.FEE%RSS`XΗM^4)"e蕕F5ʼn3i2ȵ%0ـ$@$`5:_/r:g9 Pc- GF'`6f:3U^Q%2-[HNN`Νmvq& > HNNΝ~0`@`]sT8p@nnvڍB*99{jŐ!ѷo_8?~7nr߸7Æ 1x@ ADQDpe"1) l~IFwCXKnpLHphF$VPs?Bnڣ7usl^W_O $""`@:= N; 9j7EIڙ:GODb=w/… 8@}%2 p_`1qر0 DDDDDtn(tO` c(bt:h*5Z蓁`@ބ%6C54#0 ZRr= 8DDDDDhRDJGC]$Ir<+ >krR<.d XX&8 }>HU؇3Pcjk-RSj9Tlj Ih$""""A"r Gf雙EX{&;uȢ[h 10VB֢wGgO ( 2ٌcQSU݆Q{e {򞧓-"ED$'V;C,x |V"xdVLBRpXc`> H6:~`7gա0Mf:b=)sY@mYi#d u%m>GhRĎۇ#GѷoKMoZR@N /HEjl-9Ѐz3$s%08@ D0(OS[jMq^_ywȔC]]DQ޸ T*͛#G`Ŋ/QYys I-[CqLiTODD]Bt[ϐ(R 1шvidznl 2gf ux}}2hBZ![P8GUhM5nW%g\k`(1 ]5 5bol,>>Cvl4골nj]ZZ N1cFG4 zݏ3gD~ɲ5kkQcZ:ݖj"PIQqQj5:-M85*̕H#Þ3&ԛ%ntuH64eAԼl&%h ih k1=C,?ZSG3l.j }kɓPXXzs3#77pa^5T*x>c׿=ˡVaZh0mT ԩSP4PҰaC1y$lܸ &MDIiL&1 p ^zhhh@QQ!&O7`۶m筐e7h0}4WBY=*++qw#))0d |8v.7n֭[1cݎ#God2'aQP*8pV\ͦDDD݀$I0j]nl6C% qj9YPNS+$*1m@fĵG U v$,n)+dX^(EqZiZL19zd'Sx̏?hԖlV+N8 VP_AͻF o6AeƴiSW+ _ޏ~X;v SZmv^sUPT`X0axT<|ɧojŏ?n…`ٲ8~F#rqUfw8zRSSp饳kw545>|)f ƎoW_}o͛ Itrf`_FS/_cӦd̛7g`ÆQp80LPlFʐIQŠIQaPUV.üo2) B`>>f rU N@Ncr8Tn'8ZiEeFL6 V6$CyS(E@S HQ#3A8 9jh4~^'2 ~RTnEuD۷ w߇n,0 0M LwX)''xW\rx2d06o:vX,5hllĉeϮ㪫)S&au>xQSSX 2,d2IǨQ#aٰtr?)x`!q@UU֭[Ǟ={àIDԍ4l* (J(">q# v}2]0hRԘ1j6`#ܻWz%NJ@V Y*\PZl8]kÉj+NPhCY!C!z1 d%QKd5UH+[||8y0,6<0mڅ(**ɓpazwI!dYƾ}kP瞻Mʺo^>}>y54vܙYYYYx}6[ [p! ;;Ǐ[?=>GuYH xזv~a-8_3ض6cNZU$]X*+w`//u^]2EBR|TB!@WM]2b!, zJw r Zmkl6+bcc=KJJr}EYYYhll֭۰d0v>Bkee*++Q]]ʡ`QWWzCVgΔ"!!\* z, 10zhKKːլpLNNByyye&""""4OGx IDAT)L~\ kW@C]$Y8VCyIaG^&YFC]֭XV)@V]]r̚5}QTT Ǿ}]D>Y7< &{ݰaF4kƨQw NƼyW"''ٸɮЈ4r}h4\q쾸yѣ.3a4L󻏿ρy>23 `@Rff"wo(ʦD Q Yd4f64xшcFyII J#G`m0Lv!b 3f  K.CEEW^ƍ<E'N{Q[[ Eyy9FI& {Ú5߹Tլ$""""j3MjwÁ3X?[ɗ]\Z? %MYa1q _WBUi/M"?"<~3|_=}x^{ Ν<Ȱ1x ={sssuolQ.vB躎 &&&HUUEz-agg0 qC4.EDDOb Afggl6HEy666T*Z9jxwgg݅z?q d2|k___;666nl6oCT~3!^{5l6֭[׾wy?s?>J&IDp&#`,­[ 0 EI7 !cz=ܾ}Ji^RmmzJT*x"fggEsss|2XXXim}qbo~xW~L&bK.4M<(W[naaa`mm ayyngϞEXDZ.]N9LMMt=r DDlV zDL&̙3@^4"q UUi.\CUUe|[߂(gϞi׿8q5\vM矇XYYLAEQϜIDD_ߎBR KMP*X|Ea0 CwJ ˲Ts5U/""'&c 8DDDDO"~NDDDDDD#ŠIDDDDDD#ŠIDDDDDD#ŠIDDDDDD#ŠIDDDDDD#ŠIDDDDDD#ŠIDDDDDD#ŠIDDDDDD#ŠIDDDDDD#ŠIDDDDDD#ŠIDDDDDD#ŠIDDDDDD#ŠIDDDDDD#ŠIDDDDDD#ŠIDDDDDD#ŠIDDDDDD#tSQ! CDQMӠ( }QA8!lGDDDtR4DzX[[C""TU=ݝ;w{!͢\.ݻxWَ0h(PVꫯ>k… X]]ٳgo㣏>,8ƛo|G8s {9hy'""O"DDc"cz]9s1尷nK.Rjj^.~m\zAN? !4M3<^x\:  `Yfgg( <ǁ(8wb$"P(^@Pr TUvvvP,`&Μ9۶1;; 0h4f9WN&јBu]++&"""g_EDDDDDD#ŠIDDDDDD#ŠIDDDDDD#ŠIDDDDDD#ŠIDDDDDD#ŠIDDDDDD#ŠIDDDDDD#ŠIDDDDDD#ŠIDDDDDD#ŠIDDDDDD#t@qPBC !DZn>Pq#"A!4M%:/!y0@u(rh0 (G펶7oaò,y^BXuq C۶9d(lCmڗ(vllElODQ`۶e}? G{_s}tܹ'm~v&q 95 Ca0m?~ DDc"ct]ml6 ,K~(My>E`08v, T a^n# CEX%C\<h@4y 4۶fi>L.2 Ǒm4 V mpk&\ׅm<ve!mzp]b0Vamm +++PUG6: Àh60MQZh4qt:! !lz)DQT*n8f1 vfj8WI[z8Fa#J4Mt]z=4MdYaO0M;w,x8|N4<ϓ #JAQxMtd7M躎(c0, va۶lWr_E64z|߇(, H0 ɾG DDda$"“И8111M`&099v DQb]\x{{{0M Cܺu SSSZizfQ>\"+Ykkk!A4qUY% \{{{HRHRf6668*0DPݻwdx wEz* ǵZ iݻ*~#Nckk R ? 2(mmmZbrrX,vww:&!޽+mX__ϝCRA@>d2t:֖ ~\`mmMVm`0>8j @ل(d2y&4d{4MCC&ښl䤬pZ-Z-  A׃mpV ncoomZ"J ÐmVC^u]}躎NM%E&a% 9DDcB]בJ055%O*^Ow `ggR aBCQUò,8$ !P,\./v!X(Jd8}f0MpG7 XZZB:$Zsu]Vtgff0550 aY>m&HCUUپ)e 4CEE9de19y/F d@R VPeq9lxTQ(B&A^벿5M`0@rjJoxhpp]vV |pd||GP!9puGVJG*eYm~ѓM"1}]aB900==v9t:={q!P.Qa6 @*mhۘu]j5}qd?qcyyB MP`6Ν;` CF!fffKKKhZ0 czzf+++r(( 2LMMAQCA}'C1WVVd d2HaXA1Tmjfa6Q*` IE79۶! vwwfa:BR^r,_KUUe9pe4 E947a(bQVi'''(QUUdrqqFBlu]Y! BuffjL枹DDٟ)C{gïBD{}ORD߃ N8V6~ӫ1#y}1}?CaEhpQUUAfa[tnomq6=Z}i\4A_RUz^bxw~ö DDc"`&:8fff1VEY۞!NDDDD'AhA]ض5dYKRL.tj]"Y'$""4^#HKV;fV^O.“N>K@?ID4.HRxvqG)T*rHDDD0hZX,P(@Uձ[œ4Nd-W$""q¯hX$"CGy _Ӈxc$"3QK&ʰi9% _COkFDEID4F0D`08|nF{{{( lF\>s]0DEuX !8Ld$"C DDc"caOUPKDQ$Ci2XLi|&80 Ah Q`q?YAR͓?y&$ѓA <axÐG/ (zqGݼG*'磻/ 8}<'A[KDD=!~_h affi""}d2t4Mirhŭ[.\EX|0D&XXX !E&>JEr!$(}"boobN+++zauu>EQ:(yx /X,> caaBdUU1 *4MyPqƍ`0~e!AEQBM;ȡ( @E}7n@:ƹs۹ѣǠID~YT*|_>:/">nܸ{ap]A|_3<xPTP,Qa&TUeYy&(7/BܹsW^A) C瞓Qf{*o@u,..{,`uu~?O`2 VVV;X,c ^OL&uq \x7oDp5i?ŋN;EҥKVD&eYO~N:qu4o|*LD"&A *~iO4o~wA›o|>nR$0>3a=,//T*7ސUWT*e/_~lA3i{6{g+W "4 !<σj4 .\s8j [o>˦i⥗^Cr9T*LNNBK__\N^xf3goqJ%TUy}m|>F~ua>l7= DDO aX^^fffp. IDATܺu ib"6.\EQfJ\.ڭ*p\.͛(d2HhZv0MZ 20LQ=Gr &\59,9i\E*B>$JvvvE&''!Zcm{Dz5MC.oT*v_򗘞F>6\]בfa4M‚bj `lۆ뺰,Ko6MǗ%8 P(E /!\/ ]סiԎ8eBq!uxB9 }*,lۖ'YqJ|gΜBF2:±;%OAQNN&Iǯ3_/ :nalI^^qGzqyP}l6ptq^t~DDD&јH>K`@:.CDDM"1*R<{쫐i Ɇa JВ{<}RUa"1ŠID4F*i m?jG)FzCKiloxDD&:4WODDDDDD4R DDDDDD4R DDDDDD4R DDDDDD4R DDDDDD4R DDDDDD4R DDDDDD4R DDDDDD4R DDDDDD4R DDDDDD4RI7 QAQ(!C=/"(QAUՇ~>ѨID4F(BR- ~*Eܹׯ# GZ"""㱢ID4&f^W^> 2VWW. @A׃eY[oBQpEh'""G8DE`0Gacc.\vwwE}Y^1==}!:~nW^a$""ǂCgƄ((Jzܺu O={9|x3ٳ<2 Ξ=\.˲^T |˸tTU=3$""/ ~MD4&r?bbbrA`eer A\F>Nj/|>q!}YTULNN"cj5EM"""zl4Ƅ\.\.z,=KKey̙3DDDDǡDDDDDD4R DDDDDD4R DDDDDD4RID48>&%!I7>&јX. B&Q!"DG$#A@4( g#M"1L4>8F}BD44DR4 tsVRaOD4 ɐIلPDD4X$"IEʌyUU12FQEEપr8.((Ĉc~PTq3޲Q "ID4&W[[[X]]˗//xWJ!<Í78/jC2yLӔVQC @ap8"L FƮ{ @Qpl`"µtE"ӄAhq瘟eYĻヒ677177N0 199~x7籶z 333߇aj!Ncyywޅ뺘CP`Ф?==ѽ!SJ+8?VVDJ ":4N lll`eemq(8rf ud2i0M¶mAYض\.۶Na۶_*'Muxj1e k)|y0)3 Ryk & %":4Ɯ/"^xO? !8ŋvx/8}.]pPYzV#L5|K? /9lh1h-0A I1̃9Ț5=bK0^hJDD#ŠIDt DQ$W=%+&8m\Aq%tڄ H.rt ;=|AQ8/z\7|>;֣߾!i_$vI C<B6u(Ccc8FX(e" DDc.c4 j5b(>TUB  EQPTJ0 4>LD>4MDQ`wbzzTJ^l""LMMVa0`ww/^i u]^Ӳ,(~qNiB4}h^V%/b6(͛7155UU1550 !666P,TUU!.2%}!@рiuq aq!(SU@0i8{{{CEhpe ˲h41 jP*7EQJN}LT\(wB4ۿU@6^+s&Wh0hۘ&LD`0y0M X <[[[PUT*4MZ-q]sΡh! CmJdzLD^Gd2/?nx":vNaY4677뺬R)t:j<{{{VGل(h۰, zA4a( fVO+Geny`G׋p@,~n"|>f7F/``pY"S B0 JFBLFV4|߇8m2q,+\V QX,ʪfRj2 rܡa0 8055%+m}LLL6꺎vv yٶ Md>*>CY!5 Qɠ!|߇a2Zbj EQlۆn b1 i}I; d`zwRzPEL&˲`&|=[4MC`0pP0JS'4gY[k*H5*w7߿ 4r/mBDtID4XXXa6VVV:aYǁm0MR Z gΜAՒq]WN˲p̙Cp0D6aHRx"&4M8rl6^ua&2 :d{ Àiفiz0M^tZ^<΢CQeA4y<99 !t]mu]( pe!"LOOfffd$s5Jn8TUE]GQqNe !&&&i(RI#g6u]_]8 qT*u8뺇^'!\( ṝEΜ9˲JO!¦ұTScĈ)* DD&QSպ_~~V`9| !dE}_d2uϻr^z X[[ooa0|2z-Y|wE(/~ . @6=3"""/"$"B7xJsssBƍp]zn•+WnqM\t gϞݻwqER)E\t 1n߾}ҧEDDD_@h EQ0==@EBڵkwNRgBu~P_U!8__BQ$""ǎAh$AQQ>p*\ų> UU!]UU퇈0h?!h +DDc"c A0.Ca8>t_ qCUU*iQɪhvmcwwLe!cy } \EQ!PUAv%R a NCUUqv-10JTUϏaʶ&mFC)EPm_r;dp_ t]h]0DEHRV`l6+,{h4`Y\וN^礿Z(^N DDc$ @VC4666}6lFP;wde4 u]j5j5dYj5A cI *a"booPnsss2,MMM FE򸚦<^ y٬j5h > ÀeYҒt:-'4M(q%Un UU6ÕX˾~:4>ױ$C* *VVV1,E[0 qm^FL&{!ɰV*ELDݖtkk bv[d, {{{T*p]nzB49sd@sBò,ܹs\.c{{@QZ-eT*֭[󇪜Iwkk F333s>N/$"#I؜C]5M;45^*Uz!6Ey4 V0  À(4 alaa@˲jQn VK; 8R6% ?h4N#i,KEՒHRܓ (u]VK/ @W݆b}鴬%nooT Ne>M*ud{Jy+Z( 2 .|G`0iTJmޤR|ql6V%1i[ߗUƤ 5MBض f]!8^dxmՒRUUj`!yN^@(*|m2EN7V4L6E*@8iCEu]u]s Alp]`}}TJ+<iʠV.强yYK%ZL&#fSSS0  0ML Y0 $yy\ri… 2$;4osx>hE )~411100110 乯 !'@6rYy tPFq>xTJ嶙LFgx1=Ë$sJn۶-L?>ȅvg}I-@T_*_sM0 !HM%lY}`&|q~8JR WZ'c Ws8G;ss٬(}!ǠID4F(s\ERII.E:8m|AZq}(dV(VW@@^m333r˹rqJ];wN..˲t<$UUa(3J<&7ckk "!j5("oggL~$L"dY6GLLL000w}?BFA&5 Jf$377@DD~ah:Dž星VqbT*Jsss$I  J% B\aVT*\gy94χLR V*Z-pͱZG\ƶmx V5355R)n T*59~8 E45[8:ˬs7WVWq*,J#ty4 0$Rٱc(J=/~ٶaѼ(xFYe:<< L7˻DШ(ר( E!-ZeeSh(j4l^7 & CRԪѽj84F.Z*댖LquݸHZ9UE:998mcǎb}Nꢻ۶}L&y\١n~!*""kAASDd8UgϨALTqZya:J.+DMeV6Y٨fe7ڕV{Ν>}}}9u&/+;FweG9Q@;Kkt?QCՕnjBm+E!> uEK ~O5Zٝ7?/Z>f9O}_Wv}%P:~}ߏh[Yi=Cn?S+_hCDDPYGV繶ig(鞳rm>g۵Tlηw'|v{k8щ;xѰxg-VDD䥠1""""""4EDDDDDdM)hȚR5)""""""kJ]gEDiZzQ'v/MrK_ni)+YywO|ΉQ :TOyeyR*HA뺄a8 =ݻiZZrL&C$ &RXEĶmZݴm:\v/ɱeY1&F* zZF&avvݻw+h)h$l0 I&up]GyfH$Q.) l68e}~1dYfggI&eZX]]]LNNdp]cǎM*brr8D.--jbffL&CWWtww8|% }}}m("" ?#eaYmcYJT*=zxi4l>m3??qujCr=ϋl&^L&mL& Ðv84 <ϣntc T*Ѱ }c yejp ÐL&8ض9xEDDd-)"Τir\\u]|˲HRl۶ u<d2d2v|a L&~^oo/TY$ 1mFբV166F2h044DWWD"l6eYd2j\.G*Vh4$* p^˲V4 U4EDD^4ED֙\.G٨aNOOOgVJÐ0R;k ,QYS ""vT1J;{򐴡҄<Hژ9փWa_ӏ9H؛*`tЮ< 50{(a,,RY# ""vB0GEp i-l 9BlzE0:{ {SraJc~r,gΕN6ڴK# Ziqp].\]}2TT*u[T0 PWDD~!(hښmA`?;30seB_Zf%hy_} M|SJc~> +f0OiF$dy&JVi^x*sBxسgIA3 C&n) f5Yg4EDdMhB0I!,`/ ;M7bmx,0NhrSs)' Hf I$]]],--nI$fɑ#GشiS0erqYvV9feW[N5֊δV@}QH؄aHqvM \ȑ#d22CCCdY14M ΒdhZj5e~~۶ٹs'd8pnذ룧۶m;N1Fk|+XIj^n$!zD09T*cE K!&;h':d㏠1@ro"|yt@ jR>8@`YBuq'~Mww7ccc4MR S(T*A@oo/˔ ÐRDWWש_JLySe˻.a_ꊆ<5]7ק&xBlN+$NaWBcK) \dcH}pl_Jw~m;Sߏy\%fff#t!$ƘP" N~3fffN Z*EDD-K;Ø1G;h-6<9"|m` 2.Ǻ{LHA r ΰ;FӨj~ pC`aeYSVmt:;b12Ekl&Uaw=Z/SR.} `jjzNTn?KjfvvifffXXX x (ͱok4SDD,)""koBc7;f6,/lpKSlc&'aPjhW1MH̑ l S vW$6&4+Q5sy߿m!f˖-,..p4Om|>ޖH$ظq+aH/ZfW=V,--pO<&''' C,t˲V-PT8~8}}}rǹa4Rtr6_g1s3ÌA`>M%,ΓUhCqYH>x.O{i5C) u[!\W 67L&m9nfuдmSӨmd2zzzV=q]JeYVvn&s嗳8EmۆeYLMM@XC"`nnR%\WQd2/*""|4ED䥕~ l .yG}C,gzm&)'-m6lY$d6W rA~vl5츢2rwl(]K.Vm UT*j5"ژJ>}}}' y)(hK!,i3MGu6!_'wObCAR'04t:\Ӂp[&n#N#^@Њ윸ZZ}x j4M* }}}< MXd``j |۶1ưV9rt:M__luWizzd2qSJ*""rPG"x}>=1Z5>/zsU'6Y2!c3Xz$ 8ˁ53s M'f Whl&!P8gǎxG^9~8b={!O=Vy|'q!0L$ڵ0 m8 ͑L&yjƍp""r(h'm\O橧"Id2\%L277Gww7Zj֭[ȑ#yq8F!}D˗@PTI=jds+ ""19?{{(2wm(\re?6p!! "Yh4\nMoKDDL}EDKox-n$A *d ;߹B7^v깎~ZaR(J툈)hȹg $¿:]c鄝;c!.Rww7;vК"""kHCgEDdH /C6&< ߩd:mw}AeWæVDD&ؽ_!,W5!F2 /ƀ ܺϯvmD@5\VDDD^z:+""S"M"Yb^pDDDy(he :,,\_MYLg.}CDDDΆ&ȚR5)""""""kJASDDDDDD֔)MYSZDDd Ð0 W}-je9"">)h3aAie'eYoDDdRYG L&K)OPY4ED։0 }c TJ* ?0SSSO.wu*NW_ ""1;v9tjby4xhk٤jnm;nY\qh6aH>Ü9r~LOOǏOOO3==MX$LǁH&Z-|'4r0 CCC\uUR)vÇ q댏388,D .c f͛7h4 OH^|gbb0d֭$6<+F}ѣ L&q]u㟙h(ZE6%H)" 0::(###w]d2ln Ja);pnݺ5|>jd2\>t q룻[K/""gICgED^r\,iCeYL\.G:&+dD˨>??OPGevv;w255?<@\ٽ{7BjJfllCh4Xo|I&oeÆ EDPESD\.nZ5< $xmdZ uIRTUZ-W&xmU|1ƐJlre133wzǏH$8,~"333ݻB )uO:޽{ٸq#8~]yssa299I&}jtVE2СClڴ ˲cqq =]]]u 6l Lrȑx-[(ˤi^СCE.P(011W0*cccs29dYt:cHӤR)1\xᅜq<0*""x4ED^r6l,:L7)c$l6mT*(===,--aY>]]]KZ%N3>>333twwCpmh4p]WU,t[WgGDCASDd3066c۰a\%N 6d2iYøK..,Q,ˢja6LD"h,yy:tZaADDD+5aݽ*'O2FXZy̨ˬ<MW3 |ϷFL9SZGSDDDDDD֔*""D>DDDD^4ED֑0 j.ò,1g|GE|' C<㡇gVqQZ u];khq8Y/4EDd]'?8X֙{NX1\}ռMok_At1qh Ðo|={X"""璂ٶM6exx۶Sy^< R0:: td6ȫÈǙCSSSܷV}r9n0g?a#w ""(h/0 } hh[uVx8c}> ?0wK_a|:MN8Dc̪%RDDD~Q)h/49~8RjJR;z@KKK񚔙L͛7H$7-ˢ^ƀN3^vM,,,099ٵk^94EDy|K_s籸WxfIP`׮]|eӦMq>]k ~'5ַ1EDD-MYl&H<977wU.)J#+K?NIR3:: ffA d˲VE&9iq]H$m[˚Ⱥ)""W_͇>>y-oF;3jo?~8z+c?袋p]a}'?3psWw۷T*W\A*^94EDdݻ+袋Nx*:cmsW׽le/p=>==E,-oy gqV%1-o+// 6l8mдmk7ͧ}u]Go""JDD֥ ⮰ez*Ѿ؈1d2L۶,+<$DqA@^C"HCb1A˲8|ڶM&q|ߧ^jc fsa<sSg@ASDD֥n}ŕ3uرU_Z->/T*'> 7puױu]Ƿmj}{9r{ᓟ$ccc߿nL&򶷽YnF1*G}cٲe {ǧ?iGGvͷm~=geDf3_DD夠)""8$I:􂎓Nq]˲}Yy4#GP,}16]]]izzzؼy37oگ^{-zO}Sr-|K_"NomO}1|I/Pשdٓ!wuO?4@NÇ[d2 ooom|^0ƐJ^t`YK ""n8a.t:nSp]7^gret:m44xXmی022B\X,Ocapp2 b˲ahhIxG^T*Z^X,R,WKfqqJmۜwy70::j[TU|Oݦnc!čDDDMY72y޽n˲{;ꫯfLNN} ٷoeկ~mW_Msu]>:~;m>o Co|Fc"yܡ!j6n%\rF>?yd2og˖-v{wض+""r.(hȺQT[h6kŲ,~׼5aƍl۶ v۷/| tM "".)hȺh4XZZ^SV Ð0 qT*c PX\\j1;;ebB<^d!Jy4ljJXP(Pl<<ϣVNbH">* g˲Hd2m*u]IJ,<@ܩVfEDd=SuW~Wصk\ݻw裏b77رcz뭫֚t]7|| :w5 r뭷_G<ַV~>O8rUW|>{^ַRwEz{{'>A>x{,EDD^. ""m߾7}N ȑ#ɟ w;g7~7x[ ~* ۶m;NT*>N$n)L&x;w2??ENiZض+' "".j5fffpL&Coo/fjJ^RkmFX3T*Q.T*jJbq0UX\\<T*twwS(HR,--K*w V ՍiNãj1.,AP,m^,z\.Gww7LJѹ1D"Y4EDd]7W?瞸JiYc>˲ٻ&4iҕAe" R!*d "(C LE) 2TFUٳ@evAw4GA )-|ǣ&|,Oƍ8uZ'oB$B2OMVV7333|Jڂ7^OrMIl6 77<t:T*2xx{{5X,vSؚzxxDjj*NNNx{{f5PոHMB2IM!e8p .]bݻ3tVR)5>>>ԨQ#OJbѢE{n*xzzX`<==Yre<+W @*Ux~h 85g8;;i&&M}&B& 4By4k ^/*_'jBjԠA|||ؿ?ǏGRn]W~z͛IhIڵ jbZٳg]YTBZfٳO!^"B2|򄆆*שR :t%***OǦMR\96lܗ|Ps8;;MXXNNNDEEqeϏ b69w2"nAl5\rǏcZqqqM6XVݫ4k/~i777bbb0J`0S!(+$BQ&5i҄ShXr%**UcڵÇcX?~< 6???h4j<==ܹ3իWW >IOOgɒ%xzzR|yڷo+B6 4B̚5 !CdO IDATo֭[.gΓG˖-ٽ{7Sʔ)S]6Je2++m۶}vʗ/Oxx85jP^9#4Nɓ߿?/^dըT*Zh9sa{JeW?vZe=NTT*<<<9r]Y9s&/^L8ZM6mhڴB! 4BIZ@``0`ZIKK#)) Z^MVVjtz% 4ͤb6III3PnA7wu:Z777|}}ZdddgZ1 䄇GiB!DY B2QFL6 B crXf ׮]c͜={WWWNÆ Z-m۶sJŋ,\^h-F?~]zjӧ5k$44O>ʪUغulxxx95z^xzٕC(T*ʕ+^/>B!JB!ʤիOYAqlSx c۶m$$${nvڅ^SNy Я_?|}}&qqq[۽mm~LӧOsi4k֌-[Bj bpQÁ l6sYΞ=D@@]th6jȮ7oBQH)MF,M׮]#55ł/ިT*HLL$++ ^OJ\5?a6v2Bh$66,]ƕ+WHLLzJ;AAAK~VZMժUX,$%%ir[lRSSPTTsqv(Bq$B;`*^Qjl2}ŭ?ĨQ:t(*g}sѤIϟsUFj5V,F]6| ʕcǎ?ܹsծL*wy={rE̙ӧj^_x~7, :uw>N'' 4L9V;j*`YYYT\Ʉ;YYYT*jժxzzGZhժ2m0ҨT&ly5˕+GPPjբu֤Z&'''*WLPPTV,,l]v\p!O>* ///LݩRRZ?F1ߠ~Losh4b2ُFB!r8N(n8wSlmm7=qGEBYko!(7ڵkpE%iݺu5MMLLܹsoٴ'++ HFFFhl M&& ^g$Ґ'^^^+W@6moSg!D RS3-pu1h !}J @,X,ʜ_|iii : .PfZT*@ٽ{75j(2fXvL&jTX|*/{nʗ/wiI2)==GX,f[[@S!s"\\\Ti&11~T)_|3O?Djj*ԬYRѴZg|>`|mHHH`ԩS#DSRAs`Smh !}.---Oي+vPTI۶m2,effr%ST\rZjz lXv5jNСCƖ`gggV+FjժѾ}{7+&33DL4ҌVUh !}. U@&$$Ʉ3nnnel> .#k&ܛ+V$!!AiJrr2ޥTɓ'A~B%&a}2"55gg $9҄6-4]-7MbKjgR윏Ԯ];ϾiZK5sssQFX,4(¶9?B.DiJOOJ%^^>w}& 4>cZHm^JJJ F???Qչ&/9 `0pUBBB0\pDjՈÃW닟R%b(͌oWRaXZ l20JhX,$$$k2^v gggzR(m`[7Rz#;;H-$Bfj;Dj'##x%ST ]v%h6nܘ;v˗|2^^^$''cX&%%&M $%%qyBBB Ff8y$\t+իWС] 4m;ӠAT*ԭ[ÇFN}Å۸qc֬YM=h #ЊhQSq4\i7ٖ۞ozM$'߽Q&VJͥVc7 8\!;;`֒gʗ_B& ^_l6cX~{~i]DөZ*j#G3w9mMFMH7wA`[VMRm庹/̓ܜ{>/}4m۶c4fە'ߍvP,]))IdeeΙ3Y… <_..xz:(?///0|[My?r-'W5aM:FS!DEkJs}Ht777̫j\\\0 X,[.PThboZ{MaϽ:miC[a 6/)f3DFFrH޼1L&S_ѯgϞR+%B@ʿeN ի|7h:ڶmVuxMmTO[MPiBfe2ȅeZ1p?jZTf;ab8^~y$c̘1ڵT DqI)[<s{ԬY77{) fnlP/2228s _`M#c[lnrguʅ 8p@fQnh !D>> nM!(&g$h;ռ: Z4wBq[ܢd'SBqG$BQ|ދ~zLk"*B!Q!}3]'B!]_4BM!B!J^dR# B!(en8;kIOOO gtYwwJ>!B!FF̌b: n2($B! juh:,3l#& ٌj@rBVhpv֢prRrɅAM!B! ''5n2b'`@B!B!JM!B!%B!B@S!B!CI)B!¡$B!BPh !B!p( 4B!B8B!B!JM!B!%B!B@S!B!CI)B!¡$B!BPh !B!p( 4B!B8B!B!JM!B!%B!B@S!B!CI)B!¡$B!BPh !B!p( 4B!B8B!B!JM!B!%B!B@S!B!CI)B!¡$B!BPh !B!p( 4B!B8B!B!JM!B!%iQZ'B!ҔvĽ/"b++WV[,9s kȆ ZX[S6_~9*Uj#G{|B!I)ɉhٲݺuW^%##VדHKK͍+W.5 FT;W!B{¡FZ!88ݟNڴmۆߞěoN*KRK۶_uX%B!e'7nbѢ֭' ORJʺ*g8~aTR.O???&O~?Sٿ7sΦzjvT*  9v0;wF2wlj׮SVMbbNs'ܹbĈU&&22^z0x eU0{L;޽;yݷpuucDGG)3jHbbNѺ#_y…  o]!&/4_7ņ iժ|\B!B 4E1L|tOvPO>wޙDڵpqqۛ.]:nZBB̷߮`':=ڵ V6m .Օ[CyKIt:]etWWW<.\p[%cUl"<Ѐ RfMt:嫯 B!( $%ԩӤPjNme֭ѣ;ṣntЉ˗Ʉ  kJxI4iҌmҥK\tЪUKz/ƣ>Aϒ_nuaiݏ7r;t:=C5g۶pZlA֭4nTYwEԫWy.ͿҮ  qqhZMg'xO?E˯@ܖB!eĥ @.| gh4rl ˗MhZ,Gݺu)WW^]֭u횓d7&rEv[o…Uyʴr|:ŋo f}ƥK~:'mł`P .ĉoq%95˗I^o~+Ξ=韒OTB!e $J'3+ìT"11j g߾;v <{Yz2kժUxR{ u6nݖoOkNQ+W&55^Or劕MMMUҏVWR{)/_Y'.\C5Jxxx(:=IsX4Vm T^]qWzV4g[7B!>aZnEǎܹÆ ah׮-k֬UnܘSYJ^}uh9r/p6lXO61\|@jjN@aC`>iӦRreš[߿]tm{qn݊ƍ1mڍ>;V \2...敻SLRJ4k/ի8p,B!DiMPɓcLwsyض->}_;︼B!B&G8RTx;)Wkn߸q#E"?kAi(W]%B! IDAT///0|[My?r-'W5a#]JB!B@S!B!CI)B!¡dY! |7,_MiC!B{h !B!p( 4B!B8B!B!JM!B!%B!B@S!B!CI)B!¡@ZB!Bbb1B!BQ$B!BPh !B!p{=м2k}11 [R)Ә?N ݎ-[JFᥗe/?~$|}};J}x}{8v0+V,qFv4hJL)<W_|1wuիyѣ9E-9Œ%_+i_}0~,t[v?HtteΜYTTQYޫWOShrs+V &j,v^:=ڵ8zvɂs]: <\ 689y7ocǭܭQիKL)ʕ+r۵Ŗ-0z+*빺W^y!*g2gά|Xӧi]®kwr-rO:.ݻ]+W˿aӦgVъW_Sz+}a .ޕrT^-[~GOZ͒%_Q^]j1'(_֭HKK+h׮->?~B.U(~mm۶[ӆB}V,\]vc0h۶ >3fp"- {㏧ɫW<鑑2} ԫWON̂_>|WǓOv&%1LJ /+W~+{0`3DE-"ޱu.$%%3NB3ggݗ#GJna8w...ԫWCcw lV>PZYu7m! 4IKK#:l6kv/8Y0,= =34jԈnzpy%}Ӧ:Fx>KX|`%+<\ĉo))S>`iǟddȑ(~{r|uuuO~vnαcge;vNݙ1c]PYfMׯǎV_SSSuݺ,{L&r!ZjIǎOতr bbp!6mM~b̘Li>)R^ׄe˽tVm^<Lj9EW_֭*۷ qm{'kŊ9sر,Y55k|ᇛsaz^::CѣYl1uֱ[F,Y5G=|Gx{{)ݟb˖_?Q=X"22_Z.0}wLy]._ (&>Ny>h""rq""GS<}9czΝ<رÇ CX/"* [hӦkr751J / 9z0k׮m6v'E9>} Bg͚'3|oVe$nsA>LbbbWT&)OsČ v'|G'NoW5-~}ĉvA&jeOپ=ܮaYk?1l5m+W.'* aڴzeyNsg;w6Gf:y<ׯŎh޼;wFҽS:5jTW;wFo6t.e{<<<2e2},\5qސ`P-pss|Æuf͚Ĝqv"vZsޫT*ƎۉbƟڮi=ztg_9xp_ۧO/6o@ttΈ/ɧ]]JiڪUKp*ݻdm,Z<*BCC9q$IIy'лw_k~e/^SOu-0*,_] `SR믝KIStލ/];7z{{ӱcƎ#00iӦ*ˋoGhh}vx>w}fxc|!o9 Yr}>}1~XGVZIbbα+ҴC,Z0\*η1|Hff&k֬*rF77W Bٰa^VǻMOڵ;3olʗ/ϙ3g:jt֕uD|̘ ~:=zO?3{r +V,%888껸)͹| =ցW2stƌ͘1x'0L~Q΃:wС֭z)S&Eҽ{/zCժUx wio2辌sJPR}{8?x{{#dȹQi Ti9bċ,Y^@L9ʕ WGgs0)%KbR|||0gE|,VZ}ЬYM>dwrܸ7ؼy> }1 ==1c^WnMַlh0HHHr[`2bċlܸsN:jf2w<*UDrr2dffjj6mLjje'!!7o @2w<222ٹs!..? 6СC>xq9+?FQ{L9x ?̓g_ V쳹t~>:tγW&''e_R9v̜9___]F֏?ot܉Ν;٥}T,Yzz?&O~N'ԩz_|iΜy̘1jN[|;l׎Zt9K. ::Ν;ٻw/^uGU߰a#O<]?^klr ?ׯ/)7A9SSSZ! ؟K.3~X,^{m,z9KEٞ<@y׮]dzsg$ݺue#NתhX,|TΞ= *0LJ[/@Æ z*^{ɓ`2_>5jॗF)sNɓaF zXBF֭۔ug̘G֭gΝ)6p`z 7?3Z3u4w9֯/J)KPP ƽ^&99ZmV[gVOc;m4fS[}ێTZQυkrgƍ{u+Uk@灓o1tb!3g@RxnWT7)M `t~w=@>8pZjÇ `ٲ"իWnݺp`Ηyfa4kF߾}mۮ ,E{l&"wZxww7GZZ{%,,h@DM``䕚/֭%>>M~!"wL&K|en*UXguJO18l7ZE^Ql嗯`ٳ4o,uVT\7oGbb";vEiѢ9Çcܸӧ/W}WnGY&SLfi~Aw3Pv)߼;Ɛ!s}|Rr۵k7'"bG|}.~;vy1pjl-ӴdyX{Gj!vz>xU7=EA ?ZHH0mt:uꊓN:Wf.ʾrwww,Kxx+V[vyPqTB4FD )) +i >}^O@?,o߯nݺyʫR;5"OyЩSGN<ŨQcXj5;w*gΜanԩ<:+V￯*%--jժa4fsx4>> ϠNnژt]LJv2i̛͛%>>vr>vѲe <<<ش|󋉉!333𡇚pbmo^Yl'Oaݺ8|H9u-Z4K{]8?7pQ3Sj6l'-ӭs ߗ5jTWZG 6|nj7nL\\<+VWFG۵~Pj4͛O˜9)ƌ+7n,EGD*Tݻ0a"ΝGV3h@éZjؾg̘Izuѻ_b w>8:cRRR-Zǿɓ'ٱw W:uPj|挏ObвdggsU> Kbbb $${+-e+hQ~}̣sb_g0a,YYYhZfW~}0o1/ҪUK|||8Q\|H>#Xf-7RO:EFF/epvv4i҄ߞȤI;(TFF&&L?#55 `ٴ`9v陙? ?'00\`mחO?e'2'Nrq&Mz xs9+իW.h4rlLuxw ȑ(xgqssc U9ur5jԐ-|ǎg/i4l2ffavsʹsѣ=֞sѪU+zosł|j )曕xzz2z+dg WA0},_FØ1)W;v7ߛϥ.g^>—_~韒DϞ=4h:<FQFC3UC7KII!!!^z;cǎ{HLL䭷&y[dddtrxc<9sVZ2`@?Fssvڲm[8i<3TRڳ^̼ys8y۶m~tޭH[.:777ׯϰaϓs]pQsFF3Y搔Cdժϛ[}gժ5ۇի/qBBBxDE-Gv]ZrBaq@sh4tWlܸK{еk }ؤX垌cz)MeٳZj*.]DjjQQG&㎌_|QF2jHu|YS5U&L#9z|2Qgf3GaU^xb7X, o9yfӹp!4oL&V}h$<<)S>RUжm6lXσݘBSyW6l=Nd:W^yDf%蕶m / WUy8igFdKb\@bc77?h\~Xi dI1TjSecLKF~f8l+Mm)MevLI9s~{ν~%7xι=i=ydN ЪUyڵk^ ݧo}?86+ojƯ_ {Z>3ڵS>3[!Z5/H;0gg>/:p~=ܭA8qBw ~۵ro WoqT۶mΝ!xN?_&yzRuJ}Z`^{폺U%O>gϏ"t?覛z1}dmn?E-]zgΞ}Wڵ?_w]fD/~ -[B^;v [O:+oֻᆱQ}w?ŋܬJ{GO}s=zي IDATTwoڰayRo֯ߤۿ}ͩSo[{h׮rW###Zl%wߥ8Mk~U[nzU߾l޽A-3jN>{~=ȍj5-_#Gǎז-{yz=Zz6lyo}kΞ=5k~pw%ohi͚uZ/jƯkxxw۶͔OMM7O<#q';z衇+СClي,qLNN[jUZKtO~ۿ3߼8QK]dk{SÒ1 @qIW1ރ+`{xUn+7裏Oiơvw%9iV:p`TwݵJG 6 Z5rp lMs]J_ݙYx{4͋ (kY2|,cj]{z55uNWGN0۸߽$666mҧ?)=֢̏E _X}`tL)ceY͔ΎwRP@7ht6X>[l鬭|e]uJgەmk^ԋNSRɟ "eqT/b'Mc܇ifIJ5+mfLAWG\zq8rÇ_ > 1>P)kJC=… .pByaͭ=cfͨM[l}l== Tn]UW== Όy\!yDG1 Jmuc{x&&&&ΝۗM@RooΝ2111ҖUy&4Qm*ἤQl˶v#W]5ϟ?`/u;x43 P˟61mt3ͨc<%h¤g.J3t: 'O78\&FZu?+t*[Lvy'OxapC== k 9 UW:]ӲL?|Fh=ƤT!A3.}}qz.+@ 9^yWvi6d/|*MڮPk a|Ym}N"Y)h{ fـ/MinȍB'.`=VjLO3fkضgLǿ`y 鷝Lg,xgö`Vrj,s5G4?i~&am[ -ˆfNma߃aSƶ` G1湂4wS Ih$lc6 + /lϸVE qa4= P,KmGT zi 潘9maeg\,DlEJ;)혰w& g{ m[gFRB OTp*ݣg{lL6j/a%iC\iQF4Q$%aF1 m'hf8M}!Jh}QQۣQ}/"hmjJsG*w۲>7Eiv?5[fd[PݓUkN hfڶ*6JY\_ZHmfBxY6i*mmsaBTYrv"&e_E5g lW}.r oQྨ|Q,V5:iG-Ǥ%GRXk$eU~Xa.֣$5h76{3㒞/0KL^^uez i?6v|Աaq O\IlĕϚY̰maZVn[־ܟt2.dmEM̉~$3/Icf#&l58E+ɾ4m4'IjH'ItvVͨIF/s42K$\q#2%m^,Q/. =+/*%'(eT~(QMs_0H(;?!(?$@}a҄$E/v,æ?gilY\IjTĕ& q}*EȔ|,L[d?Eehj$p)oM:J(fd&@ٖIGy^&*kM2zGle]K:ClQKl$k6h%-M;clp_֥"f#$iTlWk .}vIf5ulȔqm4u+:IV+,)MyI"dJ :Q$9@y4rdi0!S*n8+lmXL(L0\9(9N射Od5LIm# 2rVf>II~=L_YOޏa@YfمPE_ Y@$ wy̬Α2V=Z2X{eUn#V !)~(zmn6}gj2#U>vu(,]Ȕ:#:h<`)U^ߥlK0}Z}:׊!SթF|0}µ;s-AL߳L}LL}mHn[W~o5큫ۿ?t]fq-4kej> x\#&eBT:\/{."85ktBeICW}ŐV IENDB`extension-manager-0.6.3/data/screenshot-details-light.png000066400000000000000000002050401477302130300234710ustar00rootroot00000000000000PNG  IHDR>sBIT|dtEXtSoftwaregnome-screenshot>&tEXtCreation Timemar 11 feb 2025 22:51:35^8_ IDATxwx\Lը7Ee[6.iӋmB-,Y:, e!! $$B a@h6`SM.e2ьk$ufNgdymF.>z.HF;C`!!gx}3CGL@O<^+Wй}ux\׾z LWW?[8GzF{ G { #6pՓk$f#,9R__O珴 @j8GR`kܑ>a_#!@G?&v}6p`4޷[6p 6 lv?`}*l f{8c. *lpžLB%o4|f8G|p L}  i3p+c3pF} ='2 z'.Zf4ڃn(j.{2hP~_ItStssft'ʡImdOk,awqras( r(/vҍRILwpis4as( b=<.= ɈfƟӓҕcX͡z3N&MTf0SzOo210(D6AOL4v)PiI]HF̤vsX :2SfK= K`dZ&{4~.P9Xg Cft 6QRLWKٓ]6C$d& 禫=&;'0 uj0㟇͸d&+W9TB[qa4ym04dҜL72$'x/qYQ_/!c f6W$S5M,m K/0?''gn2MD06Q 7wtt޼ys~ITbLVә.TFTa~15oޫtWS8&k,Ë+_Jw񪢢5M,2lF]cc^~fIdx8gtI4{rd54M'3UȌ l6l8wĉA)ͨ۲eϧLB!2>pv6?FJ$R9ԂfOj33 DzfHwހ/4]mfyȴ%gyf)SnM23nvw`}HCjĥ̙3s*`nHe Mgڢm: `hPKKKVMYSeb}:{s}TNNrs|ܼ^ 6 øF\l6C--y~ #A#ө6yތqe^JA3!]= `*((Pnn^~L3Tir:r]C-`:6cP vrs=<]k0V΀g>,`!h *& {d`!#Ѱ:=h& AsXeqf$M "h *& "h *& "h *& "h *& "h *& "h *& ] SRPR1(CA˒)\$PCd,9 ɮ?pMACPK[i):TZp)fٹ?h{; ICrIr*H'&U8D ~j/n΋VܾzAK))i("hbИWRH,o36׹--)pҴ.&)ݒ:bkokO [$Ae)<fXJ&Cdj<Á3nJj䳤<#Ԭ@41` "&4yLu56ذdZ9 V z SVdI%c4T)-@y*\k9ktd1f&}4Iݒ'Yؔ$P"h_,KMeSIK?y (Ƞ-M5lWдRǾHW.j_,f@1EPRB}2JL2S7|Ivfu-nt\`_ѡ[oNʕlҋ~vء;vhŊ_~}v_˯Ν;c덯]0[scw)4e կ]PADV%5+L&Ѻ L2YV4*,9")ի?~_quuVqqq֯?Bfĉ4w_Y ),Ͽ( }YhBB&AYc*T½7S gk,njv-C[dhJEV5 MhF$YƘZ9Iڽ{~:œ$uݮ#'˥YfRzwߥ7|KZh` z, FZa0 dAYaif u%- 'jƎ8b~_nڲeyv߯?DsMcO?Νdƍy1cF'㢋.ֆ /%~[+Ш_r֮]>C$gO֍7~3Cfp7CW}}}kXF}ҪUgO?ܕr=ܫO>We]aBD%yջIwɌxfcw5-dHй`Ҡi)Zcsϫ=f;~Sc{_$It y<9 ׼ uUWSfK.M6zthuOs̾iӦ_)S&/~֔ 7xrT]]J9 xrtUW誫ɓ;+ݻ7r9|Y7 }gk|>'/\6 M"^y+p+*2\85HREE.W1=H푾aW]uҥP'ws֬Y'#/fӲe˵s箘_.ԍ7^/)D%K%rI_`&h2{^ٶtSNN˅ŋ"ΝZlyLx7p.BԷ}K(qe! eG0&>*{"hIi)hI--vmj52m668|b4m2G*tZwNBЖaµ$bIcG& X6mo {Bg}maa .oբE 5}t]Vc=c8HMkN5/3gNN8twF\NʠYP[o^$Lcj#JcB$z)o~]mhhڵ4}~ 5\Yw\Ktwj̘=zt¾Xzr駟|S 򣏞y׊+#kP A3;x Mм=\%m>=jrzt:e1:gPuJa-oiNY,Uzː)+fm~S;zF6{yjl?z= RKX:ҼKKÔML+ԖܮeZfOvTR,_ło IDAT,Ў|)>jBAs͚_kzT:S~_?mIijjʕokʷ?Y?t Xt wo$566esss}} Rv7Bjll^PP2T|rr15aeKm(n0<4'~˒AɽmAM~ФwHMe zhkK_{ڂo7%S*-͌%ɔۂ VlK{HoϞ=zc}+dA*ݰFhM-ڢE usShʷfZutt$ڪGz챇m:r\BMD4yd-Xp[TT;NaS(*JL"Sk˖q ^?*nqqq >&$pFK6MKL-Ъۗ qRGNR]iR>vpHc/ !}XonkH-'E٤4\*(ĶdLLVlsbJvHxjkk5k] p$mڴ9fM55ۻ-˨Qt.aڲe>=#Zv]8ϧ+g5{8N7nWr~-SGǎ [TT;];FWY_fcXze_h>7p]v^cck-ҪUlknnֺuӞ! o{Xt晧0w_ьu衇F懾2̳.Q}}=M8![E&R)xmիY]@fQɓd(G@ Qߗ/uS|BI%far$4u!GO8gƌy ofUWWku禽_}zg#[t%Ӿ$'WW?jL8o2UTTh#|m߿Ї֌3Р~Ve:眳%Isƌ3#<>H&MҪU?җŬ[;V:ҥF}駺tAsifY61cE` hOZё#`ꓝC~KuK6G$CQeeXŅmdk™H6;zブ4&H:%)fîk%)Fҋcu֙1A3,\ٳB"UW]K_T|(aȰ?N7->{c֭[u֫߃Y3u_}ٶu6әgޯe~W? c}v}vIoD˥ch/_$;i$]pAt-s̎,?C_d4zws>puLZ l6Ƿ&0[Ԃ'iŊjllRqq8bJJJ$Z*m߾]>O:5ƍoJ#ijE Mi֬IGNgӦO,'G&ל9Dzr;ھ}<:@,T:6orjq[PSOP_{nOdTj+y%Ytǧ;')׫EN챿"i$frAG?N? UTTlҗiCne8w Dq1ۦLP,,kZW]uE} =H H*//]wݡI&=v[N8>f/y \4ct~\qe&oϮ$NUWW=HͯtAft],~_˖!%ázծ-[ 6(7ףS4MZ>S+/ϔ)STXX ߯%KצMTVV ou|jiiQe89}1E/]l" hw 5S]V\SRҎ&g03$ζ9k.\8]9EҟJOoj3*֛ 1A}./ˑtsu O֜9ojooW~~&MG>+eOsԓO>-[H2tC֫{]O>xM_AMMMr*//ӁѢE u!'=[3ghɒi&y>$}?l6]u:OWm.y>hgi:c)/&M}I/O‹ڲe*''GWj޼y:sT^^7=sz״cN555P3fLׂ'k“NR]]{[{{0P6~x{z_ԦMUWW;V'pN;A_2u!s5~x57'RkkUTT{CS4p0af͚&h#K/+7ףx訣`nذQ553$VI:HUTTȲ,=sڹsv%î={0 -XpJKKUWW+#۟2mmKxx=W6[F茛\G _АJGKE]'ÐvntN[bJ$>7dlkԤ*慾j[=q֖ٷκ(nd>~D~_PZ]Va@ԤIUB9|9rVmذQjmm޽,KӦMӼyu;O#9d[+TPP:#xJ---=u6777c=yB6SnG(jϞ=*//W]]]>+qP"]CJ]ТwjB49N+*6ɝ'9R[2$ͱmը"Ks'x'q6,v>s577k]*++|Ǝ')4azzŗx$I[?PssK估17nR^^f͚%á@ W_}]G}8`}=r7Fڽ{<&LFk=z*//޽{rz 4&$:jZvKgNj݋O/HNd%_[h1PialҠbë+ԘBgbs٨7m}aZhjjjT__\f_s )ԯC'|={^￿n]Nƍٳᇫ#מ:uvܥ]vk˖m5k;\|Juuujh׌rgfvtGFK?"ӛ4_!hbP0NZgHiE7~zwy}PZM%uT44l,SK5:nK?hM*sn2F!#=.z)+iފ(İTRK.X={vċ6*'Ȳ1,)vkL`FF8B;/J)#c.s0hl::m|*t%W[*WK3N& d[KelӱͯSUL lD8o+^ÃFZZR3tv+h**fH3ɒ9N֓Rc425hh.;Lc])E& A}bSld3L[k?F{ -jHrH%ַyCzzvkиbBKٌnCf6_0NK>+<.#5ftl(ѷV[TvJU(p328S2}R{6UrFi8\&qec{\Kʣ,CnW b {v;3B5|~EKC2[̥+Wy~^Y;:dv얂풳@rx$5qo$@K2U7ekzx/ӈ=5>dZܲĠy=S=jkkCl6h:YGMM.}MMMM:SUU51+׍ӌ3teMdA}PWfLL~V͐Gة[: 2#WrHvWT(^P3Y/ye4ch(n8~<-iSct4$y4~qyY1O;T4MܹSo@VBs=I&ORyyY'I? æEH 2eF6.ݮ`08E!W#2PC ;slSZy轭mjd||M#9B#sd5QwL)|I6˯|MGWFiRKls#)K9KKKTRR"I=B}`P>}ƌh>~>`q:>p:]MdK~ZM)frvtxqZEO|بÔmRC Hk\ܡuټ6|UK2M HWL8Yc<:b8@96;CfZؐ)I 䥗^ש~)mʷq&]xf2mtʔ):cu=J^yz뾞^joooh 2MS?Hg}+!+ѸqcO>T<%I˔7jŊU__|͙szt}Q_謳TUDHݫe˖k-Z]Ӯ=LfP2RUua\r,fЪ\M,uc3y-/aZKxtȲ,+Z x +bΦ SMMMr:rB<3:Sr;G%<$M[lg\Nvء޿h8q<l٪gyNG}&M޽zWޮ#X3KmѮ]K#r“u=ϿܹIL… "Td /=(r^IIZZZbJq  &.LvPGܾ2r \r9&'ȡ]1‹_\ fVgu2?Q;vҥs4/Ν{NƍTSSGy_sL{SO=E%%%lK$XƳ:y::a_fl&ȞZA!,GR$HK(z=ۥչdvCGhq: 9nf3"7#~QeTr9$RviϞ=An~kNZ[bklQ4MS;vTnn9@_):裴jՇ޿Leee*))I!áȲgO]BjnnPGG PEEZ[[c^$}jftQڹsgLokkSCCF*qAYgT KMMnz&/SuEPRRQFW_WMM6lبwyW7-rڱc޽[lO^W]^رCk֬UYYܕyڱc3.[eeƌ~V[n{˵djoa>Xq&=3ZرcdmVZ+z뭕`:[/ߟp-ϧ^xIUS]>F*WUUU h:~T(%D]ⰳ)M߿3NWMZei0g2 C~^}y9vMZ9fԩ:C5wAZnP3s9[˗GyL4q{ёksz啥⋇t_͸lgyxM‹z*//9ӏ2SUUujwr;r9s8b^~gu- &ctyD9ڵVC:#ѲecwNo2Is4#dQ;%er=lQz=#wf}fI H5ljB5aѓ$GI~]1ym6I4NְeC_cP y$CM4oJۛ~V}}1$9qL`"hbPDCS*Ky%Jꐡbmim CwR$WHc IDATY@Ġ J%uNog4;:xFOjS(Dfhj0EĐaSh`,K˒sР ~"uȒS\;G ,>cr*ԇ2?/3j("dAUM@V4YEdAUM@V4YEdAUM@V4YEdAUM@V4YEdAUM@V4YEdAUM@V4YEdAUM@V4YEdAUM@V4YH`Y`@1E DFiB' Az |s'A2*`@+(%z H060/ p@4 d1>`&[04c> 5&d YZ2MS`xH=.-ˮΌ4l2C(j3cCfP@ `0@ (H4C~%.!ápkp ^פV#h@7C _iɑ۝ Ӵv+wnu(6Ti*)HK(h;fP*,,i0LY%%YmmmOsFl]R͗UT0nW~~v;4a*Gw9}O4i"4 d4f@.S6}K l6\.@$h&{MPb fmixq ͌j3Fw4p ,e%f/1$d|S]]LTUU 9~\.&~hQөV|>!#۝p|mmݫɓ'' w^*???/ ʲ` Ou{@:MH!l}>֬Y*|>}:H^Ӵi4aIXBSLa=C***矯1cD3 CNS>ƍie}]?^vRee\.W¿##jjjm6婾^ǏתUTRRzkU[[+0Р{N;Rl.MJdQ/LX18'[ȣyh   q`˶X%KH6{[wnd5 VߪuR};7oDX~?o;;;F xwcaa_˿shRlmm~{ OCדy:9DDuØ ۶qmlll $IS)+MSx;wnò,z=mc8h|>^zIm۸z*Ξ=$I( 8*^~eT*>; W_}Z r/`8Bu,///2ױ4O } s~&ѣb&=;Qz<EmxnQ(*ܹ˗/CUߓ>q|[ EQ]84MCHz?яocwwbz׮]eYx7}6֠*1Lp%ut:ڵkX]]>5%2Dzw螓Oy65mG/~A~hCDσ-U'E8eq*E8qRYDN^$QAui(iEW4 )lۖE}-uqZMӐ)|EQi(# νu]?0=}I^p˲`fkpɠIDG1MUS4s߳?܏̶msbC7أID("?{3 UUa&LӔmۖϙ%zb}/""g& zjN&(M"""""":Q DDDDDDt4D1hщb$"""""ŠIDDDDDD'AN&(M"""""":Q DDDDDDt4D1hщb$"""""ŠIDDDDDD'J "?Hq#IUU(ʡDŽa$I( 4(0 =- DDs"MSx- ?zzݻwT*ayyx{ ID4'$A~3LS|'7O?/"666p%{pYi_8s >3\p:ty'""DD^F.\We4ML&\v v?h4{W_e$""D愢(u |MeWBZEElٳg** \ׅiX^^ƕ+WFDDDO&ќPUjo&* סiVWWqppz`Y.\qpY~RĹDDD1h EQz~m"""yUDDDDDDt4D1hщb$"""""ŠIDDDDDD'AN&(M"""""":Q DDDDDDt4DODDtOiEPEAqm*4E$@u8ZRE> À1TU۳m7^-qc:¶myAQض}@wt]aY8Jt]t:eYh4(p]WYu C8#íi pA`4mDQp!C4n-\|!?FTŋ`&<,B$t:x)\t:PP/$A.d2A(J}R +)(B0M\ea2< J%q 0-\römA4M|BAEQ0 堪* |$Ia}ض|>(0L8lؖ$<_B! C ۶B4ZEAXx<*dN(PU[[[qV4MqEt]DQ`UUQ,q- P,%۵({!!|߇2 8\p8d2ah6pN\`n^O|>t 00+($"zq&ќPa aiiIn=QAUU`aaq0C4 am8\EA^GD\իWe;LӔXΝ‚n q!4MCTBz2c942;S4躎n+{P^˲>L @X*00 LS 93 Cj5/73UUer,îit:rhk.ZEPaK4T*LSٶ ຮar0 rYuw4!,˂eYr8oA$2p9EQh4PTP*0 0QVQ.p[(z!8׬X,P.$ *{aS۶ ۶ePǩ( ,˒(c</0(=aay~i"MSyy=*\l&I^v-rC4 M?=y:"i o fn#{ٖmq1A{4kp 9-sTP=[4&Q樢0-[x&:GcjOlQm=rk ڋ!ۮkPP@=A,~x{B8aY֡f'<4{z>7{=O&=.cM"92\h&oCT/dW4{Q{<豢(B0kkl:uc @aq\4Mg>,e=}{AQc&""zv0h 1 @18pI<˃4M1Nnc%z{I(|߉DQ(pkqY"g{}e9se!ILS;(vt]rd2۷Qן輷81L EQ&*$I0 0NUU,#BO|t:J&:1._ )t]6UUa$Aկ~7|z= Cjamm j9}a@4MӠ: H7o|߇(Nmr@UUZB}PUi"Ia7oP(ʕ+O؉c$"zF?ٳgn}V ^ϟO~[Ny&^uq,C&( la?DF^G׃eY4 m֭[H7o=(wW_A)c;w 4[ G~0 ϟǏcJ%|)~4ME\|>:{=?Ѡy_b|7oիWq-qO>7Q(_W^EPᅬ??C$k׮`qqbm7 1OǍ7`&,Cg?eY 8<&3AioW  ,G?ݻw1_J r+"{8l6;5 C4Mr9i{=ضn3g//Ăh{T‡~ׯ#I}aEQ0Dۅxu]t:aw}], w(hX\\ĝ;w( oQ.1o&z-J%… xw.t`&0D1!* >)1>3J'zDDd0h=#j>#ulmm̙3pn߾ ˲jQT/"TUETB@F\~b4 /^ݻwl6[nayybBebmmM.S,$>( _`ׯckkKKCu]G>G.CR"ppp$I81h4[ue{rFT*0 R iBu^L]ELӄ8m[o, "cZ-TU,--=c'"(Sr;Mlmm>o< ۓ$nB&X#"a>j҉,) h4J[;;;<p]~_U Z-j5in%9oP(9v_FCJUs(Bل(T*hZrep]^b`4T*}DQ0E*ʗ^ SǸzC""L&$Ib`EQat]h4aPna,XbeOW^G3"Z-cG._|%,//4M!qض 0@.C$LjXL@bgG7MSTUAZ4Mr[4Iz}myMu4 ʹʿ Z!*@|Ŀ)dvdGf[zĶ95 D{V)>gWv4ZUUŇv6ql*Q}ՠ)uveaA3[VnPQAӴCf{Q9~ƠID49th_%h~>l~E9 _׃}F l>*?&ќ%D=/N'EQ-CDD=DDsD4r9AīZz*M`&( "S DDsDҜ8V{0Zf>Oc&":-4iUs+DD'"""""":Q DDDDDDt4D1hщb$"""""ŠIDDDDDD'AN&(M"""""":Q DDDDDDt"":,c$IUU*Ey%IPUI Ih'""":)$"#In?|nll`kk Iݻq8~%""":{4/0 y^}Uha:""ccc|ib<<ضVnׯ_G^?DDDhn% IDATќHV OOϰ_|[[[h4H|Mܸq+++hZPV A0 ?h4t:o͠IDDDO UUOO}6^z%oRW^KsΡX,ҥK(˰myr* q5hjhN(rjE._e,..}9s˨T*x뭷PT.8kNEinzΠIDDDO &ќPcyyˇT*RtĶB .\x %""":щb$"""""ŠIDDDDDD's4TO DsIQ""zM"9n#zމ(!"ĠID4G4E$H4 7Et]rNM"S`gg;;;|2ǁPUgΜX^^`0@VCCX˲8(ٳg82AP8r\N>):#@r9ޤ JN;|sBDD&ќSo|M7 (4Mqs~ioo/m׮]pf$"lv"UI,t|q+xaDQ)j [""w DDQy%=m0Exlʼ7YW-a P`j)^xJDD'AHDV=jlZۙNJE9v"f&<.f!Z_d϶AUU4MDZuͶOO= e_?{f:ێ=>vܵy-< b4T Ibku}DD&ќK~ni^40i "hUUn8z{{{eRdY$ r\s0 I,--}4 \z}!mb:u]xO4/ϵarI˲ fH| ^~eh۶1NQT>!DZ ˲0> eYp]QmN{{{4 aaaea80 aMDѽaW\A߇yFC\.'{& @h4~KKK ( z0Mr 4Mh4BAZŭ[+8| !8F׃eY|^a}yj5L&LSx˲)Ţ\Vl^xL&իh6L&( mB0 Cr90 1B"4Mt:;wb4mz=A]DZRT*k}Zӽ션 w+ ~$  o˛c|JUgNgdDD0 4Mm}TUEV(>0뺘NpZM4MeO`\p8D$WS\.nbr|h0M|i<,--Dq0N!jlaFFH8u]XCR5Mç~*{HMD$2q0 a m^@UUDQq( dev [,a&<ϓAUU"lۆi zzC躎p=nik tJ"g)~l7&W\O (\ڄ4a&ќSkkkh68w˗aZlۆpeaaa… r?|^x ۶q…Cp8FTirz*t]qR !ò,Ez=,-- ]qpp]EzΞ= ˲y \%={byyQ,A /..BQ!ۚjPV.lF$XYYAXZZBGTP( "|>0PT`۶ 4 BjIaŋ< hZ8s<brF\ׅi8wd[L\_Xv7ֽ4IS 4V"gI7(Sr;Mlmm>o< ۃ-#q, 8>j?QNEr"7GnSEIG?[gel$IE ÐFg dHIq>˹ :yɞM7-sTz}mc'|))HMHSH tM%_R$h۰, e0 ~hޮ(z5&"4^7N3=lK6{8'6=DDs$ʲ }U`3{~vqێz]wdo?HX|A_q>{#;{|*EtE~r!-E!""Dt1h 1KT/kLC4 ٹDD4?4战( DQaDoDy= 4H$?Vf$"_ DDs&Xރ9jI""? DDs"""""":Q DDDDDDt4D1hщb$"""""ŠID4G4EL&+'cDQĥQ&DDs"MSL&ܸq?#8#ӌau]DQ .<ض /",)DDDD1h͉$Ih4_IҥKt:E\|;;;·m7n_F t:888__ŋ4i=G4H>o[ttv0 wHI࣏>B>Nj/(R)=8GhN(0 ;ncuu͛z}6_h[nڵkt677qUr9u\v 9ܹC'=iQn}8Obq\e & t]a\t\.}RI3q0D߇muk8R9jU^{@yLӄ뇮u$έ ivBv, bQ* QVQ(t0$ J4MCF^G߇X\\۷eudb󰿿EQpY(N^et]$Ie}lmmaee`:PUT*aZ `wwr^Obx UUn۶v[ 񘦉,,,ZBwŋnQ(l6||߇(J888R DQEQPh4n766:rZ,˒a8"c`<c2`aaey>qm>4WQDQ=,.." C8hZT*slt](}a¶mcJ%}J%xD?rY$I˲0dC^h4]hm4MmyL&z=h]qݻ ۶q]heu]peloocaaoFR9)z}qܽ{+++}ADDh6kabx(AQF# :0Dۅi28 UU:L`0TMӄ(mP$ F8eEuv[Ilx,m[m4r\N!TUU.?a ÀeYP>$ie+"ӍhsoK&c2$Id}#cB;wur,A˲dP]ENmI`wwW1L&,K0^q# C$ir8Q,q,8qZ6t]aU̧CM>j\וNr8$I`Fbn!}&=.: DܛyT{*2mv9ⶸ?hǵAxؾf~X>B8G}-4[F mq-$eqw~;7 )G~ybhqA>98nljA1hr&ќ9*`͆8\D/x?ԻmKFePPp\o:^Bp_SۗzTH̆Wʡb뺇·]_*ض~r|dh+'7L`s&3PqbȫiO+1NE4Mx vaccI֭[PUFCS.CAߗŞ.M"9"ITV.UUUU^EO+ְ4 C6 \Q TQx'眉:2Ȋa(B$zCj$AE{.|߇8L&FZ a`~_)(2,j5Y F(Vy6771NByt؎(v-ۖ- s"Bcn4hZr]G0;U$kf۶jd#YTg:"MSr9x'.\ׅaBXmE^!!yu]y4 E躎}TUt]mT*z=t:TUyarG""S_UU*4M0 mc4assVK1O}GMj` @ɍH>NYugΣ,+{=Ωsjچnq QuW@z"J4Uc%hI)1!˥HG L4Ќ\tǩ(B>uj]]]xS>h۶I$8p 8CRhPtc X, ay<ϣh`YZ q< H$8m(,&U4EDx<4X* {K$!bYXիW.FFA" HvZf255E".#K$oj5JDQ* ===DN&XE"Q,IRb1JJn|ߧP(,bHRQESDDUnɏ|yfv裵y}sЏZ}ݎopzjPչjJgg'L' | sZdYVՄVQՈضV?[PcayZ> ^Bi]K8ܳ$Il^m;`~m Gs,U4EDC;XX,~>?>?9o3|󟷷c:DDDIs4EDDDDDdQ)hȢ8%ys07޼ODDD+MyTP >TP!)""r(h/`90yxk Pm %8`C?I]AAreq0'a5u U]/#XmfW|YeUymOit2n~jV:ͼa.>1J:ؐM f.==g f=4EDSn`}XCxgSܵO/`[puXiyT+cva~$iZ """/3MY|~ 'n;f( ss1|0>~3p66g{ay+}A̞);1{ 21)||i͞Ĩ{in `Ye)p,MY<}̴pk0W xX6`A vxfTÓ 210Y$X pns *u?|8K[[.ڷ<ƶ1ǹhYPTp' SשVr9fffb4 lۦh4~k1 b9ǡ^sA*Յ8r9DuT*xG:~%EDD^2MYTAOYil _a4>d Jmq k0Y"MD𮵰;]1BW;E̮)eKa*޼\ 4pkF ªfϮ]XlD"*.3==M&my<+V`tt\.ǚ5k\.GXT*ގ뺤i ݯK)""@"N =%N,{!WnY,ԠA1{g zcP7kA_>fh'XOL5O=S`f4Cn&l.4m < U*fffHRcXbD)vI,#LsN6nHZ{a2::Jgg'cffvpZF\R`N+lxEDD2MY<(i)́ZsK<[M@>+9Qq Sv13f0}|p fj<큇Ֆip~53!8m"6A~!^ST}uٻw/D|>OOOdc j)#HP(Jtww300msI'1==M2 g?F۱m۶9xcƧ:)h1 F m_ˍSX;vcva>=wV! ׃uPs-4Vl4!Q!󘚚T*1;;KGG;w$۱,)\q09C:&N388HZ%Koo/SSS |'ɰlٲ۔f YڎTW1MY\!܆)5䙫0'_b]ؓu6 M~79P0` Gl24,o.zoZSv~m;SىydY\}FGG-x(ƘP$!d{=,Pi "" ].5Oz}za `Ex[;࿱4XvsXe[Vs".A࿝R333eYtvvR,mx<Κ5k27DvDQަm8뺸{ط!LbYXjJ^ rmLCd}ߧ\.˟ͯmށDDd,I?%Xn.y+19?# u_`Yf='aϚ[:eaZ{.>m`E*"h4}a2j5FFFcddQ&''}?<}ilJQf^UU͜@gu ^={rJ7 ܶl6nD",_|A VqgP,I& e,3330#i4 111A$I8e-XZP(p:::!|>\xzt:MZ<q6o$Xz5e1<<$\c HqfggٴiSXE&HV磠)""/6 ?Lb*?ת<oY<ٓZt+,%`,M<{pD ;h΅̹F@ )~*WCyi&j z[CU R\.G& q,VZ}xX_-`ӛXpJȞ x4Ā߱Ηp pk@sgW #GlzaCVT*l۶kh4(d2<r96l@>N49˗/åΊ)""unNbvՠͪEK:׳n>vALʓثf :݋),sj5|ThX%fuzp)xb 49X%^sXkKswE.ғsq1p,5* ?Vf| EN?t&&& c|0n8zWka?+ _ֿ<5R$py%r+Fx]d[ov%zᷟ eX T \ǥr"""BASDDnaq8NK ΅/x|tkjIE""to4v܆ 5+`A7~]_pt6EDDdϷ""6x~ 3WՄO?sƋ.+"""/?MYZ7Bj=ކw-HO\߾% Ί>?a$ȜNx_<MY=+c)""KiŴu .""""""4EDDDDDdQ)hȢRE)""""""JASDDDDDD7Y VcQDD&M%&|}2-2?c,K,Q ""KH+`DQ-rQ6ED(M%"<C,/"GѪfVU@aSDd)R3 %53/"ϡ4- GҢ m} xI7cL5skp,\T?""K*""Kġ]fo/R._tg \Y;>1<tuu裏Goo/\d2eo"""U-@Dd uٿ?Z￟Qկ~EZ婧`w}qz!vI{{;BT*@"GRPי$HpwRVy1|ߧh_~|B#<0L'|uUt꽈PY1]l6ݻ)r9J%ZVjul[E*q*Afٳgr {?!###FFFrDQ:::عs'hZyO<'FcPC7})""2Y%55JDhoou]$}}}ܹH$ºu(TUN:$jdׇ}zzz8}lق1b[={>˖-r̲efllH$©1jʊ+T*viGlh$nqA&'' UVDFRh5sZnGD^ W}<ϣhPשVTU:;;d_|44qvvD"mEbm/zNT*4 ǡRNkHVG%yضM>g``Z8u:::x'XbCCCtuusN/_Ζ-[@7++VvM*~+ԟE199I4 8ضeY_1] "Gc<=gϼmhmHΊRd2LhVTxO<g׮]R):+VP(q"x\s0_,br9t~2T{ݻweo;z_y0˖- W*>O c ?OH&r-=+WO}r~vAМK/w~w'>qss} [lӟ4]]]/\"""EASDDB]V/FYv-Riv駟H${%h4Jݻٳg+W^/8,O=/}gll,<Nje6])""Ky4 j˖-㬳²,1|gr9<#?0< R}Q0>r'r饗8dc l.1;m;|yw}7TH2{}Oc//8餓ؿ?7x#<@8 ز,?aЄfE3={avvFDD䕢)""KR<u_PEs~hQaddFqO˲H&$ j.===A@*brr2l:oKTZbYVܧV155H8 ز,7ƐH$+IASDD$˲m۶~{ryaYau].b:;;T*r- EVUm]wu؜Ζ]vQ,bou{333x@whV?ca֭\pl߾|;X5Ƅ1:bw^X}}!\DD䕤)""Ks/c{)%\%\B>G9,h{p r&Ge]_;1y|#}>77s9|S oxַwh4w7#d2\{lذy%""r<)hkm$Iz{{mqm40B CCCژ"""u ""jl2FGG>ⱥRos=R)n g A裏w ""(ho <'VbժU|&8ƘJyGX~=_ {lt^qD"c,"""JASDD~yǁX,R(}[hff&\2Hb "HeYtttd|2 ׯ'&''Zp ݬ[c ̍G ""h|+4 Êc*SSS[/}Kp y睼u]>w3\oࢋ.bG?ÚuY|C:~ZDDR%϶m"s?:aGֹ<#󇼺Kgg'tvvljbtvv200 L&I&Oww7h˲}ZF"8lΣq]Dm[˚Ȓ)""K֭[뎺XkyְT*227ߌeYoK_LqZ47s9۷<M۶ yx8zMT""$v,kP#ib!!Ӷm, m4DQ"}r1ZF$ c}?|-˲i6Dqַ266e]18O}eʕ1_~>#^o^n{}졪*333|+IASDD qF@3H޽E'.eyccc<3q{%yuڈ㴷b VX]صkX)<ϣP(裏b3Ϥ\.>CCC] %A,% ""dD"9j+uYn]V\_zallu{Juٶmn:z{{chh'x!> {.e4Mhoo azy%)hȒ uǢ53.E]D\n_:xn7ms388ȓO>Q2rd2ykAwO? ӹgnw @ww7lc؂N/1X,bR%qua3R:pmRZJmۦ><\~c tuuH$rXE{{;=== 133XxhP.]H.#-z4B۶97000`[E<n>_|1z׻^5uwws7BWU/8v۶m| _8y\窫"-e~r7dg?K6o;6l,^5R4EDd[f ˗/4w޽{?3֯_ϝwɯ~+y𸶶6J~Bի_pX,}Î?FfpN: nf.z{{jض͚5k,% ""$J%FGGqD"A&ZR,) pV'Vh%S((J91Β Sm4LOOh4P(N"133C&!8l~ q4lxT,1F2}rmdH&eRtD"APC$ , ""$zauٵk]w?T*#]ve8yU)K\sMX}衇H?>H[o5kְm6*Dž^=ExaK.]v>gƗe'? k׮.^z)x\qtuu}Z8[am[|-y(hȒjP,P(P,)JD"pC§zj_\Zs¨mXy4 |Ƕm _jFt:4 |("tqhkk#a lUi1DQ!D,ZFqU2EDdQ%_*8p xCyٳ_y6ogA^om~["RT+0۶johp'V,| A@ww7O,GT*cnc!HpW2<<̶mx衇md2ɚ5k/+""4EDd/p8l]O|{XUVje]Q.ٳgw&z۹Rxή]83N8,",xq>я.fYk?qᄚJiY'?1&\,"NLOO/|'|H$G>x}"""Ǔ,yHL&CR ferJ[*t:M2XPM$RyR)2 $DQ2̂mƘyO[[tL&`8 \i mkkò,Ȏ;D"_5kl͛cƍdk_:æM57w؁ulقeY<߿A0dƍx3!6nH2s9(W\A\}Քe.R>yZu[n믧^//zT*7rגfپ};^{-x׻ïqwݼmo#q 7}p`ffjR"""/;MYXreg!JXjv ק+WbYa-ˢ }Qrl2j###aWږO<< CTz\.޽;4zjaUI˲顳qr\ ^kY4EDdh4R)np200UD"^k!*뺜s9viaV,7L,K.9bJ74^uULLLo7i׬Z~1xGVwߍaqmt:e]ƚ5k}jz;vP,馛H 𖷼%+""r)hȒ?y}u:ofׯ;yǽ 4+x/'|2`Y0R;3~򓟰v)"O~+{oc {._\Gu1 -FJek16/֙n4Gm .͛7+hȒ)""KR$!R_PdY*j ( `6TjA7Y۶D"DQRT=#y5Zp_4%H$ Jr9<.*|~9,ˢk_R)""K駟g>|gÆ u^{-__??عs'xk7G"7reCww7311Z}5q7`p Ž[u:k}׫uۺjV֭p nPv!yHsfB|Irwr%74N6Mgzѯ_?ԬYˡRc=zTX.;;@]䄠 ԭ[W;wFjՄD"*T'''Qac$"*RX|||t'G<:uLwww;v 8{,Μ9'''AA&4aÞ={|c@TTtҢE lժUCQZ5(J\~'Nٸ{.޽+O,lٲ޽AlܸN_?i""K`$"R)11)))P*pss+D"^zd2899rʈ3hjLFF␝DaZ\Xd2$&&HHH0xH$ʗ/ÇB?KJDooo(JzʠmNt"([,Ri^6!Qa$"*MVAO7\xEGGcP(?~mE֤R a7 IDAT3337dR   Booo8;;ќyHMMEʕP(r լPʗ/___n9I,J*(_>鰷R)H&P(ptt#T*P(`ccXYY!334eʔL&Crr2d2{'''T*hfx=nZZNҔU"{{V*bGR$$& lll JsbH$Oy$DTX[KP6rԻҺ h͇4iM&$h2ATٲQbb M>l{χ|!$|NPq0IP5VR&!!!AJ/qUDEEѣGHHx甽==PreqF(SƭKL&`HOO/Q65}⬬`eeR \^kZZbbbAwJ(%JBRR c%222">>qqqFFP~b-Qip58q&IKKCZZ>S6mvڣaÆEUT"4J0MقLM0ԮY SrYpvvƋ/`kk OO<˗P k׮uְ)iT*<}׮]_bmFc+;gggXYY!>>DTM"}3!nݺi&$$HNNFٲeV"j65}(O >2 r%&+ ( 899H!==pqqA P\9pqq)X'OĖ-!i˗/ca @A gggJ///!hJR8gu됚#GYf{5H$BrϟٳQFIRDbb"^xBX kkkTTļ"1118{,*VWW.QsN߿ϢTT ٌע&2&N" %*hb!!!GJJ <<>gϞEڵ8D%NaLmu3lRQc$"zå4TRq "pvvF۶mT GG222p!ȉD"<~J0Nƍacc˗/#66DKRT*rT^۷\./D%ɓ' 5dj߿lFKE7!|z\נ)hDprru֣P( {{26S(:N3H%%%HNN#R`gg{""" ѠAἡ%a&TEjՐ@Pzꈍ#>} 777 Ӿ6R)43W$ATYV(BxRD||<<<<)cbb"RPR Q5\m%HGDDgSJvZOaRvϳIEA R ɰw^d2ԬY*TJD"ݻwQbEܽ{Ϟ=B ʗ/_wY&~x)nܸJ(_=zGIIIP*uѬY3z Wjժ Fٸwʗ/8;;ÇTStܹH=spp@ll,N8 @$?D:up-[ppp\.GDDlll ѶmB)[\\!Jquxrvvv刉۷Q\9DFFUVEtt4$ bcc[[[4k R΂iD|kmf=СC쌎;BRa޽./QLѿ& "Ο""&~*vJ$Ԯ]ʕëW Jakk [[[8;;|hԨlmm[["zWtwwL&CZZ$ *W OOOpttjԨQdժUD"AZZ4iXԮ]x Ri bee#99www vvvX"7oXTR& օrJHf͚ƍ5T4/_EJ3d5j@BB=e>M3OQ$W>&e-_~%s\z2e ZhaVԔ#Ra㨳DD0>R R%1ʂ\.Gff&lmmQ\B뫗%:k~rjק_|X ''<T轚~{~k/!!iii.^5ϯGSEGSnSk+&reG,I}4 ^@&Bmݾ"5iwPa8uYf ?nVqyslѣGYb:KDDZ5ڵb%##iiiprr*dD[[[dff'"`mm9X׾Ӳ(h TX4}2ݻM6o߾XdI DDP@CfvvNYEH$`7yvkNH$V:MgaooIJJ |||p=azTT,YBڲ$%%ZƠIDdJn>?@U=:`*T2dbHH%:~1tR~{4Ϝ9.]`:5MdLJի9`#&;M"h75604aS0O)šM>ځSt܂%C'EʕaL:tgM""""\|+W"** =BBB<pw@ʕƍLb.1 Y4c$""""c4Ȣ4Ȣ4Ȣ4Ȣ4Ȣ4Ȣ4Ȣ4Ȣ4Ȣ4Ȣ4Ȣ4Ȣ4Ȣ4Ȣ4Ȣ4Ȣ4Ȣ4Ȣ4Ȣ4Ȣ4Ȣ4Ȣ4Ȣ4Ȣ4Ȣ4Ȣ4Ȣ4Ȣ4Ȣ4Ȣ4Ȣ4Ȣ4Ȣ4ߧP*bDDDDD%UqJ>}ɓ'}X 72VwN:@$c sw=L2R{=lhڴ 6mbF dqJ O qXx슻h&8㳳0rp!htDDDDD&YԒ% 8>|wgbw5kFq(Jeb׮_ eB [wa$t{Fs'44fDﶕ\uռC4koZP(0u 9sk/@vb߾x1lmmѼ=z$*U$˗ظqN:D8::Y U ˩T*޽Ç䄆 cܻw}Xt;:aÆuV¼sg[w _6㯿:thO>[[[8qf5.~5ʖ-k^c嵵AÆ 1|PԮ]KXGݐcGǧ:֬YǏۻ*ƍ͛]w l#*J*к}|hMSs1 Bceeq OCpb|ww233GaذQx ++ c~ݻ"66HNN'1rh [xkDE݁L&Ë/nߎ0(?l'!z--ѣ Kԩ/WIϿ0j\p`۷ocƌٸ?rQQw0y4 DDDDDA =={_'cǏX)))Xz ʕx`֬8r v88h.;wU 2^֠\wń q:t>!gb׮qAjp"Ξ=m²Ÿ0Yۨ]kXv<<ܑŋPbQؾG <:8p(ײ5M*tNN$ѣ+zbJF~}OEVVHwA\\*T(]~Ɩ-kPgϞJ*᭷a ikѣWW|ag!acc-L5b㻗vygΜ///4iÆ <WmOOO8::"55qqq9<8::: kn?~Dx}e+ 5IIIAVVV1hRw+kU};t0l VVVX~ vދSN͛xGyk*XqmJB}ߒ.ڷJM*4Xfp?0-R%/\v*U¢E 󳲲 Ht* 4oR+WbڴHMMů@׮Qre\z O}& ,l'ڷu_Ȋ+B*(;u@J/^'O+X;ٳǎ/k[j Ξ=7nbɒetwk`5u6)VB8q4?xM6n.\gp|4Xvy?OR)fϞir !""""ҀA,N3XMjн{7t/sQ~=<|bk;~WWlڴ7n™3KQ6l(j׮%oS6݇G ǨQ#ヂ>}*~1'OvvvС9B5eopUdggWFؠa1b"""""*,7r[{XkE3_s_s[wJZ.Ϻjˡ]={LF""""X[KP6rԻҺ h͇4iM؈lGDDDDDDŠIDDDDDDŠIDDDDDD>DDDDDD}4 A,A,A,A,A,A,M ; Qx2̛41hE1hEƵe.m4L^K.\3瘽С#r|.\,rB?lÀЦM{3|^zU$oiaaЫW|P֭ۘ2e:wm;O'ƍ:ܾ?|T'$$DEEaҥڵѣ?Ɵe @LL킟_&N,L}&?x:w:rgϞ/?Q 0#w3fƽ{tի/v%Ia:V1h8q2O#7E[JT ..|wҺu; 0!Ʉd26X\Wx?'O9spb{ %DH:V]*ݚ4i[_1튫hy`|Gȑ߱Xz0rJER 0;w@JNRI *>رg;wd2޽!!?_Xd}D֭Phqi̘1͛iӦ@"c5j .]m,9;:wzϝ;Sg୷aɰg0cl;Y^,C?j<Db0ϯ>x4[[[e:x.]C?ĉ㑖[ ʻ IDATDPXl#s|ME-8x36oނ>}zcȐ0bhYu)"XQKₕ+dff?9s!8<֭[o…QjUdfu??k`ggkkki ꕜ8{*}$aФqppoMD"AٲeuUTn_X,)uA?ƍزe3V"LС= 0~b,a5j5,gdȰhRtfMm˖-ǂѢEsٽnݺX;h.F+ɰpbtYgZvZ⋯|| po3&H'T޿(lqttg6,l닑# Ӛ5kѣ?իo [DD$6oނw6t,LС=fΜ˿–-DנA}?Ǐ,QA[UV4h۷CaC0&Lb~I1{JtJb/´7a} }4mڴGc/P*gϞa޼ҥ;ڶ퀉'hexڶCubɒ/ХK7vp]e` Νa%HNN6kꚭ}?A¼}nثW_=+z2ӦMMߧvA>} nd2,_^x?^֬mu!>O:tmx&Mv:opYh741տT*m C``9O1N>dgX8jHT^ :GTX:u/_2뉪UC:[l/_̙s:d<ڵΝaHMM櫛sݺO?YGddF[C>qR8zxyAW %%k4/zҰtrt ;vŴi36T ᾹmN ֭ۀ^U@|ph:۲e+wJ`הw~hZδj:>Dǎ]M_=Auvx~زezN:QM\ϟ_ЪU >S継ruu~C ͦM}9ogm.Ohݺ֭[9+&}aŘ7o6lF.ѫW?. 3(h,|:uJUߏbܸ 8|ɾIII8q̛7+V|,^T&?UVȑuӅn;ظq-z쁕+W+Ǐcܸ ^:6lXe# *`u6m V^s>ps+uXx\ɓ}%s^f˰n*`ԨfkȐ!4t;cts>_m[sy,Wus@}k. Q֭֯?b̘ و.]:c*4t;&NCcлw/l1cy=zLg 1~8ܹusO`ɒ/гglݻ᫯1kӤIc$%%!66`^N@Y#==k׮njSq:xzVqk?in%¥KP'¶o>BbƲe_ ˛$$$رزex̙s ˱eK06oވGcE$z#sNq4UR1i*;v$ܹ1b(@}̈́BB~V/^`Æ`D"rӉx*I cDD$&M1cЫW|˸rNɹsg#2r~% Ǐ{`gg rzOι)5&lٲ;vaC>>>s1 hjP]\z)ի':thGGusssPKsV)`gg~ ׃;Z>p BCÇ5(W˗ kkk̝!#CƢE >xpUܺu;wF ֗_MQ*1jo4n 7e$%d77:ΝѻwN 4mm۶69 ? u=?ryV;rwlذV͌L&Ô)ӄ1@9Vz[wϿ??3&Hg̜9 M50l\׫-99hmg6aoo~;СЪUɚQcf+WuCVVΟ 7o~tB^ٲL"7nDxe<|T*!Cw߭ٳV-AÆ ƍu7nݻ4`kaƣGq=hgdd߿=,o?}綝wlZ?wb5Yܖ5s?b1bohB&( dee e U௿F&ѪU'ћ$Msj:YZ b…K@&M < n߾ ?c!0+ 6 h߾ae%9n"ץKg9;#H2YRrZ5UƥKFٳSg_k2e/^ŋm[(֮]O+\onh,]&|jz˖M5VVƿj׮~ڡѽ:(?Qg mo =zt{Ѳ6]z]nE*sN=),[`9 !JѲ?С;vُvΏڵkҥpbbc>4k4˗`Ҥ)hj]ƍ8pPP*FGui '7Xյ}liv>'K?zjHOm:t0i3q=]vE1bϖ#ڶmÇ;8zF2[Bpf^J ْ e|2\]] rm;*_N;;;?u{-?9 ;n l>˗/c۶P 8 X1K4-M}4k*W\Axp5_A@@lݺusxzz ^JX,FxeboBamڴs|?W̯ڵk!>>O\z]]_zbb"=z/r XڵpUiW\Hz쁽{"&T,_=zS&$$h=|~~-0n J ǎsl+KHOO̙}֙Wjs&Vǧ:Ґ(Ժ3~(S6Lo`ժٷo?bb[7oG`}pvvTrr2Zng7.;;2Y٧vΏ=ΝUTXv=/| ԨE>G^=o!99opT[n߽{iii}___<} *TbbB*5~?b|}k"))6:ݻ on\\\:K^%sʠi>|(ڷAѣN: ."-- :3>oook:ӯ^5k)C4ivz">>!jŋt7Wbb"BCwM{휕(~vv6nݺ5~W.._l0(҃Œl\~۷7/^UN$hEN5)^eb:w K9 6lL ?}SLGٲh<{^f͚bΜZ J%v܍VZѣF;Q>}&6oި\M4FÆ 0k?NN ۅϟ>]? Xfj֬!X988ΝxssA,B2d0>l*᫯AlFٿ_)ŠAΣ b>>ձjZLn.m[κݏݻbTΟW^ !lYz 7oBŊfm+KXh)ѳgwܸqS;;; 8_|Pzu\v+V|3sČEj֬ڵkVbA9H"*4kk) uvvFvoE<ׯx 22ѵkgcvvppDZZ"""S]n޼rʙuڵkaЏ`bܼy-Z4L>fxea-sTZvV&%c=ڵK.G߾͐J2{]`Eׯ/ذaz%sFnڴ իScpqqCa׮=ؾ}훝-|^ <Ѧ9f~!}NpsslYg`ݺ f͚L2X{od;;[ V-U/`Ϟ}X\ˣjժ8u Z =v"&aj>̚55jUDFFߎ@QQw)GFF"##nn5ʰ$+V|pvvƶmHII{}5bczEPX?U>?lCݺuо?L{M$BN,T*ĉѡC{ ii8zz&9eRcJzdS76mF^^^pppD:utN_|6 8x3ѭ[Wa,^+WApfԩS|23fuV,cѢ1t̟_~Ekb1K|j̞=_>֭[-4pkw+1f'F@?<hf{=p|0!S@LhҤذa#BCc׮˖-Fpp6m [C~d~5~'hRT*>o:*U_o]#P\Y̘1 spdž krj|D(hѢ9Vd;cRn4MWNPfMYANmIIIa:Fr~!\ .С#共cG.D 3ʫ1fLz:ۻ*,fM=gggӠ{nڵ ܹ6~z1c*Ǝs#bEO 4Y39<-ŋ/P/VV賨[l6lX 6b˖x%ѵk >7/79}999|g_MAzU Ry1q.'kjgDzEFk//֛'ֻܖh],vDDTlNwL>b,fBXd!Z DDodm-m@%[ZsQBUZA>kM@[wZ, }47."111h2OBLCt Ǐ#** .DDDyF嚒t6/̖xUZӦMAhv[аa^}i)S465vo6i:+^Y^ƛQKDDDDD%Zj7UuYcg]`>ޠŕ=F6HWEQ("""""wAQZ[ITVkrtcQPeggxDDDDDD'{ abcjZ*icr`6rKOO|""""""K0#{/yBm6kQ%FS9/ڨ6gGDDh '{d0(YʶR5*maZi@ @@bKNTp3DDDDDDy"!Q*û:`jG3RvMthcnղ `DDDDDDO0rT4Ǜ4sirР?DH,RѿHAyk!ad%UJkՉ'R"""Lq^ĉ) IDAT0 Ʋ g&eUaz-OSX" Z}7?stt(55e7틩:Tjij_LJaLhCwl772YƾB.+ dV@w,3OQڂCkFk. gg)[ DDDDDKMM<k//Lb,hlURfnXLSdBw8aۊ۷oADDDDD"o߾5LMƚjk]D)׶æ.Sfh7?QF;u3!!q5'D$BbBBN:lԨA>_aPXQXeyH1ikO $ֺ[tٖ5Z8::֗H$UU*9=HW17;]LЛ<|c5GҒ45r}x"165aRbdغl6&""""1w͵~ͣ~p3Cu0rXQ(AӪ0VG*Ø:ў!M\*_ f n &Qɓ[24vW=0|NV|y %,PA3/h6zx5>5*xMLs_?h9l 0,\k4kOS!SԲUh$hjª~mZ;lBovԞL_vSYM '[ ,CDDDDDEǜ|Lljhj k_rʙ[P.V%%hVi*^F?l MjEz/&0JBg,h }1ס?s+gnD΢AycL `AR4H:r*gn-ia%_rgz81_E]T$=yWQ n;2F?Xr%=ϐ35ByU6w9-'Zw=0SiWɥv-5ΆL`--a%\nk+ !7e.W OrcZ6i],ZX&;шU͸5 |Mmc=e#zLG#޳8K}/׮S+qm 1="dFYF~gxH)om]yaV53YϷ-[W}/oTYkRٳ qf@;ĶZ`g Ze;Fʞ=oBάy$GJe~+-f_ˎqkCf녡aַuQ ]߲unKz=g_OC>*~ѡq!3wy1# >2`nf=˛cV|tܼ-D]07o8rO9z ;BU9be|w !Py49?]8 g IENDB`extension-manager-0.6.3/data/screenshot-installed-dark.png000066400000000000000000002045721477302130300236460ustar00rootroot00000000000000PNG  IHDR>sBIT|dtEXtSoftwaregnome-screenshot>&tEXtCreation Timemar 11 feb 2025 22:49:07 IDATxw|enIHJ"TETDlܩW՟'gE#{ H $@HOvw~,Y6K&ٔMo^ydggf}ʀ+P T>fEW*S*=CGAGKDDDDRStDDDDDěBg!.s""""""ťA< )-N񋈈H٩z"""""R]nT&pVUYWk#""""Re:VYÌ?eUs,""""Jlପ!U2y\jyKLJ4Rky)*&0VYTYL~=n@F0heJu@ 6 em6PϯHuP{} խrǤ8*lR8WbiBHk5pV@ L bKDDDDD!YrL)JJ2K0K%H#yUкLT.]*sȩYXeq& UDDDDD*NYge DWQ\;%TVs+"""""YcQta2 ̢+Mee<"""""Eif-*x\qg ->i5`7˞c3=[(= 2} -7c]~=Χye ˞_ޡ3_GޏF[naV^;*҆LK{FP齜h-'e ';0:-F>O~xλ;xpӧOv\A2$o6˭tRA8ɯЗ.,(d %>[BB];++ sy_޾}7Bw,*l6{?,'yش_Ek!ӻhk5 㩌jBɹ5_AǖQ1c60#h5.p 6\!v㎴4NLijРAK?6s8Ieǂ&^ίܢypLA$2s[wXM `Z7h0c9I| RʣҾ2h;ֺulXE !$$ V?YR8Nrrr"+++$"",""S;vl5휿%JxgzOD>xufv,⼣gkcL+`:22kf#*&5jcٰX2+7łf#44 v&q:ԨQSffW wjV%hm k/痭e֣srWeg{^w !&&u30l#5JD-%3K jb), 6 +4Y.j]Aϕ 8N/';|^H+`i2a.Q"oTƹk*""RRUĵX, t=C ]vDsl¬Y3gΏk^1X,iizi. gV͊uf͕MZb]tfԨt҅Zb8uk'|ƺu  (e3[o믿fdRK1a۴i&u\L߿G~Q:\u 4aaa煇Gt%i,,ͯ+l~A*\ ^X2js2} t=u!((u2x j>4VkYߦTDÇw H9F|WiӆcǎqQ&NDf8qGرcmۆ3ӨQÊHeZ:{xddDiWX)o4 ;] VR3#$##⪫ЪU["##QF(DDK3N088Uj2bccUDZj2Q(O>ʪUR׳Y,&Lxڵkz Jxx8S|iL |Wᢋ.wb)ەkǎ-,nr::UVoV3ΕYl7 R+_R{A3(ҥ;dy77nrybJ>#kgn"R,?vnժe͛0zCU|uԑ ɓ zs֥*4zww=~Z֮]gu~q/kז뮻~>mFff ԧU+0o|?H຅I˖FhhhIf-,6s,+N7^_P2hɸ$ak~iÆL#GY]H5SP־}2!Cגq .`ܸ'k3Cy=awЧOVXyn0t`UBC تUx DGGb„|[ PP,l[_U?֕1h/Em㓮]0sB5{wV]]nW ~uV|,Y)ТEsvjΜ9Xl3fLbp0a\|ŬZx֭s=ܹsXhSO~}]ϫ'La̘1{]yXp.3f|IJyf*VX碋jsdbm]Vڵ+ݻrȾ}O_d֍w߽uoٶmk֬_"&&uK/=.E۷b6m¾}ػw'uj㏲x|v/_"*ڵk믰v*6mZǗ_~NϞWXEz .tooMtt3N:rR]_VXu%3WZT?^vǎ;}-ZDjԨ?KB 3hݺ/nvN'/;v`=,\=pqf?Nz3G~|Ԯ]k%111n\kRD\naSb*bc/ea4kǣ7^Mx9v,'K% 4i֭8|0}fɌy?G"R}lGq̄ oהw} 4i,cǎ3n*([ib,HIԩԭ[]ۋ"((;Θ1Uaڴ/K|wޙҥiذ!3f|Izh8~O)S>bɒL%޽$^x_1//5v^f͚,Xp>0]wݵ\q>ƒ_dl6>t*]tsdddҦMK.a>5}{9++W_};v&<~{6m7?p8#::ݻڵKDž ~Pî]iҤ1۶mcԨ{0MW{qc>NSgĉ;l$$$#qXJ~P\KE l\dZ E!e]%rrr1 [o)6m#GHKK\-&y63 )Teffrabc/_zS'3p56s_n{՗7G~q6]t4iGcNoѣ|?Jf׵ի'IIy]C޽{{V/Ïq1ysyٿ?;w,֫W/v9s~ 55%K\v/=))): àcǎt֕l>s7oFTTM:w…1MŊKxԫW1mڴalذ{PDrrdee}9+N􁴢Z4+|g <|+Va ر#Gߏi|gTAAA vOW3J/YLN9V+u\}Ν;+[^ll,~80/_+8q;sGw~[綵@3kߏ^x^8g1~+|O˗/g߾غu|Æƫ//'sy?3 .{nt؁N:if/_]wrd;Ϛ53h\vY{z1|0 }W^ogŜQDQYMSNYhcڵx睷hҤ{Lfll,Ǝ}UNb-S6Z4+u'Ƨ~#K/%((X}a>#BCC9s >XD۪UXt!G_䶗_ދ޽gPnFڶmkQop=p:@Izp~y.éӫtw7 6'NpՍv _mаaC2224hPm]oM{"ќ9?u6:wƙ3tz9qq-rΜIsn^p.bc/\縠?l޼M{n4mڄWzv;wq;/ԬY ~u]OT+99<;lٳg=n;QƏ=GAaePaYV ȯ-j,vpfǏcIH8u a=4kW$"R\_~LebΜiРC0 >S^{IoB ILL]4k֌s1eGqCO?S̙Yz AAA\uUN': 'hݺ͚W3x8|0W^y9M6ai<ܓ4lؐ7|#GyCs-زe+קa3{w2fh6l@zؼy 2#G֭[ѡe4mڄ|4{O/?={֭+|ͷ > vADmsH.Zpu^|{YƏwxh8ロň0lpԫWA#11'+'O)1HٷoWBffV/FݛlR)F/UDZ}W86[<}y?vuSrrU-ڵkgӢEsmС7>EԩS/L_D(@84III!--ժҪjYrS%TtDD222&<< 233IKK+U^e 4Va޲>TYY^D*p8={4BCC fabib&33L_rV)h,rr *xrr4EDq+ÖVIRRR$$_箩H@+ ɀDDn|ͪ$9,v+"""p4ED,++SN]Uԩ2+""RB)"Rv;O!$$Z-h@eep8!++KSDD4EDʐBTGuVM"""""Rt )""""""UU ݗYDDDDD*ab )""""""~)""""""~)""""""~)""""""~)""""""~)""""""~)""""""~)""""""~)""""xS IDAT""~)""""""~)""""""~)""""""~)""""""~)""""""~)""""""~)""""""~)""""""~)""""""~)""""""~)""""""~)""""""~)""""""~e 54u;i_"UH%/w=%\£oвe x)F~L&OZbJ?ɳ>G.0?a`Ѣ,X pyqF7èQd| z螧ѣ`[ٱc/3޽{Oqͷ~^, Dծ]>x4|p hҤ V/6W_=q]wCD+r~ED$0Fc\WiEm0.FeP"TÆ ;w`̘deRvԑx ӧ1glZbZe֪UkWynɒ۵kGbb_=qڵ(9vyfv7-ˉ'xɿSOPn]:wAW^zԯ_O ҤIBCC駟׿^a̘t؁-[\Ν;i߾]jK/a׮]>+""TNkNO9dz5'Fc:,_ Sp ;,;?s-7ӣGwn6wٶm;/\]Jy?<4mڔ1pݻuֳu6|uvJ-ӟWEttTZh/չk.zͼ,^uO[p:t֍zꑞ_L \s5qqq|M[tSʿh۶ ͚1|02228z~VZұcGxUvʕ|_QWDD*'~.Ӊt0} u-úF2}saӉ?S$묈 ʤ x{!119s~d)qcƌ`͚_xbO.pQQQ|'RM<ة3X|Ws^6ǎnJN;L4 LJOnӦw%ޏ>2\7K}wٛR1,6=ܑLE9y20՗(6lX{`|O_qDDD)GʬGʦ -R]>R]mvQ5Bh`,ّL~)qɎd0}.)Ԣ)w'лw_lH1si~IxrO3 UyW?S$0)hx//誈{ q_40 .oX`$pYRДjmӦy ;;'7nF~4Wn]|]\\K}ݰZGΝxځ]иqcsеkѿ}+.wYHH?(~һw/= 2p:ð2L_}EN_}wgڇH51Rw+1_='Nw8E&.)III;vLꔚʊ+HOO/llVzɓ'*:UVHHݺuau= ʳn8 ]R-$s5,\4,``Xmf/h=bUէyA!VZ'6)R=)h3n9e9r+VdϞ=DGG3|L%]t&>5͚1}ѷU4kGVVo`Æq'۶mm۶ԬY{2o|L$$$~ҨQ#~e-۶mf1p5ڵh GzHIIeժU޽{ng-^5jЧOobcc1M'6mv+l޼aŊݻ-[ҽ{Wj֬Ibbsԩӄ0fh~]N'w1UVqAjժEU+T.\㮮V]vCXҥ.ΞЦM"##8|'+5Ka&MJ"##9z( .&998:u@FF&M4aҥ{7|#6ldU4iҘ={ʼn'Xp0zZ]0o>`8ܹ;((Cp%HJ:ł 8y23O-[$''v}x6m:Nrϫԩ)ó|0޽X,?K1M㸸8:wSPPcǎw'`;ԭ[3,]?ZarBCHHH`޼ Rf̍0"~b \YLՉ4yl?\1Wק^To'ۙ83ǰca ?TkT{:+R v,X@޽l{+,XwlrOw*V+'OoG.iٲMW_GѰa7o@)|w.nʑ#GyY`!W_=:u|C52#O8ڴ >5vSh&K.}v /Mhh(]tfEL8~tv wfҤXڷojՊ/ԩv't:܁1&&aE$$߬ԯ_]v1aٴi3'N`„\hz/_{Mb߾}xPl6۹bLf}+mٲ?`Рǟ2e*kצuV>]-[p"&Mz B:Ϯ]2uLEnݺg^{}͛u t ZVj֌dԏ5k6{$<5{d~}>~Cǎu}SRR2#rrr0a"Q4hЀI`ҥmټy &}2dlQsrr4o̽M 4iB˖-i|ԬAݺu <΢~n`߾}L+VbȐ!ԬIhh(_-sɓ'i֬YeU?:k0Xl!A!\{/ʳ3p{*Ǔ8p<;_kO`^{f/:^!ShoZrd"tӍ~|_oZiٲ'O!;;l֯ߐ-[ϭPvmN'aaaDFF_\]s5hP W4M>̶miݺ5'N(Qoժ%}9dff2c u[hxx0DsСB9”)[ ?5S5$&&ڧkt:Y&۷}\a->5W&%%+VrM7`|ٰa#]ŨQ#;w-[`׮]>WܪU2j׮@R)[`ZjoXn=[&66ÇvyZZϜ9㾮p["=FTTPuٷ7Μ9Ν܁λN6mbΝYx={BBq8Add6mtr1N>CZ$..O>,ذa-[^|}:tC됞gh8pիЮ][ׯw1j]\yY V t:lDsxgPԠA9|0M6eǎE̙Ӭ\D)R,9i˟0hυMbX0-VLkO20M 0W[Kj)R~'{v/۴i#F…QOXVns!!9rYYeÁjM嗵\~ynNM6n<凇G|6OwӧOi*MX,Vz^FՓ`Μ9aX<ECnȴZӛ&MFjjj Os+&99+Ws5jHF aZ٬X,|cjjjeJhhkזVZV ߮y;r>}xa#;Nta*AuɯN~yCYѡCrrr8u;lP, gϞY;{n "##011HNN0 #ٳ)y?{6̓2pԪCTT4gϞuw-ȁY~='<<={szé]6c<~.$$dee1{tօq1/^ru) Ipl-FKוܤ@-ӊic:`:ͼcX0,VWW}?`ܨ1"4EYFFzgϞl߾ڳ} B@ff&O?r ͒%KYd)u[oyU3bb\cJZgtUӧ]oDp0`VXz CuCxx8iiihтuǟb۩[.5pB^Q#]ƙ3g9A||k'qnΝ;}_LL4cbbdff֭ۘ?ӈ;ELL4;w%.)""BSdd$={?!%%03ftYrEEz]֣GwΜI fW{}LL{0 HMM+q:ٳ8}6ldÆ3d`:uȚ5xN~}X4ΜI棏>oW+{]qrڵkGhh( J$ŻNڵ+S~T7shh(YYYtY[p8ػw}᧟~F\vY;weO]lV+AAAl6i۶m^ \r qqqF<7fo# 4pv޼ П.]yf;i,\޽{qםk; o$88Ghnv๖̓,^3ٓ(N:Ͳe}~ӏ݋58y}7 ^Y뒷N5IH8̙p:>oJJ K.c!lV֯xA8+…w߽9ڵh6 lܸŢEXr^ORRsex\{5$%b֬ta{=Yj IDATp6lc}ɰkn4hȑ#:7zɬZ믿Β%2T~}֭+iilܸ$Wo7sC ѣGl  ޳+\߿%g9.[mޏ;vݔXNק]tDH1N-;[_tӍٳ[H`a>Z-WTT6 |Mlz,x9O+/{(TAAAԯ_:u.炈>@]g%,"USh&ŋ]WD& 4zw.Lrr4%`SW˗pO &"CNNJ$K]g%`lH0 A!MASVo"""".33=f@)0 Ѹy d R%(hJ@3 ׏r""""UjjGkަK`O ##相T&iiiddd[3ը)NAS^'~tRRRՍVDDDiBJJ*iiX,4j͔@ςi:X,dddMxx8!]=|eff2՚)UT a4MΞ=KZ`l*\DDD*iivrrcX2JRД*u_M N\tWlDDDD ,0<"UT9 8 5SDDDʊ/jŔJASM8U.L."""P4s[1՜)"""eM+IAS_DDDD,hԱ?{6p7K{PQl`/؍-Ă&Q߼/Ƙ7b={J (v QIXϝk/fgΞy0N!B!JM!B!F%B!BDS!B!QI)B!¨$B!BaTh !B!0*I4B!B$B!B!JM!B!F%BQ 7n *T(PB!$ᡄ\cÇ%<< ֕Pt$|ч2s U[Wu^;Oׁ{uʻL.PB!LK:!iժ%VJLL mv(p,333EEESLbزe~w~m?z^!BFM!@QTU-0Jx RaL2ܠZ|͗<\-m^nj:thϥK%:thn:ʎ=]7e85E/B!J:+)nn $++.]:Kzz:k bĈQ$$$PbvΛoNdٲZ]666Ο}x>Kz8*U*BXXO?gϞ,]8{,7n2u4mfpN+++yg*e8c.<S?4&NǻwyÇ155e-mۆ֭[{z=#F4i\E f}#'"2 ,bʔI|Glق>t6oJ`Ŋ3g.} {dQ|ڹvO?SSSMjh׮-}m^7ޘ7ޘE֭+o'cР!dee_ӿ tЁu?B!(m$ϔ}x)4l؀#G8s,ǎ?6IF011}>knnN*U.]ʕdNN;B9r(W\!)) [[[lmmؾ}Æ e3gβbc /55 ϼysZ*/+jw9Mի>ɓvժU{`̥Kٳݟg֍:{cjԨعs?r=ii:5jԠM֜>-ggy5TUё5k~gܸqnݺ2}{ԨQ]-** ^Gdd$K.'%%kk+/^)e| __?ʕ+GfMΝ9u4ǏÃ_~Y'qss#>>>;y)S&\X&Lx6mZ3`@7oɼ|'Z+Wҥ?ޛ΂ҥ3&A7RRR^\!#X6ktڙ^za:EIܽ{y<v_ !B6ң) O0`K' XYYqu/_K/LbaM4mAغu;?4$ { .\k뇹=ztG3sDEEѸq#swqΝ;QNmvɀHJJBUUƏ]z|'\|fjj{\/777,,,ӏoHIIa\r֭[i+n߾7NͩQO0lHiS:v'2d'N4ZuyuԦvmyᄆ^(yhB!Di UƯOyv}򾲏g6ɳmG E"!B!xL? +J=I4E=\z3B07Ц QZI)J9!B OI4E*@B!x6i (G { QNmL߾}طbF[n̐!sNNN޻ر֭[ȑaC f۶899yٲe6=v؊AVC_L !(=43-x|700s`ooǨQ0wDjjQQ?ɂ ټyQObYŪ|,[,Yƍ7ps믿Ffx睩E~ 8xЗb *T`%$%%d2bccWϕqҤIcR7ץfZ|Wt8B!q* tDS<󒒒p… ۷f͚PiӦȘ1㵄9xЇ^ɀٰac:q$'N|{+ހ^g;h B! XR pvU#S~íQp;̸B "LTU%--*U"88\hS{߾' >lذaÆ(_={l л*~1K,#>>7o՛m͚Yc! @hѢǏS-3?b͚qu˕+W>|(~GkK"~=t{xMܹSBgfjJ0ђ˾MlPNJ)gkCalR" KedFEQl2zB$ϼ ~G_sy=zlԃM=R[[[HHHWWWN:%?`H0\Jzյvz LMM]ۅc'.&ue033ڪ^؋t!!grcc}3˜n߾Ezжoݺ գA7heVRN%ǎUB'dibWG*vE{*[ѹ^X)dӹJi>؄H)y)))DD\TR!C9;o0== } _Ă{̬+8*4zf͚珢(`.r17o)Lq鈈L x7o^ &&ΏA|YQ%K2UU ia[Mω(ΐl{XDbB's4(@BB3Wb3e}UVU̙TX(eeeE2e,oRsy7nkޣիW#4479www233 /q-8 +++TU%>>=yᅾlz,)CQrB/:4ik1DO3g1dKݫZiӦjrz*U*ԬY """{nvxniBh۶ >Z$*4ݍ_곘ڣL̜ej2,?5AB$<[[[֭Kݺuiܸ =ztA~zOxx8&{ZhisŊ 4ѣGQ {2x Lll7flذ >#sÃo {LϞ==UjvKμ޻_Q jںd(kYr@BBvvv|7?~7ke=ƠAܹ 6-Sѵk\IWvB%KyWPL-޶mk?.>>ڐԢ1lذGFƍxâ>YɓQ #G?0 lْ+-6!ӯc >ʕ+3d`,,,嗇PreFzNNgXGϢock{G 1}6(u^4bBYkӦތ _dΜlܸ N:ͲeKxI?~3>g޼\rƍiu1u4ƍøqcINNaǎ,\X+?ӳg BTTczSXh!?j x7qp-֯+zw4p~>g].7n`17@tt4+VܹΟ'''>#Xl6' y#..5kϿX~ٲԫWQFLLL ƍeqs5/_u뵞޸13ɓ'1Ot::o-u IDATL"330[rr2&Iٲet)@[!7)) 3r S !`H2 t:*yvڲezSgnc#Ggɱ5zurdPLQʺbl scէ]}y_dzgo6ãɂc^GUUʕs.P)깲l&Oc/$>|X0}W)9dK$_[f/ojN&LQ6[mz8EyGndY|U}m569|89˻]Mܑ;WHΟ]d !Ŀyի/={琞Q`bqgzwhUz=]}^faڻڂ^oc<% i)V 2(nBzh !B<%ڶmXd+WB\\7oV`8 UyxR-ljn-V[e Tհ(jWu155B 8dڊRb,,$B!Oٳ?ϵwAskޓ/]<{?/q31,0 f֭۸u6e8p`Umly饗pv.K\M6ob($B!xJ=ݣiز{KٰaldH6ml4hNNdÆڣЄxI)B>Ľ{ֶ}}>8Nǐ&fIcĜ뉋% В̍%"@d[]OvfL bbnHODS!)ruzCz_nsQF>C( [P l=c(GU_JJ*Wa5H)D^[ˠ(3Εl/﫰<^*Uc(.HB˗/FH+WFI͆ 3IBqnS*zTUO]=݊;bbTŒJFJJ ʽd[nDGG.Vj]j^hgdt :v@۶m}*UTz,,,hѢEz \zjԮr#F ~yxxcccX}ҥ3:3)ijǗիڵHKKݻ]HVZm$5lq*RzE1ah~*fh>6Ixd1 !0y&QQQŪ‚-lIEDtt񮡴 22dmNͭ>uEd.\!deeni߂={_Z!J <=;>=P{1+*:PLLQT3fo֎TڠpB<)hg^:̌SN_ʸЬYS֭333|s"s#33 G2tڕ *W\k.vm֮2eЭ[*VHbb\yfxxcffND%`nn믏7'sn|֭iԝTǵkϷQvҨQCx{_>̝;S&NbΜܞaÆHDeZn)ѹs'jv!33SNt(TL޽ٴi3qqqƔ=ŋV#F ̙34l{{{.^޽PU;)W*T ..;wi bZh߾vvvDFFA+ގaÆrQ055IIIϏ8M=4h 7n"3"Ov4lؐ4… ۷BtО˓?XXX5 Zh޽{ X=(j777t:aaEUU^5s?|ٲ$&&>}j۶ 7FU S߾}7o:/x{edees.7oNժUHJJb`mmMǎQSJFF7n(v̈{?iiyn#ݛOZ?Ν;DDDv_ !N=Ŷ 87(^E ((3UEgGp*2J]6:!{r( pjf Wn~}k֬~z4lhst⋄`Bׯvx{svʾ,\o<|7ʗ7i_>M4f,[P޽,_ [KXw$trBCCڵcmԨ!uaժ5˯4hXm֩SGY|%kKһwovUh=RLs=ǺurJTL:ucuٿ-&55VZHٿ .&&/EQϯƝ;^ڴiMBBvՕ2d`zx ˆuZL*'33Kw''|ҲeK.pbG^=033f ,Y gPjjV{{[*T￯bѢ%,ZgNbb' R~}֮]/k3+VLHLHHK.'::Ov'33+VijmuvXAVN:p,we_NaٲYӋ]v| ʖ-K)!u/!L1k:Cљ3@1`K z|rY믲l d!KoH.Mb[oY>|/Iϼ@޽ݻw9|8WWWBB?ʕ+'t׮]ĉyV̔Cʵk8s,ƍ4hPÇ}0exyҲs'$$p9N8IV-t2lP\tt4[lՕCީ {V 011^=W~w֯_ӳgk+v9W"}\qu/_IZZUVy`[>Bzz:pRe˖xΟ0$Zo``M([ KKBKѠA~ׯGY|% <N!(2  "2ԩSC{۶XXGQ#ddd<055ѱ 1l۶C;G5=\-U￯zhgzu9|0okqթS;W0Cիh޼Vիh#G`jj98:իڽ0y{?#<*>>^]NVV֑Q8889!!W1K6u( :E3Aՙ%8-c@͹JvY:3+ð[ʵғ)?LM̻sNG^Ɔe2qm911ؒp'0۷ok766Zrh KMmg Z[[s!9΄3г8|Tj׮=DlllhԨ!277kkBɉDRRRYǏ 337ojTjj*bnnܹSBMpww'##[nif$3 g"".s1u늍-aaai[nڵw>} w sp-d_SjUi33s155CQmMXrAmd({m9b*cRO,`:7ޢ@=UU/]E31 ߁{Bd DS<hsː^YYYi'r=Wrrgwtt$11I;^L^:KKKm^dQJRRR))ɹwp( Immmwg`dYYY%Oެ^ %m mǕLHwj*Ɠpn8REKz )Z"o/$&&( 'z=z g?'_4mCQ^zpYkM<Ϝۏ[nho_|G#o;HKK{`B<1PccJ-Us{b?@QtN"uz֛GIO(cQX$D DS<ڴiÞ={Eb@YYz-u6ԨQ7b>lقcǎ@Ϟٽ{7o$==;;;LLL"##֭[qQ*T@nΜ9G۶z)t҉[311ֶħ(Οe\vwr=*"##D<<9yu߻tЁ?܃9}!$$SN!OPJevO(O~mСC իT^֭[[xƑ׮]~\+VRRRԄvtիSVM*0NKKKҴm {A7֭˞={z[’Gaaa)["(iii\p-[p5rG}TRFuVJD|erLf__ƍy!;`jjΝFB0a/WDyWp*)Ϡ$I)izٳg1bff!9r>>{$϶iޯ-NT(=z=RsIRj[oji[dddSFoa9o1~W !(Xll"(8~< dUyxEا/vacʗ/ҥ+B!Sȴ%%%q طo͚5?#3!Cv,^TwQ,Y{K0:!:(ZS=CCHΣF0CQdң)DJZZZ Da('3 Æ -[73rpf r*U/f˖O&&&޽ѣ_UG& VZ#++ ''\RRR1bT$ܜix{f\;( F֭=Ki׮m!(Bx~ ;E#&*^(`nPwJ/P}1w<.^ ʅ1{;wf͚ҢEs.]#F ?zA#"~͍_"(cB JiO(DK.6C+W6 IYL7,'QjvGzKH~2q !rDS<071\zk2G{zT.66V 11Qۗ/_݋Cl{}9Ν;̙077e˖9K3zDD\kruufXZZwߐ-'U!ijI'}Xс&W7YсE> 8bH6ᓉM$♗%[_-UTaȐEN4EyRu6&Lлw/\Φg@@__>}z3oނ"{Ԩ'ڗH !xz)^O,TU=S{82mW7aV?'W4?o(:CzbQq >$55gھU#qٳkkkZjI۶mغu[e W`iiݻwt˗/FŊ^*U4_B{m}hӦ;QPUUT}S{)rӐLQUeY,$?@z43֖u`ii;=zt端 ))ׯŋΤIo-ff+:Qw/1178~Deܹ~MJr ٙaÆbeeEr3UV3}4&M;o_c|픜lb۰anܸk8B'cTR}2d0._BNv~F;R2؏^O&6 i~Žsiy:JQcz$ϼ6mZkH̙ƍ ԩ,[7ߜ'1C>}͛˕+Wꫯiܸ?֭۷/DUx ПHIIر|DEE ,Ν;L8+_Î;i͚Le:|\B"ر_}:ߞXvmٲe#zS'tc!LUī?^v<Sn9B<1ƞXVlܧ˱/+xm<ۦyzx8{(}z=RsIkҤ1/os-&$B >,_Yիps2%Gٯ-7J|m'Pt(aPϭ6JOBllLǃ@V_U@g[ͱM9_8N}jn(eD\!Jkkk4iog^I2Bmgdd0o|zKϞ}9gXX@ZՃ^O{GY~Ę~aÆbm]V 2 -n IDAT(nBzh QtО璒P!i۶ ~ɒe\ qqqܼy~[łWg ;#.bjn-V[e Tհ(jW>kjjJ 8p`ɦb ڜX!eh Q'u`Ҥ)ܺuB/3{o墳/hѷڷ/fů#^f9;n^TnG[\hmܺug 8066ּK8;%.&7o1ZBVh !Buif sYң)Bرmjjĉرc+;wngҤ7177+l:ozrQ@Q9gGKޓn>v==117!=B@M!B-~QΩF I(l=CtBF'dpaުF)V}))^իא"Iyo/8W]ؾl{UTebZZT^ ƺ#B!=._LXX!!g⋯^իW /&MBtt46l8'{ Ź!X7N}(QU=wtv+ʶ_"4. lSK*)))(mQYZZcX*W mSvAyң)a? 1رm۶2. X1bIik *UTa!De5DFFv:Ҹ{.k׮#22UV/ɼG l^GE1AQLr8AXAr8ZOM8!0Y HXt:nn[.( $%%sN!++bsqy7oUb1!ĿE``bAٽKt(&(7\jrkGmmmfobfbb WÍj !I43NxzzbffƩS|e\\\h֬)o9sabbxhѢ9{%,bu7!>>Zj;wɉG*Uի'K.ӆo%{+ڵwqQU_wDvsKq\s_ӲLl1TZL\Qq\Ap-qM` T=s~F9\*U!55svѢE]kr||޽;ժU#%%͛C㥞3GGGDFF$$$M2-Zl0 ڷoG`` ..;;kքC.ɱӶmk Ҵ$%%ߘ  ĉW{nШQC~y1>8-[rA6~͛OJ&^ 4 00V+& |YԙhO:Kpt To re?vr4 \\1:\bjna߾HfΜŒK} ^ŬY\2aXYm;_FĔ<;^>eڴl߾MU^SYн{14h믧e6G۾};RRR^Eƍy:>zIlAh׮kעf͚,\ӦёVZ:uj0utW׭[OTT4a,X̺uܹygWvܩ$SD:n_c+CgM&G gL.N.,;y㬏Jt\ ZQiqz%N.y&d єޖ-۸p.\`ǎ7nLdINN>8777ۺgL||<qq'%=='O@ll,8qիW/4]؉Œ'*T>|)MII!**={ҶmL&5k$7{8z(qqq4hЀ={x&&M0g[5[!Ly 80 <<<ǧlZKJJѣENTǏs݃qrrb׮eڿ 9X}h/&g ajrjrdIDKvk9T09 59amTO DSnzϟ/gO2/^a\0?l.|ݢRxR_11 47KlAV+"..ζEvv6VC;xёuk8ǎ 3󂭾ٜ7=dFʕ3)zgΜqVTT222W.wl6sYېLV+θУG7||*aJ 矍}޽o,Ӵ""rm{ 6@=VV%f& CP+0LL||mx~Y%KwruubS||<9ԨQFrJ /QLKK~rr2+V0 0_=INNo*Tpݔ:w_NNnnf.]:KhٲիWv5Zbر#QQ5%*jeI\gva= ||1jJQ =& aS~ijz3XjNS|NC)'J4׾}{֬ Օ֭[&͵s璨R uJ||͛7qмy3,{ `ȇ ر1Zl%9y$V6mZknӧVٳڎʦBcxyyQzu"##s䄣#vm$&%gϞm6DFFbXtnJ=;;%00+/Kݻڵ#,lK%""vtkA5WSI݃R<)єb%**#޽{ٿ? Ç3pV+o`۶m̦M4oȑܹػ%Kҭ۝iӚ ٳg8p={ ͛7퍋 GQF {lii]N:n:nF޽x'8{,]zֽ#F̾}4.ܔ} П `B:u/,(= *43}yId/V\5XR }Pdٱsjɿ?%׮j*ua23f4s#99)GٴiSy"""򏔐aLIߝwG4@n1VRdZ` >(ebʊ.,uD?"A...4mz;$ 44ڵkѳgB3ȺQFrLDDDD 4tV/hATP+Vw(b jF>}pss0 'Q:uCrDS/h;Rfv;-PDDDD/FCgEDDDDDĮh])R)""""""vDSDDDDDDJؕM+%""""""bWȵ:{\y """""(єʕ+w""""vX!\ R)""""""vDSDDDDDDJؕM+%""""""bWJ4EDDDDDĮh])R)""""""vDSDDDDDDJ&M@DDeiӾ.q *hOt?sy(""""E(є^ZZeoX1c˖tԑ p[dolݺmۖcyooV ?Vys(;/85kB8|9F)""Ũ*G-p>'" }!"e"W7EhFҥ0t}@^ҥС,Y-[63st4 S:/>cӦ \W^y OOKaԨG:+÷ɓ?/Ԏ 7{xl'OC 8PwÓmӹs'~[lf_xG1).ggBqouB?ׯWb;vۛɓ\nѢE̞+W.v[09!ѽ{BuyhԨan݊Ѝ߯:""R@ *MێIUoF0:Zi_"r5h;¨Qrepu*WC=ȋ/W_MZjeSR%Oʹsxy7i<'^Űa￳t2ڴiM*Ulut錓W)Xz5V>`@(<|]|lذ#/&3tP^xy[Ν;0 IӸ/*G?Ņ TSl,2;;3ѣnSyꫩ(+W?y]yĉi$ߌ L>x6?eXbeUDDA1ڿ\ݥO+TiM! ^Ϟ=ٳGz_#G2+8|0'~F=f̘Y ^qlق@DRR2o.+W.O>m $%%8<0&LhK:L͚55Q6nD˖-h<{x۷B,^U#"rSqrhuJ0%וTu4!-l>zaºcI>qH!J4Wd@qqm˧N*lԳfZ.4 :4iȺuz! VZDh<+Vү__ΝGJ>kזgWj lݺȦMիٺu-TqcW*۽{4jԐ]vbJKh߾?hOpwwVƗrƍzEիW *kמ2L&ILL%p\˜9ߒ :N27.^TtluuO{r+x1mS +f%U`} k['6)Dv2L&[Rlܸ?+eͩS8uԫW+8vCn]N-[5?+Ehhϧr]hv-[Ql5+Tl >~<={ңGwwmqEvvN:o۰-$''c/[w=w3j#$%%]رc\px{R jղ7 CjK׻nܸz{ymׯ_l""7j-^/kbJo2' m+ZrKJ4E ;;_G6oᅨ;/)s^-;E`` MG^zL1,]s|2n6Y2q'**uf>}z##iԨ!ݺɫO?-*۸t2KPPBI믿"2r?'~J֭GU>/\{}@}4i=ztsN˼8>|7--ڵkQN233?=7={аaCx`8s7f]ckn>VZ[ocƌb'_~5cqw?tDD vn V VK.Vdhk7) hZbid8E8J4E 33)S7^gT^~2ILLǟÃ̔)_O?l.5uSv-SN_UKM.|y񽙐w-뫯NټLTxuSEb0n܋DGogҴiSzBIu6xb4V7xw}___^}BL\]+sprr⫯syg3[ [8Nʕ+OqX,_#eàEDnj>v2{qFYN~5Fwj1cZr`^"r/0eeE_/;Yv,ܼyf&KkX,XBÀ79z}Mu W?b͚i/́y{-vi_Y7 qp1g(ebʊ.l^~rEyqh*^. mB\ScwXھ=xpkKUnq(V3fL#(oN$""bwJSVּ[jXnMtj͛QJq _^g-8"^ھ&"hWu3gСCҶH8{ڽI^ͪ/Ϫ7V \('ӳZrm-eۧws!{pөGSDDDDb{4vإ/^hUm ei`RNm=_Ya"(k}:W-/!LH-}JH5_J22. ]d\=;5wْ-["WJ4EDDDڤnMG̺>mms2I: ㋟a6+5w;fk])"""";G`St 0.\Um>{uR }ݟNE=""""rM"b^iKwtʵ=bf3F^;D\߮M`k\s{_=&0LgbFF~{u#G>̳>s#ӰaCرO#i׮-yӻ0nsLҥ3w|ȕYb la8di'&'di[{C!"׍єu㶲5j\.4nGnؼ9ǏId͚d"00???0 HKK'66}"ͽa]pl u ]L LV'!'ߟa8`88ⵚ"r(єG&&M9|2ooozFIMMc۶mVZߗ3fթSG\\\XvקSxxxpI֯HJJJtؑ: Yd)<0]͵_R\ZjIA899q1֭[OVVv6*VСcqttdAdddJBBm_-Z4gȐ{Xh1fF~miݺ!!!X,VLIHH ,l wٕJ*q1BBRV-7>w*T $d-}Ю][ٷ/[s;vu6uivA_Ft'''~2m۷o.\ qpp`Ĉl߾޷ѱcGlc24.N8ԩYn=={[nĉfj׮mˁw^_SsL< ,\Jpvv#3339s6ʯ@@@͚5姟1slrs-tڵP} GTT4۷#%%U4nܘ'|Cw$!!vř3%ժ¾}̜9 %YfSrebPfM[[|&@ɠnݺ̙=s|/֤գ~~̝/ Lnܸ _FTZ-Zr$ۛ~SysiLy? gGd~>"##Y>};\?2pfY K"N88b&r}TotdIDo$"k^] '6ö0!"r(O&y=\MobII9_(LJJiԨ& ???\΍f͚2fSO=5ggg\]+Gff&+rss'99ٶl6c6_eԬYs*UDjj*ԫWݻ`69{-j|:֜7.`lcL̥Dח؃%&iiiSqsXq^p .~k88RjRRIMM-6.77Bmael4mRxhy+iX{7 Öl %˂#;'b웥OEn0]):t;BڵZ*ö>== //B$%%B:iԨ-]:YveDNN 4(4tՕƼy ]YZ\ix{{z0L$(&&}q]9s gP̼!yޥɶlfPٟOvv5jԠQF\ĺ>>>$$$ؖҋ= *PB3 lmǻ۶lْ#GRjU|||HJ|t|| ONNZZZb: ]Q5TZ7U0 {9MX-XՂ i ɇ`%"@nn.ٳ;11zN}WWW|!,\'OݐRSSټ9RrKUlfdd$z(""""rUhMbMNN999+&;vаat錧'qq'XvҩS\]]9u4W&==6mвe 8r(kքEnwD0 ͧ_DGŅcaժUq8;;oF``}`ܸi͙3gә#G .ۈ Ν;G@@YY^E\܍)":::ujc*U_e/9s 30puue,[/|}h$̓XGMAnn.ݻw~z\ɠ^z̚5YfGӦMp*>g}AVVV siA>moǎcʔ/ٳg/z.ODDDDDHL&\\\':ǏǑKX<< YKF quuܹ$>@d~*WɤDDDD4tV777, YYYѬYSl띝X" ,^vһw/N~p'))ٶl.+Ɛf[NMMݭԸ333 m.\d0؏M"XV}^غǎرc899q]ٳ?4||?prrd2]6ܵ$>>>PR%J(>]]]qu@ZZ:eگ=hܜ Ä3NNNxyyҶmڶmKhh(QQ4nG pttQA*UZ撛 ۮ][|||pqqGճquWWW*UD۶mlfgg憳eCi3%""""RvєZ . 6 .p),ӧfqMJJbٲtoooΝ;ǦM%))ݻw3d=Tʉ'm=GưaG ]YªUpDDDDDQ,,3(+_:١Ȳc[MII)_bjſ {n,&Lҵ"""7t }^^^ 0<[Keke .z Y)+\ݠ]?""""""bWJ4EDDDDDĮt_HVV~:&R)""""""vDSDDDDDDJؕM+%""""""bWJ4EDDDDDĮh])R)""""""vDSnj_}5Ƚ z_}}]"npdWVDF׷_ͲmԨ!*3gǞlڴ!C_}e<<]0ytڝ5 /m5W^eGIHHfSF BBҵkwN<ŢEڵ;!!kqҤ 8;;s0|֭/HBBBz̜9C0nKjՒ_|sY;w_'ӻw?f?VZ%nӶm[N|q^oзy4F='|СY~S|w/ر'o G1qTPLQVZѪUKF~g}ڵk3uꗅ^\̣>?˜1=_̘]1S8w"0L,[.]:~<==ڵ ƽxYOre0ӦMXV>#zaa[HLL_̙?uIMMuV~mћ$xM֯am dddkۮ}hb?_BǎشiUi?Jrrr1))ijfGiF~9sѣGVc>͔)_]om9{,uEn݊-[Я@|,Z0~lm@ڵ ^ѣG5qX,$&&^A^}re0ݻw/\E:9<7n… ,\b ɓ'Yx }7qce>|~K]]]9a^z{7sQn Çcmv'O޽{ Пv])0W_}q˯r2ZnUj2^{xϯdRVZ ܹ?pѶmQDDB@X{0o_?-uBuXbe_݅#ܹ%KْFooo:v`-i$jݝڵy `Ϟ=&&:s !!g\?11&Mٴis|ݷivxAΝ;W)q&{i!%&e-!!іdXVvM&Wִi3xڵ+;wʆ ٿqrr߿1u!00Pgfa^-u뮸M}Z,rss9,;;gg' o *嗓 %4ӧm?7+V8Sw?ܹs׷,8}gܹsTj8DDDΔh\hbƏ˲e˱X,ej/yg|קM'V?11# oոRXڦ;ǎoȑm8JSZ0!z[9sڵkҥ ZdԨo3{>bjՒSbMl߾KѬY3ꎠ=w]mۆ{qĉW : ~N,cquJ>;%)+5"mܸs= j/,)^TT4-Z4/Tֲe f3zZvM=ݻjtĉ_Rٿ?f͚Zj{Trԭ[W/OvZo^MGi"#SFBoo+~PZEժU]v͚̓5#!!yK0~DzhD݋X^~U.MTtkTj++8I-T^ma„I}L{.\ɱcʢfޏ5jXknj*ԩ]BKة^Sl&QEkq?'eȕ)l6tr^ye"#_60ߌп?x1|}}ٳo hv z5HYR~ǔ)_Ю][k0qx|||?}!n݊3d=dgg7oãHZj_LBCf>%SNK0h]a||~~4hЀ+)RSSqww'00'''O㏏ח.]:S68c jF]s޽ӦMkywQ&?.ՕiӾ7ߠQѯ_bcѣhذ!ݺIz1b8w=2))hѢ9ڵWm^fΜAΝW?Or9㭷}ۈCeڴhժUۉIPP<2x1:t䓏hҤ mڴfOϯnCGiv>& *^$&&bXh׮-5j))`Ѣ%flٲq^W^̟?W_}ǟzֽ{+4lbyģ>^zyGog2q9SOͼzy~.oÇ+R}6c~'FzMKk;"0a"o͛?w}GZZ:?ݻ)={;wMΖ-[yqу|X{yдhтERV[,ƌyh&LϜ9RzuF|1jԭ[￟ԩ_q/ 7o.??nvfΜ}s ꫯ7L^adffڶ1.u/;͡e>|:ůL IDATf͚sύe(~K.+skք0} |gϢz|ݜR۶-;"6+&O?kl߾>>Į]}(^ǟc5kPϸ>\]{F)Lʊ>_v(Xy{ߟbjVޡUZZ:aN3[̳YX @%dR)""""""vDSDDDDDDJؕM+%""""""bWJ4EDDDDDĮh])R)""""""vDSDDDDDDJؕcy rRRΗw""""vP!\%Y!UZZzy rM4tVDDDDDDJؕM+%""""""bWJ4EDDDDDĮh])R)""""""vDSDDDDDDJؕMiuЁA[0vӘLxx{{3fh<<<Ҟ_MiEEEѠA}\\\ s@ .IMMePҞ_cy R^Oϗ}"0Lh/4l؀.]:I\ ֮]Grr2... [lm۶gzkrr̄o_$חЫWOjԨAZZ*[`ȇٷoM6ˋXVZj-$""""'GSnjQQQ^׭[,N}aiԣ)-jeϞחKqnϿdaƒŊ+Z[/モR֭[OZڱ*6>ZW\ $??ŋ彊FP˲66Ge۲y[rss}{Gl6vn_b04WC3æM) ܖ.˸>pُ6mzRRRRRRRRRДk)|՗Lx}2&/>S\qR iL^{ ӧ?ܹs\/ k~[1xE<3aDDDDDh^{5o&͛ի]w3hN0 ?᭷vڵ ]w ҢvնЪUsf}:%""""ҤM, W\q9W^9 :ݻLzRR"ÇcݺLM஻`00w,Yc0^xymq[)""""4(h|!VgϞyiӦ53g>Qh!&&6Z+""""4E,ضm;iiif~|d"""" UPP`hĦ.&&MRó-]qYw}mvܗO4G F GK RRRRRRRRRRR27vD*77 """W& D7vDDDD :+""""""~)""""""~)""""""~)""""""~ɀDDDDZ3!!M`hv((W^NAyEcHQiL&#¬ev1 5BQ%X2Yf**LH a6)*H)""" L`cySiS VH3)"""D5\6EMB+͚H3MsLASDDD WofI3Mf&Ġ?}NҜ[DDD$@M>'i4EDDD(44Ino>DDDޮZ&N@׮]cy_!`ǜ6>n}sc,[ 777`Ǯ4fh~/>|ѣ/c֬{nƍw~suՍV+]Pj4LDhH}]< zMvv6%\p@W &//'OvTom۶0nX_bJ>#^~yN]4Bf6TX!>[䚳U"4EDDf3[fx.ů~u Fɓ6|׌}#F\¨QWeO$%%2c;;;3gѢ?V0/]O{(78[%"LCgEDD,X, ̞~eeeβ{ҷo_MKs{P֭[?СCرc,X1|l6[Nx|u$'Bds{Xҷ!mJVz&i'GGBL4sW]m=+Wgqy` %Q/e3V˃}zbi@iFi۲sc{n|()a§_cxv`tDځL]m,<ү7h<^ھN'ҲGSDDDꬠ<ߙ3enqqqݻ"uƛoA㏛ػw/_~oqq?g}۳bJ喛={rӧ.J_}5fn yy|DDD0u=Lzyg暫9~}}Mn`4bzF%C IhKIz9ywHKo ڻ/<1jm?r8|0Htw$;zJ{Kb93 ˙ {_Eg9-KRz_|jea<Ѓ|bgrvyX,λ?z [oh4r}eL;NH qԦʉbcc}{֬lӧgkGĉ>}/Ç-=zW_'n^ q1]2ř=idb_{FXBT ]Գz/LZ'WwlV3i:~o@8L&re_40wwJVvZ_!8 5'2,h97o?&Ғi謈Kvv<<"˜15 y衿rp7q7Uy}ΝHHHpljܹ36|sbcu4}ѣG23fL3ϤW/G( XޓEb„̞=cNVXIFFup6n^mZ;+˳ ȱn@A! X~춟JƤ3i{2~ґ^11oc&")"""u֥K JVV}9_^š5kyg=̙3RGNN#c;RС>)));sz;gwe˖ظq#[nn-3g>ի>|{f̘\uՕ t=6Nu5,EwAlhȩvkdCzUZF@8.t"9'.I |x O¶U8yMΊHjşG|`0p9P\~oX,al$%e#[Gqq02Czjx&+iiixͼ‹x|b29g„Я__f|'O0lPS)h# эa3'+0'2X{"6azPڀI2U':TI??`R׎YsLB56ȆL֞ Am[W9֥rͦ* u@rLz'D="""Rg[A9~8aaayfaL2^zRTTȑ#Nֱ⡇g͚iӆsD:K,چQw^X,amѣiL>S݇ r_̞6v1scTTTpx>;@.ygx[8묳4h۷ow[t͚ 8߳➞xj^ޱGq^KQEIg1#zqf&#C]uXcKsat;3?\eߘ䳡Mk>Wˣݙ 4>=q9BҊ4]<VnZ뻜u@q1?KPԩb–-?Ï曎}vnm2֭_ :͛pMO[xwyG8t0Æ 쳻W_3q ~ϛ:`„Uz}W^ShժC!;;?߿1cFӽ{7|5cm0bįhժ7t+~'1nX ?ِިv;lݻƖZ'mG œ߬dSfv#'' i1Q;eؕ,w*lU//oVra]$(- ?ڮ}Aa!}ryPRٔZ'ۓeeHo؊4 _}Z]]?*WW.ܖ R9+4]6 PDDDzF7vGUAA!QBM]LL 6*g;`s[,e?./{㷋+""""""~)""""""~)"""M>'i4EDDDr{o+">'i4EDDD kc7A|I3Mf& >$͙H3SP^Az˂ZQnH(h4C'K4L|D1MfjHQfÑ"JqMASDDD*(@A + 5dVZsc7@DDDDjPA!Q!fCB71-k[WX+/WEASDDD((PFCgEDDDDDį4EDDDDDį4EDDDDDį4EDDDDDį4EDDDDDį44yy2LQД&]n_g4vDDCgEDDDDDį4EDDDDDį4EDDDDDį4EDDDDDį4EDDDDDį4EDDDDDį4EDDDDDį4EDDDDDį4EDDDDDį4EDDDDDį4EDDDDDį̍ S\\?RmkÇy≧ wfѢżַ|7>U)<_0?f=_nݚy^;+|Ν;tÇ 7mM&&&ٳ_h|xx87t#:ufɒL&ym??ɿg{׎+rss>m:Cv#0mX,mۖ@DRx]v)]v}}fb_w?~,G9 gG}]!ǏGV?-/bժՀ'駟qy챙|ŧw޹lXw||t!dU >Jhhsfّ#G4Α#G㏛`PZG}6E߃}P˲66Ge۲y[rss}{G*l۶Mc7%L(M`Bg76###7nqddd`-R(h4CZڹ~啣3fsyU/76[v\_%G]u7B>#222as̅ 2E*&""""ĺu9ts)cE6FwY_ѣ >nyy!!!9JLSyH_񤼼~+**?aܸi@="GSDDD>|sl6s]w嗟hLz!6Dii%vKɺaN*{6?'ԓ)z4EDDDTl6[_lǰ( HIȥ^^[\\L^=T_|IZ1F#FF+--%77/uJQQ_߳40;*`q3']I#NU3 bpzn쳻zשSG&N1ؠvV>|_䗺ˀv룶9aÆzg6{1ݜH`X{G>=zw}o!;QJ[[;d4:+źu9v,AuX,.|RRR*c$%%bjƏ?n"##0`Gֲ8uclRPD֭[ϐ!~b hǎ{I^tѠ:ճn>SL&#éL΂]O)r(hJץK~&֯[AZ"¸Kر#yl۶J;wfЋiժGof1yms],ZsN 2N8.'##wKrᅃ em]yPtО,-[Fz#&''3h@dɒ%dee;]n=ҥKٻw]vWƺuYf ef:uȕWfuݻoΝ#H.]F6mݻ&E"--v|MDG&qlr%@nn+WСζZuj}!vV^l BHH?&''S^^Ή'0 \|`9Ɗ+˥]vn:l9sf߾},]Ǜ׳fZWy Vlfsڏ?T.ZcoLƓCf]jRVx)-^v ;k׎}~J#G7\{9&+./ -]5zodΜWG3f -חk7x@ǎyͷ e„ߐǶm8^|b-Zǯ}o&y|rҎqyr%9XB7u***KFG 0̌;>BTT)'N 55"Ƿmڴާm۶w?7/ݺW0ym[oɿ/X,οhka˖-,\1;v׿5oyyuW[xw cܸ몜J}Cx)--+.wkٳO>vq5&'''N}l'Э[7S$$$pWAIIIH2 dffҺukgLIȆ ) 4={Ҿ}Z}3ۑzwyJJJr씔;ӫWOKvvz3}#GpŎּyst5kQRRBII Brrr̆ )v::wt=gbf v9;ٳ3hnݺ2Y֭ýT9~]ϣHGDDNJc4cG(əd ͦeCfFUO饠)-^qqsd1KFyyH9=z8AYYn"##ɩ-;;V! ʬ=xyyDFFb2>|;w 2dk׎;wKii`m$$ ##*ƕwHZn]wfrq∈*q;ܼ*CaСs{Zޓz*C/H03 PRRBTTvv;WTXzz4Tii)yyy&S(hԢJll َswm۶7˪6:(U@\\,vvYsqq. bbb((({$$$EEE o{ P\\\}HHsh4R^^A]Ե(,,$''76 ea͞:kr~+Î^檟wAϯ:ܺ6ꉌH*))ᄆb60]ip>74`lV+(--Ҳ}E.R ʾ}?3|pˆ_>w[nt D.]4L&eeeL76kntLN1 00;9dΝ; e˖-l߾َ-[~Wu9Y|l6CbrM'!LbbARR%K2zhBCCXnѭ2vN8?RT[;RRR1b:ubŊ>i9r\0"6oLff&ׯg̘1L2CWnӦ5ݻwcÆ '벳cҶmۉfZ|ͷk4+s#9gɒogĵ=U9|-[Fff&999u`VjA.Ŷ6Go4Q b %<<BHlV+(--ҲGlnP:+vr u~J nf>t!k֬wKFpgxׇIIYOhhhէOϟǚ5+YCWL̛k֬OphUv܉^͊YsxODGwDDD"<<b X0MX,IHhGBB;Hm v;9'Wyó`T=z,]\}؍FA_Qa[;?~>?3^x!O>8V+W1jԕ|՗k|g[Dy[3Y3e|>DDDjOTTsKiX,mۖZLFFA|p|#;iD~_}~&1L&O-}L$33c~U 1цc#++iQXX;_wݵ3} g;ˌ?ԣ̜̣>Crrwv9hm۶X,6NHNN&))h~~>Gٽ{77o!P#΢ !==;Qt0ls k{/BG]MTék1.kQQK-i4)֭[m댳:u$,,\̦M7n,FN'N}ѵknV[ڣGjemNqqq2{bٲ%m4ED$ Cf~}9r11DM^=9r~-[~ H*{7?E<1}XI윺vi{`k Aopu 0ٳsuFcՒ\C'4i2 P]mFzw߭`֬T&""Pΐi3f4 11\w5$&&hnZ,5VN шdڳgj|2n>PzTg^C\mɁ())6)Oسg3 `}۷dB}Se}ݫ/n&22ҹ{9viiiQXXHN)//op;EDi<"V^+ vp5u  Ș1;Փ(M$bn/GlD@M2l6쒮M/?e6n3i>y?peҵkW&Mcc8˥gзo_:uXc}:u{U.\1111̘1 t%%%/\1gq?ݻwT%@.X38zo>In 11 ~bbpHLLdҤ6l_nfѿzJ ~lxEl6/?<xM2hfu d]֝l痔#,,iv}BN֭pyo,_ /GfԨ+7niiizgmcHKKʴi3?~3穧p=|ýLv?ϿIO?O>~LFFS{ܹ/c4ٰaw=  *Çgh42m}U]|`>t!dU >Jhh(v7s s&*PZG}6%`)))G~~~>e3.P5xrfM]n&kgUn|v}|6V?[|lo9۶mMi!!!Uz0f3+V,硇 ""4MtCͬYy|XZj]vk\'…8g5yyyA=gAzz@l"""0Mon,D@֓6HLL{B=uYզ>~͛xl6}OǎY &N@INRRR¦Mk@DD+V:˙3g.G_ŨQW/QVVlC8z3vzHK=z$;ںߌ&Έp&Nckh:2?ݼpKOa|Mv@]M_νL~XĤ~6-({M/Ȗ%Ann.G1vXnW3o2e2;k7KQQVJAoD^^Giqccc0 vF0Lja͚Mj}.߯__ΠcN۷򪗡DD3vX8-%%l۶A+** HOl"""?<ͩKGet6lIUVY*trجSg+=z3&,,Oe񥥥okCgEDDܭXJUW]Sq|bzQQ1Ç7:`ٰl< FiyFFCסC|.ɸqc### :oq[[of]44cEf6C?v=rIuCŭr9???o˖׻wyqxx rfh0Ks9nwhjr3kv/skyw;vsyu| ]E5`Y)..v޲ i*ח6^{ɒ_x&78 pgee7K !$$+zIDAT//?9tVzNh?hڶoسgN `2]vr Cc@d7> ʺquHYmvoP-D [u]법V<_ZwMú6" A3驇>qVGΩM3z3.˕uTSЄ!& """""-U.P^{.+<).A0(B`ϺI<:<}{,[!F׻hVN0ḞfƼBa=[t?Ik^ У=z Ϯamaue/fv\VpB^N&})#"""""/ͽLM3zt6ֽNڂr Y[立ٵ{J]ܖ=BӐZw """""-y ¦uov,O-PE<!yzwj,۵>Om H)4|5lT4я{[ {&4Xz4^M_zӵG׶>߽lm6EDDDD/᪦!kfm5m)zj_Mm ԣ^֗^MSiٽ~NOݷդEDDDD:ԗ^FO)T=]Y0]IٛYײuvN æކ4}xLOP """""W`gӽ\Mn=mvom 5toi]W$Oa>ky:4-›^L}5M㏐YS;5ozM˞y_RDDDD$Xz i&%kT!a_:_vͨ7 """""0ښizm]ЬauLo*4a~\| ʸ﫭_Wf4s̺MO8k*WS|W2"""""0x x[_U:yPc6k*K{ """""\| z&m0YZk neVmmWSe_{)keI FtkO(~L$@mKxe"WL;3lVKϧ/Z>"""""-YmCRk*_[= q%d֦&2!8?Vkg]r`LDDDDDκ oҟ}C D ˽-}q2EDDDD? k4Ce:hɀb}t0PEDDDDAau1u6u~L!'Pa>$PYrtnEDDDDij^驜/3Һk!/ :lVיfuނ4' ]˲>j}=/"dBp!kDDDDDZ[zj4!7*lz_uy4] u k"R 'ipXO_= R[A2i8rL$"""""UI~Z J -DC)"""""uasBIT|dtEXtSoftwaregnome-screenshot>&tEXtCreation Timemar 11 feb 2025 22:48:49 IDATxw|_f7-Pie ˁ(Up [zBT2F"""""O Qk""""""C$"""""R^ (\ScCgM Z5EDDDDqv"""""RuԘYSWEgE_SVсfBy~e-"""""ᨬa/!Bq^)"""""5Qi`(b - |}~u{DDDDDhj8S`*Ϲ:HEج"c<Ycg8 !""""R**l lB2+l"""""5AE@5*lc U)1 exT=.J?T3f8P,7`*T,`go Yi,DDDDD$(>%a3QyCfYfYW`)P:VIE7ز+]U90k,ͤAUuJӭEtָYUQyUR7@v`BeU}mEDDDD`Z#Kb(<K[*6bl,\V[DDDD(l%Ϣ+M6a֧4@c(OGeU{ODDDDDA(ViZ9 Z7LجJ"BfI,Ჴc?k,"""""nJ,43fU AeGiV[R 6Wf &@W ;mY' YBQE̒Z1 Ͽ܊^EDDDDD*V03ӚW\=2lV0T uߥ6Y> tnSL~ۊ0(E6IJRfE`c0VK%PDDDDDN.KhBb(g0a6+3TF,jc4v4ARRDDDD+?% t,f?e zNg 5Y\gI H*P5&VΒVA3(D>Iuz~cEEDDDD+.j^?s+X5"hVig?0=&"""""UC0inm]\H'б:l L,vI>=VR܊z=XEDDDDNTT(@?n_i uR*o4` =צ">nHV=k8qɐi\>Oq:f(WQa`i.6>4)iN&)t&z"""""R9FC3//oßS qD@-ŅJ߰XT,@aBΖ`URkfqWjq 7Xz./L4{.*dH(X,K'sP8Wp&_I#UfIi&*y.o6m߾Rudnp~a)UɈl&""Z0}7'''?3.Y3KG0KWr'UFEhVD.5s;Pw4jԨZ-Zx'"n'== q8<3jrp8'##tv{eWJDDX-5jT-|2hBClϊnZ $@M豢9z{BB9`l6222Q wjՊS릈YZZO7L$(D@DK RaVJ,$@ی~|'2k\ ~""AY]HHlJ#MDD$\ X,}pM,m۶e 2W)rrr){YYY8.JÿNvUTeiUjfE ,&,nY.Kxf56lYb_>u֓NBB]tf1t޹"5ѣG+ܷ~sq1~ur )Ybbi;ցy衇ٶm{mۆgyFz#wKfVHʊ-S˦jəgywYL @߈V2'4]~ߠ _|?}ƎÔ)wd ^8ݎb믋#tr 7g`02|Pnffx[#ԩS3_aCM@i.G];ԟ}'dZ⤨鿎fX:[Z@MR[&5 >qn!}9.{サ3><3l6F7ߜAӦMBRz|bątОa䩧aÆ̟?ز01PiCfiZ6\kguMru > 5{H`Ĉ 䒱lv'F]wΝ; + G3~|\./cǎ1bą̟u']v_<;KK`ԨK?Fx-OO?%\7dr2k {ԭ[>u&55^z9h4Ҳe bXzǤIy{yh\ 83L%--^1uѣ/W~,X?C^ݻ?Gp33fȑ3SʓO>͈2dpn6V\Us!'IIgifxaࡇfÆ%1)p`2IH2KUP[4KR?d-TׯW~gqiii:H2u4իGdd$۷O<{`03SٸwZlI~}Yb>&;P~}9СChܸ1999q]ҵk֭Ï?.g㩧޽[PuxMϞ=ػw?_|))x٧xu68?qBu%c =ǟK/)d2knH.tt}vouVԮ]ԩ0Ltލ}1w<֯M~}?;֯p8t֭gذے[[o̙P^=."6oܹ믣_$77oeϞmۆ |Lr ]v Efr8_?ݻy1`׮ݜq<*([ec,J0]h->>Gr7n\~/"Rn_;ŏ{1Bf3c\ROnz?&9ž={IJ:]\}ӛ1c.a߾}lق:upwyhs]{Cff&쎹hbV\Tt\sᄏ9묳p8z[7֭0 <3$'f۶LrO^ >G/>Q|Ui2 \ȴiz&N}hTֲpZKe !o,~/K]%f3F]Xg;q$%С 6$::O>7Ob֬ɡvEAƍطo?O=,>ŋj_G'.˯ر۷={wAMd4(AUֶm[~ukBzڵk1NyI48_|{>IIgҪ;9r2Bvcccܹ.gݺuX,.RRRv۷ωc05R~9%(w+۶mgБ :ݻ |EDc6Z#-+VSLSieh7`1,\sAǎNgߙ5C cǎ uD|ܠ5͌=]җ;=b*~'/us睷,o}yһwOzu~5*]gʲe?3m?6.\Th cOz^z<$ڶm 7ܹ[<ח5kֲq&6ls9== ,Yƾ}[7>3lʢE߳yV\Ųe?3g\fz>vލn_ZZJb[SSSyٳgwL޽x1mڳ~j4$fTD)B&Z4Nb11y̜易}[o3y P||J_NDψrᅣyY%;<뮻6-[rꫯp0rjd0m\b%999 2SY_vAbbwS,l$)L=p֓_ q 2m`7ԪU˘?jbo]۷oǠAxܯOyZsrr|ZS'Į]={p9=޽f9s_Y.Of G:tmV.֭+111IDDJb2#< Ӧ=˴iҴi#[n棏>!::k#GPNyB%yǰZdgx$Փs FnFNK/ҥطo?&)LFg6i&IMLL g-w̛?,XH߾}ر=qӦMhР#G 6r7мys~23sN~}EfX,Ν;iٲO=rڴgyع3IJ˨Rr&=TB(^&{{Çgn?NBB]va14mڄɓdM)K/lKG֠i4y9VXIJ.r+W/[nO?͖-[IIŸq~,X7̧G\~Xo#Gg l;? cǎ;nwc?صk_֭C6ɾ}v{fϞ=>4jԐsfΜU#F ['b67Y|))hܸS,9S&]@d֮]W_}%ާ-ū1E2V5ctb YrIMM6myキOaE=z4$slڴ{?#NNԡC{^xarz$&&9N/ yӉ}v >A-UKP&@ff&!-3""R=jt#wKsm-?!kѬA?`V y=S~}N}tVD*ATM;hH9RS]~2PvB'%+C ,4K_EMϥ҃ ՛Hx#+++$eY~JN bVYβSDD 4EDBjbHY,eVDD5H0cnp,UɈl&""BSDD4ED*jUh'ܻjTGau=hH)""""""!)""""""!UfXee4EDDDDD)hHH)hHH)hHH)hHH)hHH)hHH)hHH)hHH)hHH)hHH)hHH)hHH)hHH)hHH)hHH)hHHwL IDAT)hHH)hHH+"U*H3 ]*AASjH9̡0*5TkK<*"""eUR~LN4Z N""""7PN)ՑT+raq88N\.'. ӥ)"""`h4`00LFL&fN4mŴl6F#fxnfj "Յ=߀t:lb6G\DDDddannjV)NhJXLӅ 77B||-Lf3X,p8p:OgB$)hJ:28rrr"::k&"""<痜NwCM g  L'yyyDEEY5)H~M _ v|C墠ʬHx>xM O V:l6qqqT#Љfp8 =)FAS’5p`4X4񏈈?Ōhpj 7 N'DGˬT(dJXSД^p8Z-\3бZ-M}V‹\I|7 wF;LG$)`ʈ`)I3HX:I%WLhySzԯ_B=kևn[d1Qr+GrM*:"""3Z3%\)hJX҉gWNy<22"']v_~M6 uZ{:thZ'""R3;Md2\(ȝw^*nK~ Hq qV3 !H:72 9=H51"U0`0 G'##ӻ=;;y`asڵs:LpS},%%޽\v\rXFQҿ Ə[Ɓ9,[3&D>+XbwϿȰaӻwna")))]t ~:ۧ^) 0!CFO㢋.a䒱3oHxyG:w❟3Y'١ .Nȃx5{xLƿ:;Bu0jCAS\VQP`wgg^^~߀;u׽l۶^oL'22nSt<O;Όk+n"aDAS4&;;'ඬl5;UW]At2֬YUW]ɓwz7O)'&&< fy똕]9̚3ҭ[K~֬YO䒒CqСB%KI&ӡC{@nn.~Ӧ@JJ 6ldjݻѱc>V\yŗxVd۷rZٳspy'uh4r*:LttW_}SNcܙ_|SXfmЯԩ7cN>S"iԨ)s YYuf|$&&r# X,=nrƌKf„ك{g}xWy 99_MytS9OqWz*>{1W_}%s]L:f}W_fҤԪU^{Cs{A.S>ſ kזeDGy_/s͓XߗᄈиHճ-]fO(rrڙxnr8|6 fXI))Pmnj>_<==M~6[NG Yg].'NFF&M6.s&̆ KܯsN̜z#"""3 9>!α<6~H}#|> ~:('w~jՊl6c20xFhcZ:v8n|nsv|sxvQBƃJLX~CDDDD~-rI6Ymb{N:S*okq-rr9h(t[7rO h(ñHxQ*/-YN:ѪY/|3grO0B,.4F[z9˗/n)q߳M+l9<-i-)_$(hJgXA[P`OfWpDDD_BtE|lu¿2!+L7d&D묰)5x|Akq\#׬| t˦Tu괎hg;}W^^5tnj :0iK:ńğ^@VQ@jqtl3 92%C``J/Cv<#2RqUWW_UUYvf!0`&/:\/: Ft=3!\6E$(hJֹsB-X .]:x3fK/RbŪsg  IIOO7&++Ž!0c|w]{AgAOK}yWp:K,^#K,c  x[ 9+ɯe._S򐷼kzǩ5Sj4єm׋VQc2ǎyL%ݵsN֭KF +Nׇ )_*`ٲ7n,+ R&Zs9\^x}v~c n1|&%#Lf . ~hjO~Mw`D`0=1+R)hffraۙ5CC֭IKK㣏>媫.g5l޼;vrc)((`ٹs't֕]ѱc{~}n݊C`0gٻwsA|ڴI --Es!bccӧ7ɭ\~'v؁dsի'999Rv@Νۊ;?sO޴n [r*222HLLdذԩS|O;~L>i,ǏhbRSSeȐ4hpVf8ZǹNy f2iܸ1ÆGD{ծ]Xg233iԨK||<;wfZHIŀǟ/ҥ }f׮,] ׯǐ!HLL$??3ޤw^Zah4nzHIEzߏ~cǎѼys[OK0Q:Lbb].`$111'] ׯHL[;|K,ȑ#DGGӿ?ZjI~~>o_WPP`Wt…RV-:)e{zcbywx5k忲il|5kưayo9sf߾}ԩSBzڶm/~饣y㍷˩Sǟ?BerXb%6mtҺu+`(x~m ]O_}u:'߆l"55_̡CIHgyfSo]e94hЀC(Jypd?1DY \.&'Ng?} 4! |(BפYQSj6uf37~Zngѣ; 2ѿ?z'0f̥^۶mq.cؿ?+Vpl޼V.NKƍ喛9,\#G I?Lp=W\1;Rشi37od21a\}lڴ{xaѢIKK#//ի0x &MHYާo6m8&zشi3[l+1~udɲ"ٰa#cƌod2 p}vnqVJn]g6h֬G#95F\233g1kǁݭB&MСC{6o[m6j"##d1DD?[hv(RShڴi7f„뽭\s%n=$55-d2A^^-[elٲ޽{@߾9 2(`9ݺu%**ʻamvڶMIӋsqԩm dmlق͛н{7lҴiz^5!!6imlذ!@K-HHpDmԥK'ڵk`(|=-F]@~ Ʉ"33[Ν;a4iذ ?~HvH!""t|z5mڄMxMZq]͛7yfՓCSڶMfٲ_)))/b4((( 55 ࢋ.(y:pfsy4iҘڵk 8~<Q"eidƵL6hOMhe43g_Yy\.U9-QnF t zCHM)r9z}uҙ?/[(p;{iԨ~D)M&5sf_1t҉ݻ*?++BI֮]{|w)꽽w>.]FAA q:]>>vI ~Z®]!...` Z #F 矗;O޽h޼c߾}X'pq:GO8:A^^>YYlٲͻf:Iթ {k.49w^56%/'[K:yދϷp([n=k׮bRnmFSS&.'y8Nj:[GQﯿL-Zޟȓ?qq GvvvfRR}SIOOVZnEi,ݻhdee܊cX>O_YY;v^;9f3 ""Q.`,Z=5sP)G&пu$g+I<-. юD,?#I\'mb[&R9͢ #v&MaFh, Q0/uڼy +Wb„=@1ڵN5D-?k999lذmWqjpmvظwORػw/;wt&+VbҠAS~Eo 7ЦM2˗ ==>}zx6mf?6l(FwS6G?P~BY5j``ŊUtޕt_1|W\|E'`6M[$:4ҡrp:]\N\.)=_˻Ą``ȐAR[1oߎ\+l6 6ds_nHKKYf{{ڵ8'fMv / H,YuvQrͲ/u:;z(Fcǀ3k]v=%eA,Xzxz8t~Žtҙwߝҷoon!u֡UVZ1;wĦM?;֭_xJw:Brr23g˄ [ 7niРAP ڴI̚w.]{ӋoX6=SUVC׮[ΉsW_%''F%H0 rwMjF-.BLyn>fymm w:Rx;Nv,4iT3E>y ֗_ΡuVtء"Rc4"C߾}l6c2_X)h'.ws|+c&X;YHuTPP8rHH"RQt+M+M+M+M+M+M+M+M+M+M+M+M+M+M+M+M+M+M+M+M+M+M+M+M|ǟvUDDDD4KJJa4lؘ3gdڶhb6lLRn^aܸiذ1_|%Q\+P<Ӈ nٶm۶v'^S&N_gʔvUDDDDw"r{vС)Z(ݮNfVi]S1u4ڴikԓOvSDDDDr)bVpQ(xzzwv5nKթQ] =M~a6Ol6Sn^xa+V %%3gٲDDDPt)ty'hdݺyP~=jժ 0?z=GFFѶm\]]?+>N>MŊxשR%/""'e6bbb(^;>ƳV3z@u 6歷ޠS\toM{]rr2*Wl6GΜ9/M߿/#O>[Сn >;wѽ{W^~%bbѵkw"#>cݺYd)VƪU`J.G0ařu2d ʔ) @Ϟ_ϙ7o" 46mͳ͍F#}΂l8r('NXVj׮Сl >+WYt)Ν;2t`y/EDDD ])ݻ9}4[?Ju6 {x>L: J&O?cƌ3u ̙G )R-%..g4p^-, o.˖hѢtܑ&N̏?DR(QQLbccyVZMjUiѢǏwe۶/,wGFPP#]駹;XVV+:`d|g\t!_ LhhӦM'226maGSv;th'OdРu֡bŊ[; %22*k1DEEQaa3g7o?~mvʖ-Creٶm; ɿ2;w|6mDr刎f֬e@ޗ""""z4rq*T(ϛodbӦ-ӧYj5Fӓ˗/ӫ׳L>={ʊS80ʓOvŋ>} s Cf4gΜJ*oۮ҆s&$$0zDGGӲe q/_ɖ-hHɄGP\9۶+W@ٲe3/_ɟCsg`Z0 Uc(QSNd `Ϟ%&&4h&rɄx5i9kX7v͛ocygΜ_ӤIQX1BB6Z쬶-+];vLjJxzz2y\ezg鿋S~Lۼ2=w&kF1my/ӯ3),tzڵk_?pk,]jժ矲tbJ(N||{Z!nnn/ԧj*lݺW#qvvε&|öm2=+v[Eٿo1￟k -[m {*7mBll,m۶f؏y~CMRSS?-55bŊm{y8pCqqqB]:t(Sꫯx޸3m Ν;ɶuժ&&&cqttqYըvu֭[ի)lԣ)Ç1x0=FǎJL5ʕ+G׮Op\('Oř-Kqpp^z-[f͂Y>K;xϟqF|jcxyyf|'hi/c~̮]|J|||9\]]8q2c|ba.]6m_wa-|=z [/nhy7n?5-p;99ѷ:.)lԣ)ի1mZh' ,Yԩlh߾-_~[ömiAkʖ-O߾a6Xv <3|чFL@ cɒ_Z,o1ŋ/8~[?J}qsse%>T,LF Rh,Tpuu.LDDD$?a&0TؔLAS !BBB...8;;嚉:ggg\\\HHH}M)42V+jHgd)*YЦ]xxxDjjj R(hJޛhAH`h4WSQДBb̊ȽՕdL)4xGjj*wf""""`LJᢠ)N\lI2XDDD3˄?6.`0ʈ؍`p}BN R(ݸI1U4=4i/p >-@wYǎO0oނ[~]DD|2;Ԍnzoycq5_n3f̧oߙƍӣGo~i8"""E?͔JSuJf?0|Pc6%~e....?7[w`AۗMѤ%r,}8LdsޮF|[Ƒ*wAD$4tV$ ٌNNN9n @Y}UʨQc4̫Gѣ?`Ƕ7|"wLD3dZ>[k>17g]a{LDnr:4-}D@@uԾroȑoо}[~q&ÇcL8???VZ !Yj)3`ݙ4[>#/l۶#GѢE3~/4s_0cTx>?܀UC4kl1md_~ wͱGbҠ9n9zm+y̜Æ a9L89۾W2ի[o׼ۥ5W;[;?0O?úuᇟ2;qFxŋSFuFz`0m>C/~„̜9a1cTZjQouvZjI:u"_}yXD_`̊H^w3<71+"@4 MCgPq(fZ֯@RR2>>>\{4fгgzzrL8닏`"\]]1L|'k׉-[ѤIӦ͠MG߿/ֻh0oǀd+7Ow駻PjV^î]xzWלQbpZ,>YϣrJ$%%%[= {J*2zr&4fv(_<"/^vڰk.{VСl_H"˗ȑԫW QT){[?`4ݻc-[ٳ0r˴iPTImC___<==Ӵ""w]LGܡ-\>V׍.Tw{󿯥r8,,``XN_IӮ>x8~ 4 r _ ))ŋeȐ%>m{vޓixk+k9J:mFٲe8|MqQڶmu#%%'NsSdq_OOOS1EGGc4o{rΣV0`Nӧt⡼y3ˌ||pL2S֦Chq<ӿ0 b-7iEDtPוAM(iʶ.4 ^LŲ}q`0l"͏`3~wn"\ (g{ܹ 4^7СhѢy}=;wAժUu`r\toȑ/绾Y-ZŋԨ|5 WFd[_7NDD Ƭc!jZ"t{=_4^GpUW1>Șj}G("7α"w'q9nK1rmY:.\߿푐Odd-e 5իWc{sT6+njUٻw_ݻLJ)xXqL8x ތ!!Xd);w⒩=, ay'!!l=<;#>p4goFGc̘OlrPj.Pd {ݍӧ@8;;gk~[ѣ#w IDAT_?mٲf54Im>ݱ/jjI6u{ȝxcʢݱ H);Ʊc̜9UVӼy3݉#$''MŊݻ;v1f̧ׯ/ ̌sI6n̈#Y`mE>}'|kbFsQvȑoPJe۷+W39q$رS]l-lj'9utCccԨDEEsYx \W^~ztm `Yn=ܿzk׮ƴ!Q1pc ]7^%22V-[2mL NfMmCRS]t2:t?ϨQog_i駻58q~ͻo >vŋV7ms KHbb"s',,ٳѮǜ]KǂՒcu\Э C>CSlYxc$G7n 'cg}^y%>cVX…/ԩ/8p4i+d00>c&O)SS]Я_[{C,&۷v)V3g~wEŹxիW4lvG#&&ij=ztOgrܿ>|^ŬY>x̜9)S2yT)S4[l~~~y=w˯2d8K* >„ _c6:t0nnn|ͷ\N|ry՗0af r?u6kX|m޼N`47n] ?d!gZZRԬHKԬg8HR?ܜe燯/{d}a N' LV+Vk*57Vkڤ@Z8NIIҥ,\(ǰ…xw."=bԨ3ݡCldv?$dFUFYYjE=Li a:wE!<t颐)N7G4jԐr؆N2 c`0bJ&NlDޙ%R>Yݨc9_;WWty ~&<<@="9P=dÆ唔vw]|xnLܳ~Ɯeu8ڥ `0pJp8{sηsŋQXQd@ASDDDR?Fch4Pt{38ۥB``ɎK\*ًQ),q)-X Wq.(]]]xWWL4EDDD!Mcx,YFmAAXd!ƍ%8>Ѭew0hbšK.ošK`4HԴmSD$;Mo%&&}Œ6eɿ PrٱcWr[Prfs|gϞj۳g/ڼ~_mͺu Ig'EMӳgw޽+NNN8;;ӣG7ٳBfgS[``0ˎv*h+wGz3E$o H;y$,P9ܹn`ݚ(Qbf[gX8t0ǎ'22 N*]&SY1HA4jԐ͛Urn,}{_p=`4b01Xx n O`pp`2Urp}h r;~7n"99:ujm'?vӭS$''3~^xafW#Yv/^ۋ&-[kС8qݻɚ5x"4jH*mڵKRR2вes6mO}7޺u;{ŅGmEҥr=W[ٿ?F-[t2^xa)L0_|~94jH@@9nNppc\INN7p L&3u֦aG/44eVХKgrSQ@*Wm[ֶᇟU$**ʕ+-1 lh￯p%|С- :u7?-Z4槟Р4nDJJ /Յ&MS2ؽ{ L.c6Sif?#'c^t\|WWW4iLJILLd)6d]n݊ʕ+qrrj}[h ׇM`b4YX|Η`ȣ%bT V_11_΍7V)}M,cǎӻwO~;GzſPbDPP K,%::-SFu4iL]ﻄRVFʕc:]x ̀hѢ9V&"""[l߾ʕ+1x@}+W"99mHBRRRg -P=z^zзpRuN{?͠A4h5jԠbŊxxxܴ}:p Gntֈh`rhv/;/]]bT Huނs`켌 ى|ҭ(&I"h}/((gggy8zj0ԯ_St)/իe а# J.M͚58t0ŊC|K.ӿ?!VGh$-:;;SPJ*p yLewIL&V+111هz=c4HNNHJ(NǎlH?:ٳgݻg盩GGHj3(S4va+LҶIJll...\I2e{nC ҇=Ut)L&K,ITn r?p62?Ƭ,0aӘhj4οe%Zk`0btpIvkt2ESДge[ڵXIuII/^<}"Epyvooo۶ wZ,o,]3-+m[u@6fHMu2Lֳ\e'Gzʫ1d4ph6vZ,᣶IIIk}WWN>l6Kҥmh0IJJ#Se+{}ٳG|}`42(v=P|5krZ,UT"8׮]c5ogg<2ͬqpk- Ν;}z2$'`dAuxܛQ}ד{sE$oyӤ3^+PpZ-&TZc0b0_ΕgyӤ)h}H۵uWFf%h$%=mnxyyѷsy=[իWqwwmL@BB2 23rssT~TTdsle8;;c2dh -[ >>KӳgwprrrjXlF͚5yіٶ?k}JHH%-4j؂LTT4Vd{=a XV&LDnn_#66%K{yaV++Vf͚>Yc4nx[.#k;$''cXprriR LP%g%r,}8Ld[> ijz3X1D9_q&+J;S.QД֭hݺܹF&2MS+W9s,Ŋ `0}N|>QQQ\m۶GcHMM߿$fm۶Ӡ\tѵk$C5k`˖)SW֭[O HMMڵk9V*;vt8;;e66<<<ؽ{/c9L&Vʆ !mۚ$.]FڵS6ֳUv-BCXwڶmc}e,YJnOVjժ\*UH2e8{ [n>с(ёĴoK.Ç)_>(.\Hll,QQQe)l޼ ٳ:u*ɧ - 999&3رn(Fh2`۶$$$mpIIIa۶4l0NNNT\;vRLiضm{KRR)))9sC ȶO'ϡB +V4K;aC))om$"w{|Hފjjfu~`hԵ"w #5jT"))zPf *V.`0ТEs5j+04m޽iah4Yv;wՍ@:Xt93g΢_>}ڶG[z:vukzK͛6mfCQ۶ǟؿkʶ=֬Yˮ]AV-lmw]ExӾ}[6nDTTE!8-ݬ>?֭ӴhтHY.\dixxx- @V-l.Q)SD۶ml 81+ԯ__,=Sj.0k֏YgKxǎXV&Mb+멧Pt\'::cǎSvM_׮]c֬٘LF7oƉ'rʹm(kNHF(~Y|X*"r~sBl6_k$ ݏ)@j?%˲52g|a;YsXu97v@WEܦƜ?kz]w9DFF"'NdѢ\vTvEѢE2Eqcl4tVD6999ѣGWʕbjl6Sf\g5g|ԩu[M8{?4$J(NmvDDD_@CgPYhECgEDDDDDD HASDDDDDDJASDDDDDDJASDDDDDDJASDDDDDDJASDDDDDDJASDDDDDDJASDDDDDD|+ RPWvDDDDD$M)||*UllݮHh謈ؕؕؕؕؕؕؕؕؕؕؕFx m&M3x ?~¶ϯ.e˶wjo݇FҢEz?ٶV.РA 'OUrEDDDQД^`#̞=ٳgptt`ذU_]{}@ppcKF.]A\{nW@nJ*UTe6n75yн{W|޶AyAݻ&M 9ȿ$B%\Ó`Fx unG8SѾ|Sl6c0S.ЩS+7h_I FTX7LϞݳձtޕyV1vGlAMy71ʹoߙ=ҷs21ol*T(&WfZgZGe͚вe |uZ̚# ,իTTKPP7W6H`k>x`bkDĦl"7@Y' t':FCgE2?" :ujuS!k<.]NXd!%K`ذٿ}7i&s.~a6&ڲ|L_lj1d|(*UWJez jԨ{عs#>>?66 <̼y il%$Xxm~ĝż.Fpe;RR9Dx`0hw,iW<"OPД^`` /"6|t_2d8Ƀ>p,Y2_+VԶmI+W:uj| UƍIJJMGoz5̎;5k6b(@ҥ3hQ?9 gHHHGnڵkNu]ԋlKx(Bj. jŤ Q,&&>wg&"(h}^UBCØ;wAj nSL0#^dl77|сƍ jēOvgٲ 6$Ǟ5k:^ IDAT^^֙3"""iƬc!jZ"t{=I uz G>]uYɨvw"r˓pۺCzn݊Xm-ܹcFGGӨQlus&G(WNNN\pŋIMM-ȝeVԌ-[ݱl>ݱ/jjI6u{ȝxcʢݱl>`zH&ꊐ^LL ǎ !!={jjxc$r*U7+V૯kN$%%3slقq>xbԯ_/}===iժcǎʕ+ԪU+W0{\h߾]>B^=3RRX"ɸq_ۣС]vJb{A+ǭ8۳aCa4kܹ HLLe;w>eY>ҥKnǜf>ُcuG/E<8vݦȬ1VSД֭ٺ5mT3J⥗^K |:ujӯkׯG}|С)[,o1?sYt9C`0twyRfhbv<@=}mJ,c2OOOv/^xbtVsj'|Fxx8))H>mkb_fڶy:uJeh40nX̓aIv2{=dZ-X-) jV%jV_D3 MVM'"';S!e}oOlʲl3))y_NG-үLBjj*)))DGPL\޾}2`.]i2!ٳd y9VMX1.&CXם/fb_|_]`4ӷC{ܹP<==0͘L& #-%8::R~ZKeke2< v2.rn6)DطOZn)""4mz / a_Yj)#F Y3 w..夹j&UwE`¾s4 駹O\\>^EDD-FMH&f'Dp!!572ΒNzWGeޮ&Zb:wE!<F،cGOt[E +M{TFKѴ}{Kwss㩧H"\…ia366 qU|y'pqq{E M{Ę1|ٲɸ.8 c~TzމiwL-dzVf׮OÕ+,XE~իХBH:DDDDѨQCʕ+c>;e4 =Ȋ+8qm#G_:{gK<H /|d=v|ng\]]q,d@="""" 6ږSRRIoߙv:WIJ; 6\(nspԖYf_˲oYYiGM^lerd 1*Oqs}ݟ>q_gٲ%Uqٚ9;L`2<&a5.I&!&\*$ej%SJ4EDDDEj֬\vd6 LWsQ^i2Ǔfo8XLD^(6l(Ç߂LhtɛoرaDDoh;zu"#sδq!0a&.>qM\|0i~+mDSYl%Oo| ֬YGX {ǟԾ~=y"!a/G0DD*LN >5j0t`\\\puu[PF aIfy:"VGɂdaֆL[.Y뻵fH4)6 xzzRƍa8g+!!???jԨ^a1]oߖի]Drc flIš.$&3͘,VLN#=m]"Nbe`K/"1]+"WMʕΡIDD+V&!a/7oaȐ'ç~Nvmٸq=zDQ~pul۶G*t؁_ƙ3gSݻwȑ#̝{r*ΟϠGٳ,^D<==֭+ժUo_v=[n͍ݣ @bbK,xّ */qwwcT@RR2[lex@V+av:v!++ڵkӣGNNN,_'''ڷϻcr}|}}Ņ=SfKƾdDGM7 bʔtО듔C.\ED9l9x3К.t5[00[l W}u^LǓsdulqy-]\cXEʨ\p6l(w?v]va#++ѣG\r'NqF}H, s̥w53g@fGgOĴi?`Bߟkp=Ɛ!7qƍ1lħre_N>Á ֭ۮz\!lݺ Dժ3 ȎԮ] Պ\j50L_- ի'~~X/x-t`` 111ԩSd;Nzz:xx\qNN999$%%s%+Wf4nΝڔ3))bXص+s ؟n::t(ױDDʅp&C2 0la /dlXLDSi& 0udeeӬYP^]~7L&]v}̝;JNlvuPڶmS9֭ ˗dyp }"d68pK,eƍ{мyS*РA- _H$==GU`d""rE䇈T,u9sۧC) 2m۶3 r1ZSFQDDDD*?µuVDDD]:"""""""WH8Mq(%""""""PJ4EDDDDDġhC)R)""""""eDٳDS*WDDDD*=\E rEuVDDDDDDJ8Mq(%""""""PJ4EDDDDDġhC)R)""""""DSDDDDDDJ8Mq(%rM{}ddd0h`>˿0R?g=!a/_ߎ#J{^tܝÊ yŗygzܫQȵZTvCK77R;;;ӹs$ vhWlb߸AŶ,KDUܚ5x'iժO=..uO<T!HJ4EHHH˛fy䡫_#"=+Wf޽ԭ[׾f1oڷo*0¼^/}Ͼ>2#j];GϞݩTRF)""eu4ql?3$a3{ |si3!pvADuV^|eEWС }7 ~?y b5w⮻FkWطo?="#ҧOxmRRRė_~Ž>@6')TOff&:EOK=5jP~0g)~͚Ю]bX#}N7/f(1Bq3akDEkթl9tG&ylZ.[f0yu*#'b̔ӬpD2()ҥf۷WeΜ97Lwd֬鄇7ĉ.sYg +W/?W˶my ~O^L6Zj1` lذӧO,_lzYyҫWΝGnn}ΡC*nziv7|#<Ĵi?8sb|J{a裏o7WWFٳ%%X:;;1z(֭S'7|I=yXl=^y|Gxs=cJgǎ<ؓ}.H%3l9yj` igxm^UAD.E\.\\l2͛ط׭[.,xb,եJƎ}?̜9e~y5kdܸGӦMxپ}qzn/vZЮ][X`̜9ҥ^^fO$%%jjRRRYr-V/g5zDEu婧租Rb]c˖KӦMZ?A1}bϟ?w?HϞ=mছؼy [n_ui _|RƘ\ooSw { 33fiR3lW'&)Fc4Wd@AիYs5D u,LLnv튦k׋ƅ/#G7Ff͜91bg&nz>2Rş2kotɂ Duݽ;X i!>>-ӷooΝ᷐̚5w痙ɠA ՑGJRJ[y222hѢY͚5gbؽ;?eA{FPaÆ^v,""ך'~:{Z1 潝Vu*YVɍ.anɛϖ'3g90r0'~:˧_D%rͻɀJbIa.ӹs$cX><~<Z5VZ+3ϓƂ۷fsy;; =ߏشi3UӪ~~~LyZ<Ñ#[S ԩ];wdqv^|q<{+1Vk]00l<ӧIfACZyDO [.3k MpvvwcÆϿHZZ:(wo'N2nxcرc'O?,onb߿6;wѯ_bIV+}w?aÆN3r̟ɓ&>>Ko,ؿ?Ν϶m %-[Qp} 6lD\\O= II%Oʸq2g\Xx)+V7wG'Ҟ>|ưaCxYp1 {1NZhNӦMxgٴi311?~|f$=? ~hܸ1?iii徾""׊)k Ö MO474qlژ6D(q77w|~^yuk4Ǐg R2|gr}ĉb=*+i&T^0%v曯xRn.y}c $*+qBIf36 sQl߾>8ɢڷoǤIa2xy曯39hΟ?ϭAvv6?nG}moe„]_ 駟{|Da6y՗_,w[kY2{aFYÆa{\{;br0 [dǑ4TDLe,\g.#{eKek第o/ l撓CJJ*AA5+4_{}Ȓ%̤̕G{<9N%&!TG*R)""""W$3-smHLdO\q}Lf_Jo"")єkڧ~_L.qW_}Ç~G'!a/}} 'ͺu 33VF-| ֬YpuDDnk阊L[M& &Y3m]⟮rںDfm8nv^j4FSy99:t GY1SƱdDFv ((VZMJJ*=zDeql6cCRR2`IHH}7nbb`Wnl-WXS"`6cX1N:=fh[˪mںD^^Dc5WD%r DJ4W.111uIII,^ǏI ϑ#G3g3b*233޽cդRF v팷w\=w%wskuiq۴i3[n#;;ڵkӭ[W\\ ϖw9M6mZӰarrrٸѱcTpdl3ƁXV233i׮-7nG(f3۶mLJ{Q?;vߗqԩC8rs.{_+Wq|F:=zDnzhԨ튝gVV6uԦ[.\gO<+W";;&MkyB׮eiӦ5!޷}r*RRRk.]֭ 7nbЧOo6nđ#Gpww/ED>?s.t5[00[l W}uN5K{<91kqLVg'ޕ1`\m:+׼z$$$C\{y{25k0fhhbN|^~Ϟ=4hFbb"/k.3f{v={lի[hFݭKwp72jH,3˖-+TGVV3g΢I4l5kM޽&1mO,Xg: FVVG_'Nиq#{$9sһwOFə3gM`` fGv񄅅6ac~~w0 .\\h=zp ݻ˵oΑϩSؼy+*U*1LJJbΜyt1 a0 #KȑwШQ8?vUVeժ5Ŏ'"wu֌ldqlu¬'&|iO!rit~>Dϗ71kILN..4C`XԚ)P)^دv3k)Nnye ޗO暴3fYI_@ШQk׮hڞw/&___h l6ۅ2~l߾O>O>GVVϟ+1777Ν;WjgQeŕ}jj8r-;v ?ugϞ ww7?@ͰZhd2uqS_[41cXXyf\BBBJD^^^xvqP?TT}CBB8}>>xyyWZZ:>>Cw-OlUd*ςӽ}xwߕnLd\(,pXxSwU~UZJ0EB)ԯ̲e9|0N~`RRR===,%&&__||9t0 tӠ yN(___ػw_ϟ~`ذ[ ,+.OOO-l6{Jƍ=WV-rvv}0lXB9v8 ۻԲTRžQyfdd{}cMʽM[[.'O$11_PxzzTh]ZZMD*"ؕ`WvbE\eL6Il.h&f 0000B-?'N@W{WYk), hBCCըQʺu8q]kr3g\gggx@bbbS6;vt(v%BCCغufU8u{i׮kիϟgMo߮tgeԭ[777]=.k߳gٲe #F ,\!Cnd2nz֭K@@B:{?@``Mcذa#wugb Lx ala0b=?_Lff(J4E.hԨ[n+m38ŋqf<#*2Yl;wO^\d|}}p[bXظq ww6 U끼.!!!|WuA0dg_֭ȑ#,^ݣHJJ"33;vIˋݻb*\PڶT>}=mھaL=YY4k^<Ϭ,ԩShZ|Eiݺ^^^4jή]lٲ-J*P͊+\fl""ryL&f3F;KJ4dTGS}ol)l-|#_"e377RRR Y9~yuӡC EDΑl6'~ƈ g̗ĉ:UDDOO2:BJ^X ?ܮENM gY6 ,SuS`Qº˥qj :غT -Z׷7/6BvLbbvPb)""R%["oJ4E*HTn\\\l۶\!jDsYdffҷo)""""K]guVDDD4:r-v`'q(%""""""PJ4EDDDDDġhC)R)""""""DSDDDDDDJ8Rg&Vt"""""RMsssDDDD*=\E rEuVDDDDDDJ8Mq(%""""""PJ4EDDDDDġhC)R)""""""DSDDDDDDJ8Mq(%""""""PJ4EDDDDDġHEO.T@֭^_Crr 3fddӧOsl"!!XlV"PEDDDDE\Ӝ]۷dddٿ2`@UImqww/SIHH' a6v"""""E\fNNNGfM͵nzXz iԨQN"޽{Yv=T@׮] [پ}Ԯ}]tٙ+Wɓ0 oȢEK_>L4._l5jH۶mcɒ|uD*U3ڵkѹs'\\\ػw;w{puu[ԨQiH9r(aĢEܹ3* ## ѳgF? {ؽ;;w2h6f ˗CDEu[;a8p#F [@tt !t֕ڵk1f=8;;گ1o0`ɒ>u]=EFsEDDD䚧DS77w FVV{!$$5k`iӦ5ii={HLL$77mиq#bbvӪB.ڵBŵn Ō+-Z4'.nOq=fΑ۷ |}}]611v%JDDDDD:+RĹsLfIOOg׮hbc۳8<~~~ۛM6t2jԨNǎ&--ooo>VkᏚ%c(Izzzq=+..}]\\, aYR)RDll51LxxxаavRb aU,[Arr25fJ.%)) (c3## <<{ٿ۷i~"77$[ΜFkX- qfd,[qO0[浲'++>+SR"""""Meff2s, kij4hгgwV^KJJ2DDbC&8>իar9f¬y3WXX(?#4iҘ y-;w_|Ê̬,ԩEn%Ċ\M_y3\p-EEt",aʚKNN))W'33?٬"""תӧRVk^)LM&(_NM gY6 ,SuS`Qº˥qMVDDDDDDJ8hWt"""""WD-""""""PJ4EDDDDDġhC)R)""""""DSDDDDDDJ8Mq(%""""""PJ4EDDDDDġh5'&"32{#"3]t#<ǎ'"3{[YsΧOߏ?7ӫ :,'Oc֭W.τ *: )'%r3̙3msbsx^zi_~}1b0o:IKK榛:L,u-튾$"3DDD}h5]6DGǰoBm6 .mɓ8?!MV4jCR)׼ի\XuHMMMU9tM7 嫯`xq<geeѣG_ft^-@^xgٿ%ܿ?c>ATTona%,ߧO&Lx?]gNN?4w5bۇ Β%KYpYnC(k9vɰa?ۯ!;6zwܝn&"3g&koљMKKޤoDE?y,;]曩DDtfE%s ~Yz՛^@jj*'O*5wCҽ{ϫa%]Һ2GDtf3f!)!CbŪR K4Kȍ7eMlٲ~A9j0 No^}?k׮oϏs͚u{t҃ogM[_|ŨQK5ߏ?L>޽=7Dn3 G裉%se:tGgRc Ezѿ|2V(єk^nn.ݻwcϝ;V y)I>gᇟp ټy3gΜjj# 0xgëNՕ1c,KsAgΜӓ?~^z|U~„G}~Sf_ɓ[xzz+i޼)_߂ٳgвerQ7={vg3f4_|1I&ۏO0sO|$fϞ=b8;;7}?bbvKĉt҉ٳgPZU3ҥS1> dgg1iD>_>|Kݺu0enĉz-c͚uG{1^xcǎ[^:?0odO<Ǎ{iӦoe/?iҗL=? _|?"#;ϰaBN%=t?ӦM%,,rGimƶmy7y =zPXދݣ8CzuxBΑL6nGMd?EDD-HE3 ^zMb͚utAjj*Wa„IJJ*T믿[nymԫWċ/ȑӦMk*WK:t0:֩SG<==ٺu111c>>><3 x3 .S̙psscܸcF_yecJLJ*k4f֭@DDri: {Ture?, ~~GYz C [Pu>}?yyl?NʾUR֭ؾ}ӦM%0&>4wO3xW\z=G#*+j]3fc ?@*:w+KqQh+[%a _jU۷72O?^zRvm7x ~'ƏgjNLL,ӧB֭=FxY`qq{hҤqϧ(0x8?~C`ml^T\J~ݻݺu`l޼ƍsP)ӦMk~m.;Fhh۶5/,T666= kڴ 999$$yݓ 1t`SXnoZ{w, :Pii=zѸqBT! JU&00X""ڕ_]bv teٺu;[n_bVj[8I&dI^V]wy)VytAXX%aڴس'#G+ڭ[Oh۶ -Z4#2%Rm6Xxyy9;;dddW(yMKKNڅ /ܜ;wOY Nחe&Ld˖Eϯ2}IzK0:K7]usuA|899948;;3z(:w.m˳ܱR[[CөS$Wa۶L=Cf̘n۶{lٜ^z;ُKS2ed6m[8s>cWvYu_ʗ_ު IDATjbٹ8Xf͚ҤI#{Elzar78~7|%. Ǝ}wy}s,ZzKZױV\f=.z-[|;vdӦ-Y~e͚uӻ2mڴb„Ytw=>o?P\׮9t0 u[4ͼkK/s=s.>B cHIIQNmO/// wg+3suA[eYT͹1އQ̚Æ Ý#f劣۸q81iӊW_/˗+ӥK'{?E<ر;űcNjm{^'$>?"'NO>n|>|1cǟߏ ƗˠAA}?vp.y-^z#F77W>>pw3xh׮mϧ,GbĈ[&1r=|{,w]t;noĉɞ.UiѢ9c>SO=K``M|U{wӲesƏiڴ1 QGϿࡇ9zIy3\p-EEt"aa%''T?+?gT Պbd2/4NM gY6 ,SuS`Qº˥qjS)""""""DSDDDDDDJ8Mq(%""""""PJ4EDDDDDġhC)R)""""""DSDDDDDDJ8R?{Uq;%u"Ebo" vq;,RRChA f)?Ba'$3{49\ 㛺 """"u`NS7AA4tVDDDDDDJASDDDDDDJASDDDDDDJASDDDDDDJASDDDDDDJASDDDDDDJASDDDDDDJAS- <}Ǒ`)AjHSД_DDD%w v kߪUoؾ{zk:N-;,?wy'"""-z4%)hJPkȯ}={$#c'eee^۷lJ0GTTÇ%222 H˧M vnHC4׾Xٺu}tm69g ;Yl9EFf㭷O_ptО%K{f3H>Y`ݻw //}aD1tw̙ҧOo6lHAAݺGjFDD䘢M vєիWOӷwMXXmڴ!77 2jiLZn7ס\Nʙ8qו scIKLYYN's#%-^;X{8.cG]t!_Ş=lݺa/RDDD~c`)Auލ{(.. =} =z`˖vR0|q≃ `0`4(-RTTDLL ^x>!^ۻ7 ΐ!'a6i׮}fӦ2}!44:wDvv"""rlQ; _ر[lرK/b6le@H 9xZٳ`4߿?'0|x c0d ؤD"""<ԣ)NASZ ~ٳk׮#..xbX,ӛӏ8f-44SO=SO=_ҦM2 2rsXBDDDP; _tLNN6ѳg=uv22vp8ر#O> ᷞ b*1M L&Wm`6Ygv;lܸ޽{6HM vєcd㺲aFFgŲe+(('>>#a2G3d`/%,,NLrrkOرc߈3SiժQy"""""GC+M}==>*WW.|;eeHsqx׊^vBj8ZDDD$iG5'"""-HSД_DDD%w v kD# i@Oؽ{7IIK|W̜YYYoߞkQ ?є`)ǴSO=ĉW3h@֮] /DLL g 7^w^^ SN<&~"""""͏ӾRƏ ys:}sspddd0o7 """""~(h1W^{QnHpP?,CLz}}rrr۽8N~Q x'15 @DDDDM >>xzErr2w/~2O=,o^J+"""""%#ǬrnV.klrQRRopb}I:tp*""""Tԣ)Ǭbbbyg)(ȧk׮ܹid!$''_0i?p8lذLϞ=%4K&Pò66Geϲڽi.\.סgp8v;$%%Ի^oˢE9x0xRSOk!"" .qlBBp{=446m9Trbbbܕ,XsϽHv)| ~ <0ݺ{?\6 f #[7&L f&jhH*mh.hv͇`ؿ[1bsΫ1ÇeҤԵA)gO"A .ofH3)"""ufݽw} _}9_|N>p| j6}6}woO.^z95Y[T9P~~A2 4{o }z{Z/_QlٲP][yx'_o]ǎkag7ZīoH7O>vh C=/`"}7Ul?0)ݰMH;TQADjOASDDD,#c'˗$>>lRSG:Oe*z抯^{ #66~/,&ɫLvjݦ{صk7=zw\wvȠo> 4>}zy]wС'lr6p"n:Ժ͙Chl9\YPg8t=n)Sʜ9_~v}-VVXYBBh}(|]fD>8V,c<{v6ִ4 >_x~a}jؿ ??ߟ.]* N2x0&_:Wҥl\|p?omD%:۷/aiݺVC/`+Y||0͛O?@~}1Lw^xe!N>y99٬]$N?}TmXh1iiiledggrh&{-mڥfo_ɓ'a4ٿ?O<4&ŋhݺ'?o~>vïW{rR}&;v,~?;|-$.]ӱnڄ12=!O5XV^Kђ%,X14i\ܹrӊCCzg3)w_~9aݺQt)Bt& F#'$9¥Ku]ț3Vpa_ȱB="""R/O>f<:u$//re]Thꋜt҉_+Wѯ__^{Um䒋x{i߾˗`ǎ 8#~}딪ٓIAA:gܸ˙>M͆Zۺ'NNDQQ1+W"..JNY`۶mo}.&2O?-^{1cBff&s\wu{f0i=y29}"D Jڵ߿ ٓC԰aضoǶcQÆw ].C" h_Htĝs)[̉{QǏ* m׎1sRc<+ޣ#&Pò66Geϲڽi.*wrp8|*4&-M%bb1͘L& c奩؏6mU=jM (M (MFC+>'i4EDDDZY7%Siaᵻ4-}NҒ)h0nԂ>'i4EDDDZł1"!0FD`>"LASDDD2jf+i4EDDDZ cXm*l67mb kꖈ4*Mhڡ6ƈCCf9EDDDZ0cX,.QXjeMk  f3pL rLQ9-9j4tVDDDDDDJASDDDDDDJASDDDDDDJASDDDDDDJASDDDDDDJJm&M z)))MڵkOS7AA4tVDDDDDDJASDDDDDDJASDDDDDDJASDDDDDDJASDDDDDDJASDDDDDDJASDDDDDDJASDDDDDDJASDDDDDDJASDDDDDDJASDDDDDD iJz?СC{|>V+W\wƌ+&MQ`̘Թ-?no^zk>_qԩ&M3R""""r)hBhh(Fo>vNȌׯz.F>dwkP IDATF;7@ll,Ӧj{wj-""""-H-FnF=bG4Ѻu+md2yj,\HASDDf+rN.W`a0T !,,HB{5MZ: ߯K/`uKӦM2=tؑsϽ%**QN#&&ؾ}?"PFpvaN_:l6^˴ir*JK 4n]p8 c2zƍޯUDD[ii)XV\UKs\p8p8XV '&&/"uɀD!33n;orw /0i$$$0}]v<2>:.͛ٳCbg{L&=X/_ɩ $${]Go;_]I' [wNNÇnc4[ڵ P1c6ܿ _qLryyyеkniJ_ Nzb\.X" l j)++" 0 (/ӪUo4.M9 v`裏Wy̶m߿y 3ݴ) 6z{[寵{WLKwHD:vMiٽ{72$&&u*f\\,oU1`͚y(**b @/ .f ڵ-[PVV殧m۶u~]""rLB||;\z2͘f"###77F V:uȑ4wp߰QFrq|||\Zݰ"?vy2Mtɽ޵kWJJJy8qy\}D939L&nzirrr!tC&fV %;;QzV+999$$$n"н{7֮]Փnz={mېҖDEYIHHHۻw/֭[ueNN˫t˖-l6ΝOtJKKXf YY_fܸ85Wiz˗`ĈQ1W6yJKK),,rp82=Đh6 D(hÅO~~>=7jj%e.B7v:~}z.JZf֬;=ztgĈarf7/rЧOo Xetٸq}ôio0jit ɧ&#c'K /T"""gɒ̘1L>d6 '|Fff&3fdzN'(KBf,8NggAAa@#iH=W_^k&ܚ~{]&))~_|ɓot0tLTj#))z뮛LHH(:ór (//wޤaHw5PqФDN?}7p=ݺ?K/oE>)}U)""Gߒ%K{p:]<܋^-[ر0 <̓yji(--tb245!!JII)O=n43f0r~ǹaۉM6  ++Bw $A1ӛ]ld2a0|1Y4АpyvNe2{}Ҥk0a G|@-(iשng߾̞߰YRRٟkB>cJPY͛CrrW\F^`>"##r;6ջ.֭[OXXX бcZ/..f֬/%)).}+fٖECgEDDDŨ]'`BK@mWSX,\|s`6gAiiiL@ASDDDx0r)y>綑#O'?y\e3M0{,F FB>, \r <ͬY \xBH%DDDD>|(:u`ҟx 9g ok.睷󆄄`Z(-:+j,!!!5#22 /}zc47iyʲe?4Z02Bll 998HOOG$&&֩lӷx;h4lltt9 4嘷mv~a)COfX#Obj`"vILL7ޱc?BRRRHMhdwxitŽOкu+8tlڛ}&+W~1b0y˹޽< ZiiYg HJJbHHw;lP~F>ݻu6,YʰaC1baav22v2o7 >ݻӻw/(..欳l6l؀ ))mmHaaq}h.#,^=.I9~we_G֭˹DEE1qBBBt҅ #44ݣp"47h ҥ3qqqzlݺN;0ܽn7ӫWڷodb6%-m3ו.]`69'#c̰a'c2O`t.]:ӥKgf3C`ފ ڷof#<<>{9aՄp8{nlٲ}|0 n wر\Zff&fAb4ҥ ۷c[#N\\,CVڼ9!CN"66p?ܫl6Ӿ}{ƍeKhh(tܙ8o=ڵc }ijHhh(ۧ@xx8aFVW|JV 6~wpBC+z45PttɭuQr̋w/fbl6+NXrQQ1ׯgӦmeeeUWQQ1qqz{,::=yNzױK,eǎ , Ѹ\{ޘz,Mnnt ~x~B'?. Yc;|u2[1&T\\{Ez}鉏g׮ïd2_=aaaqGEY۷/guxGEYͥg^Zr/{NwXE~~>QQӷo~f||l6""1 :eӉ*յe!66k~ɈqxViii 湇N-kXˣC~ߣ*AmHsd4bJqqVq8\V6`DHHaaDDD&"MHDj`28,Yj%''k׺ٓ-[cGv۷Gp8 pPTTWl߾v֬ QXlV\~z޷k.mێnggfu8Q\\?WBCCZmQZZʁMڐʢuVu~kGhhUbğ Vn';;>=49!!u6PZZʞ={ع0b*VXY[W^3yzՑʕٳ 6ҧO_g{'y4WmFFFDܹwݺquu?vJ.ܹ:ucǎoߎ)d41hBj|Bzk:t`$2qC3ȑ5p}RSGѧOoƌ+Ku2Zq>}zGSVVӷow; 8 62$&&ry`4ѣ;{y cРٳӪU+vC׮]=,z>e z2t[sq]>Ԏ!CNbF֪NǢE矉0h+f 6l(_ o5:xǃ+:tP1-Wq矻(++kHKy=,:+rׯ/IIY?PO: BCumԏJP8ΊTٖECgEDDDDDDHASDDDDDDJASDDDDDDJASDDDDDDJASDDDDDD%͔̀$"""""r 4!M (sS7@rrr """""!؃ 04u#i%$7uDDDD M/Y (M (M ` uEDDDD"sNS͠ysDDDDDDZGSDDDDDD@s I cQP4EDDDDD֠Y]RbTU6K =h*"""""ȚuVjA."""""rH.-!hXѭ}=wuMGmܸ}j5,z~@#""""F5n@CS7BmG)S班3] tj7y}?@W@h,.c/b7n<-` <{qFYYYϵv:&NqᅗQ&-m3^{=Çy]/ʘ1cؑM7ȑ3zzKDD.JKKٷo?YYYPZZntr~J~~YYY۷Ҁ/R_ÝG<{jNޚc^Movmo_r8;<9VM7O:wCR0yu| ߯pʹoߞwyテ^x.sAFڶmopw 999Lt= L&?vgZaXVPY#ЬV+ '''u֡/d.SEj[j_}ִ^U=۪=d]TT4XZ[w-C@/3f;oGЭqݻ~QFHBB$&&V{΋/k=**~XsHHH`1+~ X,\s$w/CLL4{9#c'VNUf̚NN|'2Mm۶ѿ?GXX{=-m3yׯ/Mذa#gUZgMi!bf3fHͣQ¦j$'x"IKK_ 8$._YS`` Yz3po6'`>|O9. Ji^p&r<"Él=+5orqiHrrr!t@LLL5ʹjDXX(9hZ!!A_0>|O|h*:vBUa2uҙ#&?ѣa ~޽k׮Lhݺ^]vf ^s˖{Af^ڶmCJJ[RRe!#c'!!! nW0b(F+<rp8u bbbHLLp4uE HCI& ʰRfUHeW^y ].W\ʋ/w-d۶̘1?ĉZJbuddT?TFNӽ\xCys:V_"< /˯<po~~lܸkq=fgɒ̘1L>d6 '|Fff&3fdzN'(KBf YIDAT,8Ngf`` +AybelCg[y'fsŅiii?oDS\bWܹ3:]oo3{[םwmÌRR/s/r5HNn?}=.ۡC{^}E{E&LVZqr$%%ۯ/3yM8=i^{ K,宻ts/z[l9c.h43O2r >jӉnԄrs09Chm2gSUZZ3/.pY:x\Yݶ&+VsϺgy}+=!T\i999GEEkbf̊+~-ҡC&n](//k92'|i4c#fUnVƍ%77NLL4mڴZʢ69IPll qqw΂]ld2a0|1YVQQ v*&rZv凞=UĄ#oOѺ8CgpTy~/"s/2sڵ͛ә:Q4Hw9vCBxdϟ˷[o?R&].V Ӆ$**uVtt^6[Yͅ<|l>JJ3?e/< bVk S.I}`{}Ҥk0a G|@-(iשng߾̞߰YRRٟfJ)**|?&&f*{/}_fTaVs:[᳾84t6 lܸ|xT۩լ Pum/(xS-nl]߀a_>`yGf`WN!dX lfF < rs^=ẓK߀;>/54#545dU3ns.W3z~5U.m& |=zt;9**drGӇcZx GcYDD$X=S|\p؅ qU,\}Çqy|lpb4nc43Lu>bp3w\rr;@=DSRp^C-SZ?R4` p,**ZuCR=!slMj.7fhl> sHYmU^ """"vgߞGF=otjz]͵(A9L_e}VGM3{3˕uT/hwȭHSS*U.Pz^{.~W`}W ,B@ sxZYY!F={4+yN0 *"""""͋oj7{\ ULIukisNUgϰ6ϰ鹿ro]Ce+{8)#"""""GOmof׳٣YPX:\U)(74k*VY7l Cj >nRߐZ_ """""Ou!/h bửskgMYΣ:)c|ɂ{qNSDCյ}"""""4 n w>'GNdǷ-U kJң jfmU۫,oksbG߷lM6EDDDDNmUuCVw̚z1^]׾,4M߲Jg˾=pﻭ: /"""""aewA5 (u-[gG+4fجj(kU\;_Ouml(P*0UWo׳[ao{Umn6!YN빽M7~U,Yo9}+"""""s_u"dVfhշWwe{L]zIkGmRDDDD'յ *Ve9*M6k3}m}U]3ZKWYY {u xmuUo&-.h|*lVu|uV^STi~jSY@̪U mAޝ:νF 9 SۣwՂA |]$0svw]Y64KΙ߶~WٖP'WW J%8Aoӱyd|H\\62SJ韧O^] ޽ٯXw*"DG)9~0j1yђ(;}[sۯr1x%LߎylysMI8wS\#ywMSDfJcOiǶi=o)̙l9YfFAn舣eZMk*[&Z _tVګ 4c?*[fF^YJFzw_dEe#3bwl]isJZEW]%j"2S3tjf2;`-FkԖ.2S#Κs,UO ,"F(-ն<fZ-K$zfct7c4=j``_|ʰf+(g}܀{z1{R d(.2SZ#pz xF20+U{Ym ZD=q?=3Ddn4=}_>GL`Vxo]BhZ`3ELZd~q,]kM`vg<< ֶqI\gD=8DT %.S=#*+sBIT|dtEXtSoftwaregnome-screenshot>&tEXtCreation Timemar 11 feb 2025 22:49:39u$==996yc"""""#Tf AsHDDDDT0CR|U] Nbpr爈,1tU  B<DDDDDTZ `ܧʆΪ&""""WgU \U2/wOw_U>""""pGxsw 􁳲WU1QETҰʐXige Ax_ũG""""8aJ~ݾ7""""" XXige Ly/L版JQ ,M`a2(wL$""""z\=nΊ3`Uσ+l 5ظ2dlE=DDDDDU;*6+brUV{wB !"""""#^yW 6+R8rUbi&C%Qlt6pV͊\2K0eU<Ά8])ꑜ(LJ͊J2K0K]q8d\,벵$u;O90\g O>DDDDDd8ZYn&*N zn3mBGqa]!ـhYiZ.=|UMQ𴵬8҄MO >%=b:0,KOL*Wr:$-Z7=&lzRqGt0K.;ӓ19*ik]IBgqgJr[iYQt6ګ*{: a.N[҉=lzB(rgtԊ)e 33:ӚiMq; 6=! dBgZvu&`*c>k,z"""""*?%b ]dTȑ*42 Δq6:[ޖZG!ә 63GȴtrGc7$.^q&q4ڳN9k{R =e2u}u&`kt4Pi01Z)8ua"MgBiIųmmXQ"""""|BL׆uϖYrֶv\ΪASB`ⵡe|mo{ˈ38ӝVgLJBekaC3AkkLY[{'+Q!w&[a:-^[>mMyYJ2e6[FPi,X{MDDDDD=gZ@alckn+XLYgYcete`e p)]8\5.*I<FwЇD-Nk-BiX6KZXu MQkZu5 <(((,$,AhԾjZZq Q!" {Jn۝;iܽ{7 ixH0^Yn- m ُ$;2kkLi0ȢOU߂hb6U%( w$||Cet6,X:+lq{YLgC>c/!^i^yyyh4N.UurJ(uI0-@a6=U,Z3muz5 zTrrrqDDDDDDuҥsOA0 {i-gx䵽1"LuBWjL"""""* Z QkUky{ 3b6KmI-hʹ h,^UeNOVVHDT<(B.C&A&u=ʟNNF}""*d/_\.v5<[jZXUӭ-+ek~lno[@ Iyyyn8D"d2|||c LL&\.7~nό ^aAPtv`ރS{Ӛ.5۬+ FRr"r5QT@bt?C""* F744 X)@,X<+>@hIz1h)bRe!2hBDD#IrW``Pƽ{q&{_8m_ZɎj4:+k/ DjWy1hU @P@.pXB?RU!ka|&v5AMҚw[ g)U|r 'r" T($!U1l `liC[Biyh۬-ob@>m'"ıW|ADDTqfΟ*///(nNbm)I>ƊLCYn,rm,iS:M[-Y-Z@dd$JڵT:uׯ_w.*u=aUxq8[Aeo500}HNR}U{Rs1kzQ8[ժ2O`` @dg砠@_(/*AƥKY>_FE:W] bMwd|It&-9Zb-b2zMnТCP8v8ΞMDvv6ШQCi-Z `?K; hyn.IDQ,>DQĘ1O֯߈{Jm۶hܸرȑOVZ n pA@޽T*w⩧ӱӧcѸX"##cauvm9eZwq);wޭʛeҚ:ur˯\|$zL `YV\#[.mqGtgk3;Te!suqqݻwqQ\rÇE͑xh2^[a~y>}zzjƟMĸqa5w:];pDDz]XZOTWׯ0H5kb„ǚ{irIi޺u _G((P!99 :gk4opqiƍ8v:vl-bФJdlU JϷu6[ANS$cZeǪj_P?jPՐ$ :! t:]O_w̔Ng9EEE~~䖏s'4sK`YPP&Ll,^D"$J 7Q%VkR //9¯m TQؽ۷`˖$aaaoBsss-h$"0bJժ#$$yyc$"Bt:򐗗`TIcgZ4ZhZ;[Uq2j,ԩ[\r7n(RFhӦ5$I©S\}Dne93": +{DDTi4Zdggqf0xd@dߥRDL-߿/6oފ23mw%4!SPZ8 rss󰈈ȃBPZptu<X}6͛bDpp0]-eq-d@QcϿhѢ9:vlۛ$ ňðf:~Q D*((l$""rss@ܻA(jvg CFFmalܼy+퍰0ubv&U\Y^]Um?)X,3zoo"?ϥ5kEU|}ǵkpidffbĈa ۷6d [6r-"J_$'_vT5-//V. rt:r'"" / F@@oooWPrGkfxzдYqzJ\\GExK\LHw'TU/(=5 JiVM @PJH9Ӄ&I7SFS&]B DQ|||_ NV#0]RՐ$ MJ* àIT%GAA~9 RD@?E>>ʶ{z[ZJk_)y,Z 4 T*t<)h:󛈿\KL_DD/Kdrrw;6I lϒGя,?I(B&J~Ve*1i=)hQ (RB~~lU$$AVCVTZ/?ky‹]ey.,, 6/\v;%~Ə[+E~wY(%oG4Q9dDTʫHXXV͚5u4T6DDG7[7z($%%bϾcBRR"mTbbb̙XK_`ѿ_M\R_kxVC"*+ DT&BCC|24lII=_އDTb3V(x^.ǼycUػwS۷oD8\pgT:[X]4|||JժIDĠIDpwצPX5j3fnJw>r&Z7m 8~Fldffn<||9x/|Ba8xRm0A܌!ׯ+O޽ 6$!!!ry8}s7 իW"))Cl۶ II7n mۄSj֬?'NE\?X"]L?؁S믿B```c ܹspA:uV.]:}111AAA{@.dVnРuHH8ӧO`ɒEhԨqC5òeq 9 ֢wnj ZsȑHL޽/@&a$%%'j?pQ,^4iRd?<-޽`Ahn*^^^x -Z4ǂ_"88AѪUK$''n""{*zKDdCfV~=L6'ODNN. q7, 2\zoZW???!..۶mGb/еk@n]gsU))PNLYJ>|RSYX{o2cǎ#!!ӧL!:: Bn]bE@@/_GÇ`Æ]_Z|~Ç͛7jjr4L,ڵTcٵkҥhaZZj;wɓ޽Vfϙqfj~~1ׯgn 8mګHIIAtt},X%K4hׯin"r uJ*nMK~Fܹ;iddd~3ǟDRE4j6m@V-ѴiSжmHgGeˇzJu~L: $ATW#887o56l(w}Ƅ vh7ٳYz'@wgcڴ5jc1ͿػO _~ФIc0sjٳnݺJ  Z3fBFF~e5 Ν;ou:kر[> rܼyӧo}ŗÇ?{VZbǎnݎrvmCڵѹs',_պ3dK/M…yݼy'O7JU$TDTE<إKtxW^4h ]HSSc'AJJպmf˗/^zXp>6lXkiHLL4`˖-:ljVg6m'ɣxPdf]h4h{Ν:th0𙓓f͚رCXrQ*?j**܁A)Bb94l+W@nR* *eˈ{Yf-^ DQf|?oVkc˖1ud?؍={ZN&33gޢbXС=z~j}ݾ} t~(ׯ}ݻ?>s8q?^z[lBTT]j1f;w!44ƍ+1d ~xzoPT4hrV!fj5oտKVjZxVaad$''NX uG2M oرO#1cŊ6+(Ip?YfZ5}lժ%Ə E̠NmڴFddMscԩml=W/ E9<={6l /@ә9<$;Ç ;;ڵ صpg[jx<$tU}v]r2 IDAT /L2 ݻ?jl֭[*1z(jo= ; C_kRix!^M,]l?[MA]?oާW/ x)x)HNNFݺu矖n"rJa8F6 X#Ǝ[}hTL}1V M6c5)"~qYl,^ hѢ9AGpYd2$$A&bŏ8xڵk\A(-- Ыף1uԭ[<Ŭ̲e?[֭+6oIZ ֭[{[kp +aC}ّ#'{f!ڴi[.MSc7p{uTel$"Ö!66Æ=[ݻP*HI%KǟDVykREڵ[lË/Nt:L8 vk_~qL7nW_-Dvv6zIj|wfe :/ ^v s|lV&++ #GºuPF L>~ f3227rs п?[SW^ŠAѵk8pGǥKqr2SN2d\g`uEjOauSۋo~:{CܼVZqGcӦ O{kug/cG0~Ɛ 1~RMDdhOptdðhZn\~SwT5鿿K$stt}ܽ{- Ê?aС#ܲ*_qY 8f9???4h9@?q]ĸqp:d -00>>>.3??s|PP.> ( ŋZZy,^K&a&aL-.QͮDTf2220vX;JyU&"6oވڵp4o"##tG-C$0rrr ׵H6g?&"r& dZ-ƍ{ӧN:]ȸ_]>IHA"++D=Ym1 1Q1hKmݺэz5S ˃L&ϿTd#//EGEDU&Q% NB@?ߍVBVC&&Q%J???'GNNK1hU"Z3N奀\.Lo$h4*0`[0hUBZ99rP 9.BDDDDDD<M""""""r)M""""""r)M""""""r)M""""""r)M""""""r)M""""""r)M""""""r)M""""""r)M""""""r)M""""""r)M""""""r)M""""""r)yyITއqD*3Tc b Pއ@V TiIA%L&B&7W떁zk""U'AJNN FkBT1hRcP( }8DDDDP-2 ^^^hP T)1hR"IDQBRWIEJV˰I 'JC$rx{3dQ rCXRaФJ%ӫ /ȰI&Uxc2**a*M ]*4APǠI5Qe 'bҤA*PE 9?ݲf͚m6n8gN+WAVeDDDT< - DUHAAmp+ AєqQ ITH۷oYFDDTe8ȼj4HֳIt@Ad]3\>* M"N:!2&dKJkV$DFF^DzAׯqI;v kt#ԬYXIIHJJҥͶEѸeˇ֍8֮'qRtY_͸'mo>IIxf5kV-7} :䓏yi3gbm;udNjլYS,]O@lI\:u,Rn?a`{ffOoLG׮]+QfMX+ǩmxѰaR2?s> Ϧ sqaJ^.+ ゥtӤED&YSA"44#F ǖ-]tr]`ȐA쳹ТEsrsNX{Lmн{7eWS?ZjӦ5fuݙ3gv: w7}Wf>}W>u+= O<1<߂B8p _^'5"o8y$n_~Œ%0klU,g} 65kv:!"v؉[-SV$kƞDlI̛)={F}{nػ$$ƯB͍)111Xtʇ'];w~>3<={vb2dݛ۷okř38r&O~8bΜO0BcøE@.]ĭ[XW͛iI[#"^~Eݻ gb]xBBݛ1c>S YnbkϞx7=ztGRR"F^Fq!~Xƍkx6cǎؼy#ΜŎ[#݃cb } myўu?]gL&(Uoe4hgЯ_ԨQIILJDc{[uz~[رc+tlv\cǎƞ=;={vz͝; wOݻw !4~y9x7f~ GٳqXz%4`WB GY,,QŠIUNE||SeEQDfM|DOÆ J}2[r '>Gf$]-BաC{uQǞ"vsj]KErr2J%}Q@ EԬYSl̝kTdd$ X6-\ aÞ@TT]̘F-<< &MĤI/G^8}:˗/3+Lj嗟_,[Ĭf>!33?$֭ۀG#8p :t范!$$K,}0y0aiS"((|ϯ ֮]bk۶EINN.R;χ X4oLQ֭[X'DFFbС3]KտCغu{z}S/ O<1 XK㽆ñjOH?ɓm`ѢoàK`SL:hZС= A0gؾ}nݎ4t}:nM>={Fll (Y۳駟[G㫯@T^ ĉcȐgr74inݺp! |)ΞMDff&ܹtܺjT^ >>>غuRSSqt(֯wn7|;vkƮMABb̘xI?t: :8bk~m c03㹘3={1} fu-m۶K/Mg 5:~z ?ҭv=̘1;vD\\x.fΜcG#22g뻸t:ܺtߏ3u|8y$nܸ?@4m?ڵkݻؽ{nܸU~A۶qjJϻL&Ì3q%?|-:thoN8wN8Taw xw֭,םT;f"OhR6iҿ.wx$200(BϯD?7Ɵs玈QV5^ͅZW0 L*2&<3h߾z|}}qW\1~Fc\ѻcp! ?ީo9q…[3ƌG{ȑصGAAΟ`Y$ƙeuTi&8q[qr25kjlMNI)%ҹs}Z?Ç`۶v k0k֛x sM½{؂gV𳵺7׷|_38\rQQuѼysM̾L/8˕fvˬ%U$;vK˴7̎YhѢ9N8b,c]i߾ڷoge+~Ƅ O)Qch  7oqcw.<;vgee]T*mNEZ))נT"$$ƍxᅗOkt$":ի}œ9sѿ d*@ƍc֬w0fxm؝r\ZpE.s y<"آIUڍ7QFgNÍ7\֭իWq5[腄BV#;=c= 4j,hBLL ֬Y<$Z3g Vku|Vśok-2źuѵk <)>Ch,7wg8{zݰa8ߡ IDATMbiϤI*2_cϞfF K G߾}b˟}ic8|HLbٲi,[#1h@csΝ;7x P(xU*zM||dfOD@@VZt^q>EK_gϞuؽ4t 11HMf͚bŊ^zhݺ5֭[ouS'?FO?ĸ.''O>97 ̚&>xY&ի+R 0h@X#N.\HB͚5_rгgw c:EXK|Ǹw/ ǏEZGMY~駟1vh̝1~q9r9M5j_?E}hѷy3 {EZ0{8txc&:v1cF'FX:4sqa8-&Zjcǎ#):1jԓ=zf̘dt!!!8w Ӯ:lxyy>B^^Ə/0 EddMܹsǎǂ_#.̿qqXG<3Eֽt:tF=h#../şYgJ5;vm۶q5vp;[1nX[3}11s J0V8u4|X|.]ٳEVܹ0g@BBƍ7o:]&-|r4fzVJ{9lYx Zh_3ºu+ o 3.6l؈y󾰺imxxY3kd2dfs={6l؈O?gk˗1tt7nIJe?}>:>C}zm6[Ytv_ptx9`ɓ'1jԘ"=-[v #G>3^ 1nǼoxᅗ0e˘2e`͚u'|ŋ[y}V<,^scȐի:@&aPF \zW)Sa曯xLnBu "\ö́~>d":sBѴOjK_ !r2ps7KU;S22ˇagk~1U<$A$8u68{Le27o+W YfCdd$""_$LDzQF͛7M6í[i^: ܹsN(UtHIIEFF:DQnǏf͚{Tq13g֭.2DDj6X%JWk&KI$-$`-QfZMʾߒ)B@mRfB'#y`\x g d&?>`&$+,_l$:/^Dtt 23^( .]L& 77ׯՋL&N ?J۷ ! d2M4Fhhn߾H8SNCFzuJDDRR)i ݟ98{- ?{E?~5MBB t zzީYy;zwCر P {ddɦx?%3gfyEx3<ĝ`o-m#T6Z)h!4{Mj(I Br))t/0 444P__GrH40)vjbZ)-h &fEE%6𠦦UU\]1[AU՟aL!gd3ѵ:O"#GAEmk.1]u(ޠ>^Pe$] q:tiʎ1f zQӡ(޺AHc뻤6GR#92 UU)++|`:CʕXrIBBh,O{r2rjAQ6unPP4}4ܚ()DGh qfL&Sbb$44  Y,Tƾ}z̧'V£ÃDhii=sB!]sޠq師ޔVCvk1LZkSnH))hhMaFpp:rHH'221EjUhPU5'77EW[[OUUeǎd2SVVͦnu!gZmnBI~~=J)D$KMMuz^ZZBIIQdgg*Ga̘4jjjhjjDƎc !-m46~ W_RRIKKbRRRBssB!:@vES+D Yӛxxx~_$۱FSUUez!OorSU|2əlޤɁBnlذ%Kо] w.y晧y{|~22vp嗝t>'d^#!dI)B 믿͛7 X~Fo={X?O{ohF cV+Zf"Pax v1eZB4;C(a,ooo'ٱc { ))ѱs|rl^ >xHII&22.o]#խZ`Ŋ5\G^W^y6 v7de'22)x/ 6|.K;o9ssscϞ,^|}סcξcm6Lj#X[.",fΜ@dd=,۷,]c7+'o}$'tl訷(<ZɴiS 96Yܹ§~ޯ 9spaΜ 8t0"Z+[yOO?mAK W_b_5EEE{K9r?q==pdٲQom?pױ|rzA&OTnNn---,_ٳx䑇yrko "**O>WWWΝH?lXSG+ڮ-ԩ1w<{<3{={̙s&z\ӂbu4`S etV y`6j2z8M2I&2g9r| .;+W|.}9~WÝ_f^֮]@nncƌfEl#`Hss3=,Dee%UUUTVVu[K/Z … oihhVUUڵG3zV+TUUaXʸpUX,f .}jkk{-Ou]Kuu<MaSS+V|cݽx!3nztk;;_ԩl۶ɓ'1fhf̘d ,Xp)oNGEEQ__ڵhiiaٲ/illoc5\veTTT㏛u2erX\\̊+x뭷y߳z>|e˖K)U,8#H)8PlL&\]] !z4jT*5W|ywȱ;o#{pFG@PUUNCc4,jeժR1c:7tK  _%6mbMlذtoysXrՀN 駟Ïh&MHjjJ[5e$BᆛY]֮]KϵaN5ƍƴ w:;KFGLqjaBeÆ<3\tѥh4 ]4&Z1]c۶:?D(P`4:5(S }h!|,شX,AⴳmvvK/)W~9nn[HII׿39 ~x\r$&e7y'' w;na|[o%dzNy.[OO>c\\\<d̈́b21~=Ƶ.~kԗce?,V}l˯lr{O|gpbGYG"22W_9ja21Z}%g~+'?4u~oo޾7..qOmsqj0= .\EUUFHpDCrsscM<|]1{o)GOzl"N___:ܩ5Mw}řߏivWltxAtXvrOYg7NMNO'/_l3k:wgx&NȔ)y'8\q٩b3Ա)mǠtgH=?xpw.$^^^Orp`Gbr커w|t&8I)xNdTqrJKKIN=Ͽp iHsķ^8B!?kl# !B!Ph !B!Ph !B!Ph !B!Ph !B!Ph !B!Ph !B!Ph !B!Ph !B!Ph !B!Ph !B!Ph !B!Ph !B!Ph !B!Ph !B!Ph !B!Ph !B!Ph !B!Ph !B!Ph !B!Ph !B!Ph !B!Ph !B!Ph !B!Ph !B!Ph !CB!`@!ФqgqZm}.iGF2!*wSӄH&pTV EkMcG Wsx euY(#`d8.X 4la,I\Ec? 9-ӟ4B!ɒM!3"k=ķ4##> n }<=Ǖ7~cS)k BԜQT;w(-DD\@Ux8*_LC?+rj$^7]=%B!I)yGT c|6@(Nlj *Ab qh]](`eJ+2K+o|k-ͥx>=RUMT=2EB!HY!ǭ{t- /7ͭXXe=gCY4.Z܂q boɰI ٍd)tZ,#?d5g4.^Q'l!MXf>$8*v~Hu DJ-CY=Glt4W)B@jPz:%olf ynj\$\N}n%?f|,f@q:>#@lMՔnuB!#Z-ul=zș?+`9s:)ٳ͛7ʒ%QUw}P&˭~igGu}=pfPVG}^9- $]7T#_e9g4WY^E @Cs~3̟jF᏶8} 2cjXg@ |F G:gx0f#ME #lj"V}G $LC(\<]|'ueTo #ԏ֚&"әՅqtզ7" _~#6+Bt&CTDDW\q9MMM,]`G'-#l=׸+l͸zc15Q kVUh]]˖SeB}ѸDVvIRR"?///7|deeŴiDGǠja׮<TnkƭImѯ4݉87Fj2 {13(Z QsF"O IDAT_ѥR4wtS0Myc, u_acyw R3 s2sˉz5YEf;- B!z#ΊJDDߟ1|x W^{Ӻ .Kz@!//WW7fϞŤI bر`0tC^0f K.vΟ!#Gh4L㨫ёׁo@sWHEE&00 .8pB֚&Mx7 Tj_i: 76&.K?\c2lZaA\<]{&{-~2i:"۶5u w :7" 1'_[mb{)!n`5 V4}{ܣmy(PYYAsGpss̤$bbb(,ڤP9g~ۂ:E!)| k:o4/GkM|aT=OvYo?156 )(: MHU{ +"ұYhtf7b{.Ac/zow\0t ~$^{:#mkx'6UUj$M ܃}=bjs{ nu`8&q 2Gp\ݰjU!YMMqV)((`)pQQQIii)Yl6BB5oi_Vy]]S9m40zL&z>i5j]4Z*+/SB}}=̛w>_0{:&qy`jh*#'M;ȩ*vbp~IBUzZZ?T>N8Gvb>}'Kkd;axc3[,dS6j WSq5-Ub2QZZ ])ݔMy}Ut/w܃} 1l>hUWW䑄JTT$ƍaJ+Ww9Vcc#munRJdd:Nk ڵ)(8JlpBBILARR"[+qqq!//c8MMf!5}Zڟ4?dFÔo?kj6SC {^X㴮}~X%Mm)V3_tZWw鹱C7;xE8r㠪v/|9(̅B@SJKˈ`|g B;v pXFQ^^;h4t>ʤdz=&MנqUݮjݮ#GڵPUQF1g,nKv?&&^Ovv9:nOH4D!BH)7W_IHHr3fWW@55dd׏S1>|///V+EE%ՑK||<_-EEńϏ|dX,VƏ/QQWѣTUݝ+XΝ0}2mT|}}rʻў&!!&ًlA2{,>>& ;v`hjjbM455J`` f۶L&FJjsssj477xQÍ"/wX!8 t;qúΏۗu% qwU;S㨯:`z͈6. " !ę@1Z.Ų1kN!___rs]0vPlG^4XNje:M!H !NkR)Zt3bB+ 45۸.BvQq@S!B!Ā@SqZ."!iG>; 45|u! hŲ1!@SqZ6=" 8g5hE8+dz!ilU|3EB! 5B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!n MU.i~I.Z !8QǾC:~ǀW3EQB$g,UUQ^6}w(Ov,Bw@J9 faYX{!Dh3N^GvqB!AVAbl6K)Hh3hZzY+B!NVd2aZ%g H1TUE*AB!EWW=:N3p&e"BqzZ!:B!] 6AM1HsY!B ibd:1I)8{m.+B3NmH"M1I)Uܹs.6l8S֭[Ϙ3g678Gb˖l߾&N@ee%qBgc/k#G].y!U---|w=hcٻw?=8q;v줥@KKK@JJ2fkסZկE#::#G2vlydddPSSs$##VZZ l*-t~+33,~111J)b`i?Omfb 1.{kkK &VT[8XfpŃ~)‰WXXĖ-[{9rd_|_|'&,,0z}_W.Q^^2ZZ đ#G "77iR4-XFc+ZO!QpyV!1ԅ 1xڃKC3\/W ^b\8ܕFnFNk !H)zf:M6èQ)h:7 Zl߾.)M&cu{wUlB15*ĻѿI\5Jr'K˦-/Z`(h8dz!a48bñ)MEE%^^^455:..:PۢFSXYYŰa!N̺KuuUUU 6iaB٬֞ !-||*LwwQjsڪ؛zx1$g=ޕ@6liiiSPPdBw!((FKkk+555L2P""">}SIIرc  && /Gjj#``ذ8pzٳgDXX\p>=Z={'-͞oll,Ӧـ?H!_穪'Mj+\=>BןaŔ>{ZzM._v#'&HHH ::dRR1"ooo228hjj",, SZZBSSDFpp0۶m#..|ihhdƏGdde6G̺zRSS;6C̑#G>|8&'66 ֭[bZG2vlÆ lv8Zbb0a ԐJEEUUUt#F$l<ƑW_}Nnn3fL7_c ֯.ԑk]ҥo={vtNc>v C޽;; R1XT QNq,/r#ۃ, #LNNvH)D; 4̔)׿x>s~i ;]<<?s](߯ח1Gr7ra,Ј``QKW,e˖{_rH!ǦYj5xyyz .RW_}MrH_̜9tqQ[C M xUϟwbޯywG|9s3s >$&pJ{MK89W_ })q󣸺t<<\tхt;f<_t|WDEEq9w;+_ wy2so{'w}#meeW^y Vg˘9s&˗})L GȳUFmf[zMۛ͑#ΑL!:@Sqʬ_{Fc23صk}ѣj_Ӿz| @KKϓqرGԄ^^|\wݵ 摙ڵ먬Ƥ.^zHG:Z^{8Z[ͽ ٷo?{쥨^X,ٳi]IɱW_}{35?սO8ooi[\Hbs(<=O욏ct b sǘ1cޝj/sb0(QPlSĄxmkS&&7͎`!DWh !Ndd2j;lh7O/ .+.g„ԩ|\zG9UUYhIc0bD<fs0nXLͭ@f;6qX~sfQ\z,Xp)SÏt_||V}_KYYsc:8/%7w t98vػz| !1_ϳmvmNۃ==sλ׺eA<g @Uhؙo`VM=4PJԖHGSZNt3ڡVs 99=N UUٽ;~`ǏcɒZqUW&+ӧSRR;SL&33&emdffq3 5hOrz9yxs2~8y1.r}/̞}rΜxyy'r_t p:j+++[u6ƍKLL4--:@dd$ƍ -m 7}ill䷿iPx軹9DJJrww>?6RKNJ ]DfQ}_Bvq#O:Dj4c0tb鴄S\\<@%8Y쿤i򜛛{Gh{`h᫯݃0L&۶m'?o .8O?]֭;v 111]/ꔜh[ILL So~`>7Y*,[_^}u***;<zAbbMPەpeRRR›oЂ; {^|}a^z6lHpp0&/{{nƍ{-%#c)))u|3??.}9+++0uj: ^NUU/ w߽<G0g,}m|!^y5̙w #D5杽+wlϟʕQ1Kyv}/Z ;Ezc HN IDATiQ jP:{^ \&B̤FS7n<'N?TsFKzz颛)))L41c @llD;oO;ydtp&LϤI1"V^ʸqjL8?cDdd$&g̘1x{լH!22Ǒ6__?&NFAՑvh-\xk|M}}=pUd^1w; K9s:7/!?{=/2f/;='TaZXj5QmS(<ȟ{ǑVkOz{Ѣ(h]R))0ru:?ڷ?o_vZug$N[*'6VcҤ֐N#99b***fM;5-'Ob۶mJZZeLj#ػwFx JKKP1cҨ///ʢ`"9p L\\,BNA\]]3f ۷kXHH555Ⱦ}z<43$$PbZ>|8ڵ EѐBee%'!8RRbCt@i 8oEz7n#hRPU+ 6 q'[;hJAE EѴZhPlCctfcJ+1w0 nӲaNf]'MHYq;złb GFUmЀ>h *++ `JJimCg„ tWmm5RYY @yy( 8t b4PTT}B!E d7UP *%KUumtY{ICd qI)zFѱjB?..z=4icV۴ ؗbKK+>--m^4ZgciQ:lO;Lع !2K? }oACE^o@բ( F!:47hja;hjmh ~!F4d2uN[cT'pj Bx8[15zDS ՊnG݈*J}cX}]!zEk>>>ˇ!80 fz6M!W8F_*B!@@?BCCM!W_!DdJB3>>>8@WTUEUBKhZ)\k4'mC(c2@Qh4*5!AS L__B/AݬBq,4'LUU }_WC! z>+ B֭`L!1|\#DHBڽJ!/tBM!D(2 Bv!DoIBT,ϳe&mڟxW2d9sf}k%\{5}^HHg/_k쳏{1ke˖ܣO5 g[?믿^ qi.=g'J/͚58fٰa#UUU$%%1a¹|}U^KHHdĈaa(**bmX,&MNe͚Qw>}lܸW^y n^y_\q444x| ^ ,Yrxqv;>^EoaZyEرcӟEճYz-fWu:oc6yE3th2 IZHz3n|\u\)GT@Z7O89R? iii̞} )--}\2d7]vy:F_W_-fkf];v קazc+poذիqW|٣vΝNfu?S[[V o3yy[A! g5QYY_YYɭBtt}X3HMMeLvWRRʬY3?kiiiAUU<ਨ(./_[l+L2Z񔖖_駟V̇~~;ƠAߓFsuuϟ… 4h U|W,^>?{7njw$/OFl?<>ǐ&O>?Nt2.2W\t G||usgz|,Y>c+ixx8&?'xSꛙO?Vnw(̝;~G|il6>dyټv}4,3?7|z9[o檫$44Yz _<;_~{%c@ac*8*+='8d} [<>… qۿppNʴiӘ2|n6Fn#GrEqm+gذapv|MVCQ4tӍ5ʭ#; DDs] yͷJWkܹWa6#nO +V,cҤ[ow}ϢEg뢪#'to 8XcBo{=y:[o@ii)+W~9e\eB⥗bdvܹWQXXc=O>$p/߹^C(,,f +++wCNˀŅz.t+W~jjODD8ٌ10***h$$$:yyYkƤIh4uVjjjշ[}jݸq/O@_k~w/۶m?2nj͘1\9޽~00tP֭[OrPVtuǎt:NdΡM.&֢1[`` 'TOxjsP^ope %6\3( PS/! wH69iZMfKXN\g-MVѰp8?|Ŏ8@kkk(++cD***Vc^5k֠jb\|,/_ ]2 Vî><111\{5={lZSczZ3سt_Ϟp0vX֭[(\w5`۶7uLWz+Mѐw誫 xkxᅗ:q}$(t hwr[mջi(q6F#xTUlsB5C1O\GO|ssx|TH36{c+>}4 3n[.i>ں;<9uB1l1=}E z߳sHHH@Q9x=vnSPP7|KCC#''2Qd3aaG)o;}u3YPȑ#=7,25*QF⚘ah4*55ģk%\-'7deeMII477GcccWNrr 4,GL[}/~ú[_gS8Z=O-cMש-ا?>0>sv[2UKej2GF{NNn$h ASS#:Eۖ<1v{ 8%EC\rrr<:JFAݫpviMJJ"))#G0o-̜9ի`6[#%e(zrss1jTs k֬uuI ϗDDD9sR>SwW<8o;aa V*++q8?HMhz4zg4U(a/jK= A&Z8PUus_ *}I1b GæL$I']gY`!4鈌$115Kf`FUU5TUUqٰVKZZڱ.U:DŽ 0-tylSC1qDL&F KEӹ-W&Nĉs+,,_z//6mb=,Z6=رy!^}yg9r̍7<w`X,V/_o:_Gb֬\}swq}7p[vm<ƍYN,*?{r?# K VXyBKYYwpGII dddu}7 N}EuI󨨨O>?xE:t(<4:mloRͻ drHᄏ>[QQ ,{^FѰyf~{\_s{-:C=7ͼ‹}Bn&c]R^=c@Uv|ASu?2>ҵ'%xL9lRa1>'\̰d@U 4,'>t ;qD7|:/**ٳgev}Z #GdDL&6RmN]]-2i$t:-k֬%::d99TU%< ^dd-z{ O$8 )0݅F8= !tlt'd:Z}kҳR ERJg4֛nZUp1REEu8 Z<9̍>XixxiΦbEQ??q 4{jmoۧzq+^8"AS4TG2g%|n uv51۶M!83y5sݭ/)Qjt&K NEKfMgAru'ΰUjsNW'f&Al 2FS3^HƏǁ B! -g@grIb,I MΖ=O-'MhUe@J|}Q:lX*#F G<8ߧNJJJ/k*ęOh qgʔhN!gJ2^Sq]1AG.*: .N^l87Fϟ222hnnv{\דdb9Z!488pu5BxtT3D-"9[b/9:PJ1Gtت̔mzfӝs􇊩KG=Ʌ23IMuɔpDIMMh4bZr m IDATMBB!Dkj12ȵ:Tnǫ}ϭdᱮmo]6cZ]a3%%]KL!HB!crJ3~|hΖ͕dS:L`-ƒ_q+~ {/he?2tlL&WKfqB$h !B5 VtM70jlzZ'',[uzJ)WcW*p-pAeb1c%S$h !B ICY~F\|B92\ 4rdn:)QP*4cn}NVٹzU^ss3{eϞҒ)4}殻?v?nKLL$**ի_~yw e;;-ȭoCxxx?ZL}4iqסy\{5]M}k-B9y6fF%fH&<N2l-4Ty8@Q@a!kr ( JC+p'˛VsƱyfTsȑ>wIFJ> ]NLLR'Lzz:Vk?tA\\vOHD]]8[KSQާ19hZ ;O|8N ΐefݪ9/Gug"3zOȽ dQ4:@ZE^&ASѧZZZ:u9t|Mo '' :>ƍKjs=Lv';رm즛nd߾} >@8pӈ¾}t̜9,8 OHlܸ.=UUbdDff&GpSjvzrss=:K/C||e\ fԩ:صk76mx- 9l lA%uyNCI-{]NmfﺃJcA /֚ƺ* ނBeKBC8년Vc fppQ۷F?(ƍKAARUչ;Npp466b%??Ab4!7  2mv6{||:܃hdx|}l6XCdd[8tΙ|||h-VZŌ38tӦ]֭[eժjTVVmvMV;+dkjbBB}9:뮻!C͹`Ѣw `ƌ_s./l,YJdd$_~)55P6\w5t:ZZZ\.k֬`/W\Λo:4e˾grYGRSShiia m2I6^L%i):q %z+vao: ~/w!L+Ǖ3TUl}hYQEy?s-֖L-J(.B4Y/,,={vHII zJQZ-۶mpty:t!$% fL K%<imS^o'̂zh-+hL!N ⬗ZZZ(**$44츃&@aas|ȑ# Ƕms~ollt:Ͷf|}GP[[GXX]cJKK),,jGQSSMMMڍMTTT_FLL 燪:k}}f)+W~6.r׮]tӍ./Z(,<}ѵmjݰ~y 'NkPٵk?unx0)MFF&IdggDFFQ5jTUU' 햖W] eʔjjjoq<B<3g]L BwUP *Jf" tg9,VEuv镖L!N) tt}FÉZLc ;A {ܭu5so۶w0ey,Yv:nf8@II){eΜ$$ w㧟VsS?v{ ڛ7`45ؼgJJJh:j)ӧ_ȸq㨯~QJFF&_ŋ?f];.p?<\rsPU s6>k !qir('Ӝ*]e;IyJ7ixk{~۶öτ]5={Fⴥ*g:Zƍ%''xZ-%9 $''QUUšC&&&A^a uXq8smTT$~~8㺝5 \ǀ0}ill|}MF˸qcٺu+󧹹z8TU%<ݡB+PpmHAC4,+ȸ_ NZ*v۴FiOvWNg4At( ƍcϞ=466vmc/}-AS!4$hrAS qjuaZN8d !BW$h q:t(:쾮B!M}uB!8aB!B)B!«$h !B!* B!B!JB!B)B!«$h !B!*YGS+U}]!Bq)xVkC_WጣjvqFBCCU-!:jm@Q@AQ?l ASL&c_W1Pz>F-B4nӥcX}]!zEh !B!* B!B!JB!B)B!«$h !B!* B!B!JB!B)B!«$h !B!* B!B!Jϼlٲu['^U :fΜ÷}Xޛ9s~>kY;xq]oO_(lDbbbB!8}i֬u_\\̲e_{k^{ ~9ok߶mx75*uaB!N g5QYYUUe'FFaa1DmmM_WǥUUijjxTTK믿\-[6?u=NYfkoǟt*k%|g 6I&ǃ>Oo $$իOKx]ewkoСCa vg6pM3 0}tt:?#O>46 EQ喛;*8p E%=}C_\!+! 00AJJyڧhzhBh»$h q SNEbgȐDlž={ؽ{7#))cDz~}:'Od2QQQ \=9 (('F^^[ns믿LW_-eԨ4z=|st|Vg˖dddx|nTVV1x`mz_Ş #yyy޽WeMv|~'ee]7{lzi~Y|~^}eϝw.$88nF-Z̊+䒋݂%\޽z0-M6Q]9O|_~_~{JaaSZܹWOԩ ǦMgBc ! ?@#j u9X+jf Bf/BA &_0Ch Xˡ2,E޻G$h эAw>, HZH;IKKcΜK/X=:h4reZ^o`I̜9K5l0lƆ 7}3c2ZV%7`KQ4:GjPoߎ:.u zxl쩃+v{ڵ ֮]Gjj*_}[nCB3}c^租V3x<K}Oرc8q"F#7t=􈫫m^އr5s%h ip5PX T@(H/P]_q^Bg ⬗ife˖S\ΎZ-6lFq&:tcRSSg͚5W3wUfgpWYPpʠAطoС̞={䒋b0|ǼFFF>7 =Ǐowb; 8 wWrr2 /ÞQgl>οAa: ak^%G[7c'C'nB74Yx'ęsh4>С<6nԩc^?''ѣGDtt4֖9y'Smm-k aaɀbccNYݾ8L4{}r<\kV׷6H22f3-B3CаX2mVr[K-]q01kSZ8նSUNbKyFRc eFhp!rt)h4Z(+sN(B[wTTT2p`\kHg!""cQ\\!''V<8rArs?III0z(fΜ3<lϏ8KMM shjzyZVV?c.cժy޽{ h4b^y$-m$}Pд;zS&;~TAQQn87Oz:N࣍5(֏WlZ,VE9#88Ӏ 8:liwvna_K\H8u7aΚ5k<;+..O>=fySSS÷v]O>TUfunf{?~]]GJttt短L&C {w}/!S5]!V@OJa߯Fg2ёO=u >-݇jH! oѧuLZ!D `„l6b^{^|񥾮$ !µ];AL1qW%i4%e-PUTM.Mj3H--ΰIMMh4bZ&l%]gB!XSHAmաv:T=5Ǻ]wf+Ĺ>苆=l\IɚL /j,'@y[Y*LW˦drdv)LB!D_S`NyS sm̦%L|Hu~]'B~imS^o'̂zh-+hL!N g5a6 N]ij59RQ^^NXX8JBCC% 9}]]TVVPWEȑ"#c29vHc^m*((T j'"""8|8|FaȐ!QVVzܯ]ohZN=Ab6[0o{nGVey|| v=`vv6f͠S7b!8]X+Μu16(X !hPRP U,YdvU:P4G<>̒YM5@H7EA.Z֪^.?VuEUQk[U6@EIH dL2l$ @B|<Ɯ9s|g2ݤ%S3J@yy (//#66 ldq#***yqqDGwtjutǕ:tt իP--v7P<_^FM\\?p:őVOZmGr?j蜩S{"""=IB!Nr4BD GTxC$=|u>V 5(e=ID04}val}c0}1Oimm!,,H233UTTKOl-\1R3~8<3F_F^@[*EQp~><<8N, w@SSϗg '}jm:=IG-u뒠)@4u.*++(((5<|OEn AS!Ā W4?ՠ)]g'suB!b`)D?]!B!DB!B!z@B!B)B!"$h !B!( B!B!JB!B)B!"$h !B!(]W@1UWwB!YFm]GU.UUEEEZB!"U:ن(t~BsM1ͦY@Bf-hz('M@O i1B!B!JB!B)B!"$h !B!( B!B!JB!B)B!"$h !B!( B!B!JB!B)7=,wxȧ~̭ 45\dv[pKM3<źufXg_sC=ȓO92BqfB p8ذ?]^[t lٲN5\CNN{鶼o^9 : xzYY9Vu=Ɣ)imme۶}rܹ^zgv͛7sСZr,]O>kK,rC5k&<4w'n3k,y)~Y>B!B4E^^}v2qK9x0ܣ8>6@KK+_}}zYV{|^۷` 1b/_;1cF?zCvO{oٲ|~{u444c-Bq6)D_ݧp8TWW\g__RU?ADzAt:--,\x*>+W~;ˇ~Ē%Oq&::,/C2zt ø{8q"MMV6nkNCC#+W~g}yǤI馟]w-`0kyWm+))%'K. c׮9sfsm?gaTW׿ ͓OK=/{f܋hݻ_~c /b/uyO?%44(ASQnFDGGϛoէ@HHs7sA׳^|%9>ӧOcgx≧Xfcg)c$$)BAkE9 SSUpBk#تZP!DW4믿xl1s Zl޼9Yfn'//oS"?o[ٳhhg(BQQ1;wfu˼ysy[{LTT$?ɍ򗿡n ?H^Uo~v+agۼ׺KORZZʕXࢋӧpV\x<>_tz.`^z)V2]z|.tϾ;=K/|2xg9z|\p\uՕ=:kGy 9>üaOի~;w .w`ѢٸqYQX \xl޼PfϞoX,ofjoW9<#Xfz\?ٵSN!--K#k׮b…s: ?&n>9JB nlڴS0y$Z r}KM /<߫_>B TWL!q{Lsq-E5gv=3 ,?~+˚c݇Ncd˚5krOh g֬s}' >c2BBBHLL[RRRN>7lPF#{RkFØ1)TUUyϲQFMee%A"@eH Nyyyy0iD :w"9n&11beeƍTVzƝmڴ?a*++ylMbW{BP)M`bͳqٝ~ݙv}ؒrAĠb07DLGl_&h8NSWuu qqqhwb}WUUjjmjm}jk$VUUhM&TWwLFQ0 F/v_^;o:cƤ$$$'4&LO_aU,^DZztv{=dddv׿pny#G&s_ǟ6\E.gҤZƻp!/ӧ3zh~{yDZX^Gyŋ/eK3g6k^^xEokDRR"fpå'99nocg^?O<δiSIM!utyIBBBz 1hMzj7dZSC̔?yB&V6:0Bذ&qH玪m!B))h40w\HLLb̙>]g333f޼%../a֬Yuݠ =s%::A1%TWWST1f܋bРA\|ETUUQ^^mيfk楗^w_|sqy]TVV*n6BCCyy饿ĝwڝ CRR"ٟɡV^1;w/o+w =wÆ0x`'u{/oɄ ;}Ioǎ緣*obԨQ1̼ʫλu͒%x?x'+0xWv?NGӣ@/idLq^%z{15]6dhG<ʷdy}| clᔋh`tp{ʌs!D7uoOi۟oksĈg]JpXpgmvK.-[<˖t]$3g͛䒋oF IDAT9x71cŷ-3RĎ;ij:o^z׮'˛:ʙ7]eetxnT&h@!P&_\?BI?=dmq:M g:MM(:b=p.??=wT|Ntz'اwvw<n_[ʷ{.P^^w󼮮/'󻿮GefddpP="## TU%!AVZZW^zFqJBxCFCX5Ah :Wlﯻg,d;P<7CS O^QCJvOx I8M!8 qqqXEEwph)!/tDw@Meљ=c\5%` pY+(*z#g44 YY^ד"333Ub)V^s±==Tsl!Ĺ1ɕ3'ů'rT4A:"'u2Kv(Z7 󆛘P]fO,7 B{uF!88T233M^Ojj*f\ AS[Bq$H&~^*I&vVXOKfɌu.+;r}HPŬ]i6h@UQP\(++4OLMM%##ӻ^'-- Dss3Vg!*uV!vZonnCRɷV9Z6}T3A/~ɪ?:ᰓfl6N2;P!e4B!Ycnw;rP]W~fw!S1ayÑ >S[{OYm=a3foLMMԒ)!Sv4B!5[gi)}KiY?K4,#ŵ4T}πM썧T 33۲i6-2!$h !B7>M^6Cd5c6.k%Ɋwu= {؝VuN=l65YijJK~HB!8 އpSCTI)^KP [Y=k䬳EV-ߪimqqȊj-9IO?(-B!AS!̠ABsVvŌ`Ϙvą2-wpyʰ;h8@Q@cͧ]&h@QPl—,o"YZӧ_n„ QSb!))qv}=uvL4:Nee%۶mg޼DFFǺuILLozo̞}!FucX?bilsN=k7p18r6m&99 .hu3kL<֍|^g޼$= vynT\tn7111QUUڵ_g T}_/x&`t9N;ii< @am)PQP4ܭ5@d"P:OY Ǡ{ !Dߐ)y 6 FCQQeee$%%QPO}}=:[hmmwx%Cdjm$77UU[I||ϟȑ#ٰ?hZ=̝{fzUW]AKK {zB?E.gƌ6SQY_EIZ<sqz Wx~\g8+Ǜ3TUi}hٚYCeCFbԞkGm-ZEj(#B49/$$BJhjjj> ;w{ 3fL ghbdilȘ1ٿ?{2avvQFCCC=qq3}!ф V5bͫĚw.aR5$ @AEAu+(&I eXP-f't6ltWa#4OKj()!S3D8畖t:45 wˉ椬(/(hhXXXD||f whjmv 11ф[nN7%%%DGG{R]]7MHH:/q:]Fkv{EMM FA'Ɵ_t~fnw*J[+ifFEvvB}}ϸZXmmmeժ՜w4ϿR6mF4- ʭ#$$ħv. V[BFSAYm-;* TUAQ@E%&8~ϴ(Z(ӥWZ28$hsтvh| i:^D\\,>t.AS9fk`>rV:vvP C b`; 9! 88j .rkjd nw0h FڵkhjslDDn'??NEK.O>9ExxumZZ/W!i"R 8w3, o73kM*[,c28$h q h4xC1a. ɷd2RUqh4 slрn'**`qݘt:߅5wa&O[RRd|w1vl}2"",W竨ryovBCCj\.3g+8IOO?cW!r ! `Puu=lS;~:[ntBKb O$h qꦦaÆqz=1UUU?o[. F!((vx,OWٸ8t:uI st:= yFDD$u$&&vZ FEVEՑx].':ft:-& %w^fٲصk>矯d6m|.8c߾\uLfJJJX~Yd1#F 筷fӦ̛7[nEzz:?#U!Çrʭ~V%KB'zRr4hym?G<O|h?"?~wYVȑYg[ZZ(++#66ֻbaȐ!Fl6eBJllyyǨ<ᬳӧO#''!Cj)//amFBCðlfkn:;H\.'e$&&gZ-SNaFPTTLHHC APXXdKnTU%&4C&F/~q;^1B!NOeeKxx8%%%q϶J@!MM(҃Q"",fOOOgjm:=Ӽe XM1`n< SLײ #cƌ!33gܧ$$$ i0HMèQ#+ }%A\ uVsPkk EEPXXH}}=n4SUW]hd͚5]!Bq Blőx䨭|UB!ݐ)Yrk׮3zfrۻ !Bq:ZB!B!z4B!BM!B!%AS!B!D@IB!BP4B!BM!B!%h !NKuuMWA!Be$hUpT@\Un^TTd%,RYYի㛛m(((JW.8Hl*Qn !a6ڂrt)D B)B!"$h !B!( B!B!JB!B)B!"$h !B!( B!B!JB!B)B!"$h !B!(]W@qzgltyB{qF#;]ofmܸz/w2{,_L[oč7{p_oɆ k !B% ✶p/K.-[z1\}U~_//enbǎ X} ͛9tP]cϞ7yX~֭fkks睞i0'deM}ĉq8lݺ{zA tܹz^]p}>h f̘dd}<_^[…+{{B1FBH!(PR>Uy>Uw+6 : BM!zLa b6cϞ};Kpp0? ̙39sforNJqqq̜9(V+[lrLtt43g &&&nE]p'xX,̘1Xv;ٳ. $ _شi3O>4sF1l߾VoϞX˨(Vxݻ;~l殻^zVEaÆ\qͷvOz5\ͰayGj_׿ 6[ <ԟ;o\CnV***O} !>I&ǡ316ѐSNSAUWqA%d[(h`69R$pBM!zhmjkkHJJK~|wO~u)P-BCCx뭷PUK.q2x`F@PP ^/!26Իỷ xp۝gAL0ǧ-`34JOLsE~2;iI0(n{KC87t?gN%4E񆹞8~2FFFP^^ᳯCTT4TVVp8|z]ߐ&hZV(74hߦMY.NV:s{b2Y'DDXJUUm`8NO1EMBѓ^o@zLDTd13lcy}/u` 08 2F:@.;bb0>joMfwkC󼮮X:HU]]CXX(Vӎ}jG~/"%e43fǽ `|)<HKKc„<ğկ;~ɿGf̘&O3]gHKK . ++ SLIZ.h6e(L2O+--.^z +xGy%N۸xh4|y]>eoxʼ^{gyΟ}ػw//M}?_o޾=n[w#Fﯭ5 :UUQU`)pOXltزeKI&:& Ĝ9 >j]1::o]6nHNgXfΜETT$Vk[l{N3cyDEEĶmۙ7o.v.oӉCQ]NwVXUUIHHFUUbbOz䡇l6"H0zf_R.D߻.sչ,SBQ4w 0 E4ϐ79nq~T IDATn7ϰjωwfmq:M g:MM~OD쉀pNtzAO~6Ң)iݾj۷}XZZ|UU֫K?JV\}hcKYnI' L{ҍ%2kЙtd=_wCϮ Xw*xn1hxpVM!: B @.]̞={)**B3n8N']=!:"ֻ]{&̞1C @}ޒyvhkQUG~\fwFqL3vl>wIIIr* 1`Ibcǎ7ӧPVVڵ_`e?b2Dxme=/~֨'nv 㓺 NSp;\NpgyML.S3Nګs5 !%lzRSS145xl B P@!g??.OTnhbn_d&-[`Rw*M<+r [$lЀ*h{7PVV6ii JFFw)4^OZZ&f234!dy!B~i9SŻU-_K&n[3k)?b\w[kQmܪ}%Win ϞCM h[~"+( s8$=d :+7'O";; :/GZZ*oCa֬nz<_L&_СCimmg^/^ĨQ#\V`B |VZ'~F!xH3^\ѿmdATxNˠcl0OYV;@H|SUQ@cM ;v6FbDx7'ASZӧO믿Fvfs0&wh4wy|7 CvQXXxƮy2'O뮻JF΅^5kg`e|WRRRʛo W\* ˯X~#>}:---g= !?3K8*ݿ^KPԻ/cOP{;N!1 OpiT.70ASmO;7Y%VbM2Rld[Q4:@Z}Ӳ)3[ף'elwGw5mwyDDDB~SS Hqqq?:A1x`GXXn'\Nl6Iz0u6R0~8t:u7e_ZZ馟LMM o^FNZ[[6m*/b̙DSPP`0}'nUW]I]]ٳPQQdرct:ill`|nEAw{hmmJ||h:f2~p㹍rO~v϶?}P`H8EDD0l04 EEEh>|n***(,,&::dOΞ={p\$&&h!??( 2XnV@Q0X Np_Rq_ѐJQ1)""A=]9r$:,Y[qz3Kh"I'cN=VVOݏ,'Xuze+EQPU'jlͬ!i#B1bQk[KEр!S  rv^g}h:ƌItRZZ(DFFqp11DGG~ѣ:t(ǎKTT$r1OQXEFFaaa5 <jk1b!!44ξ}IKK#?UzɱcS?s@BBa#ۅkw[Gvػ?޵vVmm-!{'r !qw^:G8}7n; w9,YLnn.7xdb0Lرځ].Ϯ]hh!ĹmwR^*K@r$AS0FN*? 0 lzj4nEi,1SXŴ &E N VwFiT`m%d qH_z8NڰZ&'8tRUUEbb"uʈ崲iAuu 6kUUaaoP UU6:::-w4O(&&ObˆDUU;FTTԀAM1l6+RYYINN:p[lܸik;V+V:;Nz6]vԩS暫yWZV^~UXbޛ^p^Bx+&κn;ToY:RP U)PXc=Uz*Z(e%S3Wgy|f>ۍF.Xn+a2 (4M>7d>z}$V۰ *---ݍ: Z}$GVaɒ%C~aNfsTUUFrj;;wblbcchhh **jf3f/,`iB2 rTxC$=|ZQ,u2ìgM! jnLƞ1utt@SoN;&ѻThs΁;6x0\N3g\EQ >я.oY:) NHHM8:;;5+HDCYYY;r%+Yp!~Ç Xh!UUtw[}Nrrl!55ɟ6EWob>=  5S!|X=c8ƃ) Ac͋;B)NػOgg'B||<BC'hWʎ"##ih',, F^' e`^SS3 tvvp8HNNN{n?|&M ;w.yyyn,]wyUUٺu7xG eee_Ɉ;ju\}󣱱w}}=,YҥK۽L!8kCu+N.!S3zyMc-o)ϒ-}uN~w̚xTUEUQ/1:3fL~Ϊ44{Rj4Z222de-,,♀p wjm}5 l1B!b,M!ƕJUU5))IL夾޻&䉘f. 66LZϢvcޙe'O홑V!BM㬣OUu(vʊa)))uB!BtB!B1$h !B!S4B!B) B!B!ƔM!B!cJB!B1%AS!B!Ęu4e B!24ńgtw&UP쫪:Cj !8466zEQE{@M]V@95B!Hzrt)t8fe )1B!B!ƔM!B!cJB!B1%AS!B!Ę)B!bLIB!B1$h !B!S4B!B) B!B!ƔM!B!cJb<os<

_ff&wtaݴ.1B!ĹJ7le]Ƌ/j=c{-7PUJyy9;wnr,ZtlذcjN̳Ѻukyꩧy{رcNgՄB!T$h qx ޽a۷oe`Xsu b۶Oimm=&r+ƻB!, B%,477܌j+.',,֖Qj󣴴Ʊ( WWH***xذa#ѬYiO?ŋ5xƌGwA}}=ӦepL/y≿0y$~a̙]lڴgyѾ B11!0L`(J;ඁXǤB)0/_?3g6)h"(/>Cq`ٲ,[{uR:{̙9L6 яV?@UU%iii̙3̚5zl6%DUUױX$&&0sf.!!tu)**h޹^C=LII .䷿ .[q饫5<3{/f-<Äޅh^SOO?(|#(({Mxx8>4۷Ʒ}w=<OB|$>؄OLǑz̕M]@XD35Ȁy To1 ",\ssȈg3 B/o(X m6^znE'2=b;wضSHNNfʋXn=LFO2p8ؿ_lٲ:n سg/UUՄsy jo/".AUUU`2ַ(֭[ؼy ʹ Cywuuq:\}hiiᗿ5n{׾v^ /HiIr6O' 9bk,Z뷱Ti 5r r\<Vu{NO=)) d?mmm|\.'ma92Y`mmm4551c:7nӂFTT$ӼASѰeVok Vorss8||TUDVV&;w٠;xɿ8wIR0|~k5\F񆹓2 5u )Cl6i\sa}bÆcJ7 4 N KH :0ϢOt3Qši ǧ'`Ii-4vhvR\g8CS ՟'BM!N_c$SSSGEEMM# tb,YxI}}=֭GUUBCCt\' }l6Iu!::4TUVulgn^]]] ]}CX>d@xP4͠[x\B &bdf>p{Mk^%ubC4| 53wEݦ|_9.u nȣBz9)~ye@? ~&G;ɏ=6[7@S7! K+&&%Kk|xo9x eee$GnW;ݻFTRXXܳI˫;XuIK^/_죬|wcZ͝IeexnLx߃#Gr%+1 >ct 2-[(:55EE,_:5dgg{ĝIqzf'2gW{B‘lns>s{CXs~u"Hy).wj54d,N5`8xB QZ عҍV3@sK87lv"""  p`y+,ngÆ ر3לlik렵!IPP ]]GPP [ b1c6wa6wjqYgBww7׿sʷMk< aҤa˛4i>1o6!!!W ## ?C'o6OHOOg9s85o?'++4\5ɾro*ob]/RɡCf? [j>#uaIc_ *R'2N08OF?B)hjjfEőٹ;@MM111Ann.2z]v)/",,Rii9ޝbMh[ bŤNff&^z 11#.ddLe鄆^ԩi׿>/~=^|\q<ٴi{ܙ Y?+Xx1|? &&;w/tv_.NMo{8ܦ&nv_'lN8BW2;k{z^Cn>-B} I֑0/CHnOcVE!z)O9vc>?znkm2%@kTUEUUO|9%r(++c׮>-S%33FÑ#%]L<ٻIdd$ .$2K9f丸8-[J`` tu \C[nfǎ]S[L6@8GQgI4,+=VM7棏QSs|zfΜIhh(v?@LL4'|n7ykEzωNc˖M'uqbBR`cQAB3~. v94lP!!!h 3v`˛߯T B 2iLqC鲺y6- IDATM?+6l͖A OXX(3'm6}>s>AʩC!ASLXc4uPS\lK<{Yؾ3YhW]uOBQ,|&ӚmSǑk|g/LdkTLdDX6-`5 LQE@s4<{4 /kДɀb***;yy$d !F%hJw5&~ t1WoN{K١ѪJRe%%@Q L#4;; FCaaOz=\. ƢBLX4b>d|a!8Gz< X֨'fgX+ʦ_3s삦OYMp8(((l{[2$H/# B!M7-/w1.Dc8}u=*G8&eTG{[6..ib4B!짻Cٿ s-uTv hue=V..UsJ9<%SAHBn%KdQo|IRNzBqƹl=ng;ޟ?^)6L8}{9 O;)6@G9NzRh< ZCloAqƌvV+&tiS={8,ns?6tttttxIH'=}* @UUIMLXXii8.PpZ ǓJ||<=Frr2!!!4 993P 111X,tzq87Gt:͛Νh4]GaavEΣ*2337oo6vbʔ)LJq"""WױyfHMMv.|YCWVo~n-gc>8uuk}L`XP$F#(z0E޿羞z-YnheS cN\"--$**1HKKѣtvvEzzdeey[CN88v%%%TVVzgggknZ[[ظqwFӧr۷Ǘx3rQ ZZdl;|g/% 9)Q#PѮF%LjwBB8rzèFVP4 ( 5f ĤhQAZ>{\\L̬477MHHhH;BQ}\.{}."͛Cyyyy `0PVV׿~\pL&:;;ٺuW^t:-_|,"kCu+c޲C))DRLB||l!Ν;}PW7im<8p<)x&(6>>~1V|aB!F\ Q 4'DsSppPzi~rl۶}"B!NiFw&&TNSpZZZygƻB!Yvw8e4ńrF4ٳg଱dǎg乄B1Na/Ą#]gń(| !;3M1a~nN B!N묄M1I(8M!᐀) 4wUns]B!FnH¦$h ?EQp:B!(N5S5D'Ίs}Ъ B!YOU=-}CfsM1) t:q\ t:xWO!bPN ݎ>!S, ?ll6v :VF^+NssxWA!8NZvq\8.TՍ(29I8gx>ԞOrχᐱWWHDD]B5Ftl@{%KsMqQ'D r/By?trQZ1ŹI8'n>s|TB!FJQ?K¥8I缾vB!8} r)t9?=*B12}"-xB|hƻB!B!-4B!B) B!B!ƔM!B!cJB!B1%AS!B!Ę)B!bLIB5;o!w 44>֭ؽ{w`׮Yn-?}Ig?yO?y-23v۷OKB!#!ASqN[n-W]u {pƛxG?>?|;e߾cR5\ڵ{v;[lcRB!ĩЍwl@qq1EEŴ%55Qk0 eݺ:tBOzⴕ/B14g_gs}?Xd W @\\,w7o[nh4f{ӟ˰'GEQګ {yo +X7/2mhoo_>ğXJXt wq;&P__oſn7wb2z=Orh ?_/B.$+Iv>qf9B!IbBKHH`)/;fvLKK 477tqqu(++m>%kٱc'Z_Wtuuyr8>u[x+UAttwq;<,gb֬\Zկ~e]l6<ګXyr{X}-::xٿP__χc޼9?NB+gt#r~KuB ObB{lR֭(((q9r?@pAn7&`4yG|Bd`` eeeNC={g򙤨w۠ Mˠ23s͚'z222L*M >0mZI?N KH :0Ϣ%iA<UBaIB3fw]:::}S(>6mbɒ%̞=իoW_/kwvJkkۀkVvcNAgyꩧٰaӀs2>)/8}"LfW1no5:g)6IJg Q)wK݅M!ĸbԩ$$$ib [Mrr}mVKVV|q]͓ UC.[QQf#66BٳgQ[[{/;eH8v ]w-6m鄯U.Gx{xx8IB3#4;? 2c+uQC g `N@Ri7/ewR3Um!@&B 瞻={˖-[o?{ ''ntn&,8>d'{̔)Sə%\ѣccc999L2Z,ݼkʕW'gqy/k|jRYt ?Gb?s琙9nu5ل x7|~_2mZfG} !5ɾro*ob]/RɡCf? [j>#uBHB ͏|/MMM+~wl_$n`yi~TTTgܦ쑸j`Uv2)C桇Ppt;@#/O9vc>?znkm2%`㯄24ޟShooxc?nUU)1F{f D̙Bɋҷ,CаxL؄(h4'n ;>|8qa qN x&\Twm6}>s>AʘM c4B!Y(oȴwS0Y t~:v|1 Bq$h !B)ּJT3Hjt[2b,HB!g~:'֣5YY69h :f$2pQfvB)B1YHuyBt{~&<~ޭ>-f~ -]4|v[! !B3[HLmխrѵm.^u~d-u[|MְQj+'&AS!bu6xsSPt;Oo*djtZrGB"]gB!YWy#ubCp:y{Z6?Ea{]>X+ʦ3V!OZ4B!ƛ k{wSoZ_d%g "uR !I)Bq`? BL͵E.OȜk1kj%tByٿ ???rrrؽ{7xVbmۆqZ/)l)yyGUϨ()** tuQ'87l=s 4: ,x&J Pn5:-qev2.nC} ^4 ???ϟ gy VZG\~bb?ZmgTT$SN|nYN5z}{C̻Vv2Z*kBxnwL&xBߧv/^49#++* ڵژXxsFdÇq3_Ϗ;#?In77)/ << /0:;ظq#f[o}N֮O6v͂As޼j8r([np|2z=11(Zf̘-̚5k)/~s0kV.zr6lɓYbo=p>elذ ͆~6lٱc'X,!% aO>H!kkh/9SBaI焅 `:;;j$&&GEE=ioorOjX[[Iկ~86oLAAXWK8|0䑚JNNo)u?ۅxgee1m4cYr-[ʆ HIIާ UU)/`֬\xޟ̙9[X,VXΊ+Xn\T IDAT=S _.V_x $&&kGb6% jH|&f:uuT}ck9p-bh4ńh3g6lСCX3g2gΜ1 㭪>Z7Wn`F#%%%}YfyӦejm۶oͫ),,P͛7Lioo'/ BUUVX̙9l۶ 2220,]0Xcoϑ+ILLd<>Sob4yX| /_Μ9sxWHMM%33ba0!m$>h=/[n>Ayyzv4+**رm32Fբih<-]`2>-NM>Պj%00.lC].ZL .Ĺ\$b !& b³TW#11K.iҩuUUUƮ]HOOUU{Χ󉍍!;;@>hdffPSS˱c0+W^DFFh4kiϟKKK+pV ^OCC#$$sؼy 7Ld2Q\\LUU5%%%̜9{}ii)Xd1]]gUlʔ)̘1u c2Zw佷5k֢( YY\q<3>W0suנ)++gÆMTTT0sfw߼>e`0PVVtB!4ńƤIX,rQ9JEE%]v 'O<ᮨ3g0e$oaok&@QQ1mO%66$Ľټkn})秪Ώf p ;^7C\9| U=T~~cB+++y<˯ znmlݺͻ;P{p|˖ 6Pٳ={8p8xͷ|l<}ڿ}n!8%#"3H `c\|yDt II$''p8(.>=閚w7xW_} p3<64xf%p14) 'kK,`Ϟ/m̛7>Wxxg2Ofqu=BLl.8UҢ)&:HJJ_.t:%wdLxZHH3Lod{{;\~g^JJJHMM[Lj!4429:7))뮻XYY9{%!!iӦaXػw/ p+xϚٳfM۷ | v18. (Bs*!&8i;wҊdBR[[Ǻuo~kvmpvrNg=YᘿVHll#44V<9:?@GG {jjj3VCl޼p ?Bg(F3!BkڟLy 9{ww[o[)O"< ikk|i3.wWU)8ph4NK=BVn7DJ {m{N !Uaak*٦~}:ȱC͏}ExqKMSCn=k@ P!hiZ@zH:]{Mv>>H3=h88$EJDJ0DHQԌ}1~w8q^zݼ|!K2C~!۶th.QӉ2#d󈮳'OɓT^O~I2AafB-moo0 hbz]P*eA(ȶt:jZ^^R\h0|/`bE 0V-ӌzpJqiR^wgm9,je\ 3A@Ll4wvp. VZ-mKjM[[*zQd͝l#hs( `{.ˊ4f^ .{YhhssSz} d ei{8 'ȳZMǎUP|M wfPmz䉶,8PBQeDd۽KSmZM5Mu:m ClV @}`^=h HaV*˪׃޿\ V]vJ[ B GU*TVN&\ `Ds)#nn>,T݉^l \NHW,Seisk]+" 5mkszJZ-Z]m:]#S(ksaAK?x>~XRQJEۣw}~U1v>DJf{t |S?˛fhН;wh4$2ei,SKKKj4s2m,OM)V5w_U6WVVt!mD J?e=TfVЌݕ.@ 'OZCZ^^VUVV  'a4 2MKeP(Z t&&VfȲ4L_ؔi۶<---R)X,\F {ݮZ=~DZͷkiL}y aMocNPilϴǵZMZ 3$ݟ4'`\9k[A$'YYtȜ= sL-`^ĩ^Rw]u@,>@zUw:|hEFI ?Pp[oZg?-haaAvGV<ȚzRsm4ME 'l;]y%02,Sil6aϥY#oc۶,RDȌʩV]0h]=!3=!JEYE!H3iXьS ;ٖүd.L{Sr'neӻOj'YRᐐ9bqAmSٜMI Vz@۹ojQ[>'MiϱQ*Y'#X,hp 1 Cý21$.3#zø/齯6Ö 6U Q3lls9+z1lra0X[\nLӔmw i_f$&&M(/ԮoiZo9! yM^IL6caaAV-I%fQm6A3Ȱjy#uw,˪Gom˶0N09 *6LӔeY[ֿ Ɠ/A^f7! vRƶal y5瀢I.`~8ᒀ9)c *Je)[ y=BR^v76|X,-+Wx p ò,Ɲ* (z3A3>Q? mt#}4r'״l6VVU|lFddQ4 C_ ￯n;| x?/66a}K .?ķ?tr4 '\NaHVkȣEIޛʮziom<)ȴxQьB<uGucu_z`yӧd۶jΞ] m[?;omm-3:'!s,4U(?Z_uy򇂫~Ͱ 􈳉<j0(N`@֐ԹqWyf?&#Ν;7olܹzu(ԓG7zFÇ͛OMq f0LF£iZXXiZ2BjU:۶tjtRy ޹~W_Qr "rϝMKlU^_ٳfyyzv#LٳgZ^}Ue6{=?~\$?^/['/o|j=Y8˲T*&vkږeT*hggG0e\.P0~2_v8^1Ӳ:аt4 cnOWRƍk_1זJKf̑32 C7oԭ[Us=ݥKu]}[?vN | ,4VVV/nat5adG }N=W^yEW^Wo.^OҾm|m} f! r^]#' ejqr`Jatv5wf\]LT"*Q˽dtzoGbJ.;.:2QNY'77t9}n߾_{~}sw7}FIRRNc$4ӧÇ#z>?ԧ>;}>}Y]xao= $CǏe-\> 4\.ȑj4Z^^VRYQEr?o<~VWWU*ZC:{vvZ__׽{GYOʊ1&GXdm[ ɸo۝kV oLwajzSYw^ęf<.SLs\mv}gin6^>r.=c)z O[i0x;oH%hN4Zٰ_YVi_,;p ` CgX {}oiם>,z/NDY)ݠTYozc]hiVl9A׻mM {a,7zz+2wIH-f ~a[tnaSiT1u:Ni)(mLNm4OPe] ]m簠w{AdnKP8!H4+M) m*sM>;v&0=QUaV p/l3!KMo(UMiRmpN 3|i*eJ9at%Y͌6I4fPW֠na_k*~q\P`SzϯmovwdYz:>@7*{^`>Ḭ̜IVFjzջL*ivDEH(,nqA5h;H@jk?Nؔ.u}A!XwTְ7`Jkv034>_ۤfa=8 @ ~~ >뽟t dbm4ڏ6V)̠idw(.J j7lQ/Q3N7J k]Qi`JһqC&l6K̆LI2'5, .e5ld_X2O*eX92}Y4QUMHatP:lL r 'ΰ{.70φuI k?l=úF ö)!SFI3/n3n4{ͨj{k*eUQILBM,ε-V^&0zFWqKĴJuبUK6n$7hEfwXʎ\br \dvYڷ=oӯ]if6dJ Ciam4~fIR+,GVDȔt٦qQ捲 |QY0 RvQZao~q_83MER ̖*tEBP49s2ht:ϸ럻KI"T(đd$;qg _fRH]CӤ.-B7X`~%6KdV^CR۝VIik"4/ydҡ0w!Sk`2 Y TiYGVutZ뙵}`I솦IYݏsBIT|dtEXtSoftwaregnome-screenshot>&tEXtCreation Timemar 11 feb 2025 22:49:56< IDATxw|]n(@U ?@@"e_(C  "p DE%Ȇ-lZ&Mj6I_O}4}&{>ȏe}_c"""""ߣ2kHDDDDxDK!=|/O189׈l1t:U_"""""rB|-8pUޟ?yO 5hMDDDDD%"""""Qngy ^~hlJہ0gO>1?*ndH !˝6u$""""* 8- }nDDDDDdA1`g <gDDDDDD%,$0D 區DDDDD叧m,^7y5ov-w_'C7KDDDDTx3>^¦?!OukuԎ ;G{*pUpbI&C%Qjt5p|u_'BfI澈3>6!4d'`w;wx<l۲Xq&*N]W.sr"`:\3i/DDDDDd͝nW,wWQIY7WIܽ܉+W_["""""*J5݊Zxtuu¦/!oLWe%\MDDDDT^d6Yg2wgM_ >=wL1Q ?drJ ުnLP㍐,`'\;ӗ^c"""""2r*iNw_M_ A9wVڮ,`HADDDDD,HGm؆KWw22U17׳mۗ@!"""""reFXW۸˰ a8EնK+:jljR&c& r%pvuuR!guFt5O*{c2U) κDJT :L6նQձDDDDD: m}vj_m[rU2uDۦlèm};ZFDDDDDm˱JێB:jYA!ӕ iڤ?cj˜uJDDDDT[^(4ݶ jl۶=ݍ¦v䦒Lrh*moklvža(+n׮2Cmt6]PN/_ T3] X4ÇtEaZiLc3DDQN* 6iuXMXN 'P@æW5K̊Pa4 A*&2ow &Z ?y#$;-w(BQ_1`u@',n; >SYjh1g!Sy7t:@L dުb;jYP&g(*P4T `,2K>Sjm4}i,k nٲ屪UMcȤ@*;0z=a0 %@hZAӕymt/YݤLE\tqRǎFa4mд ެjzC*%_OV3-eV2Ï|(JH7<]t-E1_~C$HT_g/IĀV(VȌ]  *Tԩ?ym? ]Ķ\lOtu4ju1-x5,,YV3)y*d:@Z Q0WGff&,hno(LqU5]Nڇ_ vUf6YNc]ĉwJT# 0ݟt$22n< 08'"cXZ6(W)6ի6W8M)I^g/4a DQ[09MɦQkh `UF!]f--kRq_$|G"]_ǔ@1h2=gQuk4$$okiZ^'/`},d:GjEGeJѶv-S F߾CƵkװuvv:(twDV<2*m]n`jB#H:#Iyc0 x_G*U=v|??sN!da̘s漅&l;w-Z4!JYY1"dddQD1 w޽6og…رd̟>&M^Y-h4Q:wyyQY&R4x,޴?.Z%~شWdU}Y.)d5юZ}?>]Ovg.k_HII;^0|Geްa#ͷO>ݻwM6v۵< µkpY,Y BCCq-lIg&ZG^t6+lնw|}Ŋ3=j`uڵ}>`2-%$4ޏW`  kX+2,C$H P^}gh1dWr'Ori=>999;֜Ȳ ArMzdgg#33||% $AezyV˛l۶$aرvދCcР,]96m֭-˱u4jnzl?YVh*uV$$ýzj?Vc!Z-4MOEQ,7huS"a2Mdq;ACРA} *TdffaѢp ,]aۡns7dSj7z{|ZkX~imN@qh>PܸqGժaŋ?(־,Yi0%I^o^8DEE!,, AAZ"#Yo@vv6nܸ4tA )£moQhxM*[2a0}|„ɸp"jԨ1cFCߞ3g"..3gNVdѼc3-gڎ4݇wMguU[{ݺu p(|LT2 c*A4py^"N`IDDQ BB:uqu>Al Y!WgJk]Tl{?,*Y68||Qx뭷qy̞=;w111xnm'(t4q mUP7nkPj^f^ &>n;iS4uAQ:j֬IDTΈUTFll4Ν;/ $$(I _ ZCIxi@Kٞdc_1Mƫ6۶ J%%ҳ+/+4nuvmٲ!rEI' TYæla4k0kf$"*DQڵkadgg`,c۾/GiLEFNdyLdeU,@^=}&͚5CBB"?~V ݻjyI~,oLrrrѴiDFV́ߋF&Mpa@5~4u5M(ZOczo2U+Y 4( +={..^8cOŴ4̙3cǾe{݉*>%1!zꉼc$""DQuɓHV(xo1]zjJB ((ym7((YBٿFwܔ[i QYTc1tdmM2FP GtQݦXMoq~< ?"uQXz}Y 8I5 33 $skb$+r=[sR`e4 {70|HN>^pM+HJjHMMzlUHJjgRFG?؊xӧS̯G]&Oܹ믛=6MnRhY`$ P7obQ8y۳3"/ z:YڶMriއᄒ?oM%c]մdZ,5g%*_4w7obذqI &$J8SMz|={ر"22mSs;g{1zed˜1г%j>ǡz&s<ˬuKCfyo殴?=]tpftL8]vG߾vz 69c#==7n<QFc߾vy͐0 ?>L4)))޽ZÆdffbĈQص/l={vGJJ*ƍÇwIXf-*W~˖}5j ..μn>PV->|=7 ANдi' {ׯ_jƌ7ʕcqELRSm|$>>c4T^ )));v<Ǝ}'OBժUSKԶ#eclQ9 IDAT_g^ބ({QqIԫW ;*u9X#ɓP 7o.7!ϫզMT\L2 u~ev؉;| @1gΛW^mv_v-Μ9 `lذsG}?\z,7VpLw+Wƍ8n:7n 4 mہht:={h4?~Cףn:=Ν;Ejj*IFrʘ8q<cf"""-Z4<`?]ѹsGs]vƨQ#a00`c8vރ~Hm kٳga̘qHIITRo9UV-Q%˗>M"?` E˷Zj!>>P^=T^Νӧ!I2jժhv@&jժEڵ)$$j/øqpEscL﹧0}VAd'Э[/XϬ[<Ntбc\ {7n ** w/Arq 6DӦMp}BբNP^=שc~aF2Q&&&0NxҼhٲ4uLӗiCAbbC*UENN.ۇ .bUx㍩Xry;voNN.V\CcWWG'phYܰaॗFb1`@dff}~MAq\30a9dΞ= gBZ5q9L0DmI0he6MaFFC[%>>Z?<< / 6L#G( Zh Ce$$4`ذ;~: Bߝ-[aE8zwAJhi)88_-Ν;{Fbb"v2N|tmիW y3CÓO>k_̙ؽ{]wuBDDqqqx啗pwwowޙ; ++ >6]7wg/ðjjh:}zٷ(ЧO/?WEQObWUVK/Dll,:#GCn͛5h. Z\g,Z4ߪlTT-u~.QDDx+ Nn[.-~77~?q$J)=f禶鶢(PwټY33еk=Gnܸ_ɓШQ">tEegѠA}|gv)k {Cv ֭[[n!//ϣmwͿ#"" @EA@L O(YX=dΖQcLF ! $ }-o+aq c9<]gߘ6** _~/f<$$ O<.\V@:cHKx8ȹ0s{󉀈1ht騨(V2  ǢE`޽طo?*`f%"4 ""‹5ѓp3/^7𝜈Aʅ et N.M{3áhЈL9(HDP$!;;AA:n xMk(e y鴨P!!|FA ̓,K|o{4oL$699 FHHHBBB\(qn a&%)#//!!!.##"""r_pdy^^ya&ː ( PV2>?( 4ɯ$zetDDDDD^Il"I~T͔$ (B?DDDZ DQ$IjM[`0,  DA2eYN+#""" NY>>KA(PM4&"""By &)04(E)itbǿ,`藊<6et`Ĉ~Ze˾17%|~}8Ɠe{,DI~]I_HVݏ9Εȗ3;MrDECQ䂐@Qd8"""e=!nJȑ=TP1TDJZ$Vӡu`4“Dj4|ԕ+W'C6mZg!""?v,KhԨQԨQXSo:u@DDmqb~O3U$s$U ƒ-2>%o \V̙ A9sf᭷f4|ŗifΜSNaW0udaHO(AēO>ɧ@DDUd`ڛ!ӓ3?r@M|xOX$Px2>RvڵC5( N =Gɓ Qbȑ1xPl۶ {Vm3##=qGKiJ*̈J&+O8捀 sַ~ D3׳d{9S[r~*p$K+&R3_`$Q??_={qFhժׯ8y1b(A<;;ii충6PHH y;dvN ţm* 6h`!xM|-\[k1(a$*E!U},;;5k{t'vދ#GbժI{*U3߀^EQPcDMDDDo0vBQOQd M\Z?6BĈWY%[!"\G[2\NJ?@"?1Dr} |^i?!9oX-?N: 4?~QQQݻ'^y%<ԓX@ݺ֭[鴨R̙T+NDDTN#'lKDQwrȴԻiwEE#9;5IG4,^rszO^i[{Pre7ofZL4 ]wbڴXd)Ξ='N`툏 hP~=̚>/0w>SNBjqv'MĸqN(xݷ/C s'""*. fTقe wFG棷8r!'.#jxw+ Nn[.-~77~?q YgMc 23PZbkpq%&&b֬ޏ3t7EEu=S4^뛖َTne:D>&##233ѬYS~{>$"U*D@A!A 6~3-&QMroveb,?[51 #ŸtZ6'gC5wGg׎5>С z6[%'LJ.( bРѺu+֭[gPbEt=,"""ݓ'4j,ҥ˘>}>`gnsE˖}zh`„HOOǂ/sueV|4D$_Hb$R'O0v#y&֬[l%!>>j;wa ѣöLut:{޽#Gc ,Mvv6v;w2/۴iT^ QQSWT6/U}A뭧OII^( &C`I>%%?? 99Y&Z-ۏ_|G˗yԹ iib8|,&Zd),Y=y-ېL<k./キn‚Zj^zC>￯٦M+deyza`9a-2^/SF*ZJnx2M"*/ɓ'QJ̘1M6ŵk1e4޽'N_|Zdym$T>Mڵnzt:L0ݺ/ K,ŢE;[^zmt:z=6ndرcDQVE~~=x]~Β$a>tbΝ#<A0YN:7gBL>k֬ߡE~x1xqU< ;^s7o4lذHu^˗/#)N4mڤmwjUF/ťLr⊎ AAF./FW2'r?ߘMH߾ѿ@]$eeeaݺ c_AӦM11xh.T\Vթsn޼[h\0?zQ;ZB$?[mӲe kjݸq#%7q)}r YѩSGԭ[Gu43]tC.0y4ܺu +bRR{>}լӧ0s[|wo6mo@RR{ܹ 0htz݇O>][j#gkfNjrrr3޼wն%Iҥ_GСC>s7o#)=֭LvIIq̜&,Y y9կ̟o߾}ڛ`{#̜z.]ȑ/`kzޟ%ڛ{Xs{'B]0`ص/mSR /Νgg۶xAn<ȣ >;G1{it7V9-$%7t&Pox١ر+ x~G7wF~[͏M>ê뾣(ocǮxxy|̝.z:t!ԩ_4dž\P-JGT0hRjѧOo5$YGxN:|t:1PZ5̝;sFd?n<f/ػoն3m߾]ڷ @1qqqY&rssu6ͶmZtץK'K^xiiviva5M@~~>>l .gϞÂ:ׯ㫯Ɯ9oaШQ"K.εk1t0b֬7pt ^|eXN 2",z',FѺu+Yw7o㥗^AV-bŷ1c/_ 6N㏚;( 6l8;3` '[vCNHhL:/AFFZnUP ӧt5I>^t}uڹH;5k,Ҏ7_EQ+cq1L>~>bcc0t0]B׮]fjŚ5ѵk"M,??jODNNС%K>ČӰh믿vc̘qի;b)^xy,YQ1y7~u3Eйs'tXf5Ś5MK/ȑߢQD?Y;0o{x!X;?c„Ipbu7v6msg},̚5G}m۶cX[ԩSݓ8b7>LMy=S2̊cF%u T s*V{u-Rtc+""<Y2̄ӧSa&Ew`w!"֭[T{'rѣ;&N_dl+6y1 Ю]8qK3z`֬7кu+4l#.*ncYFG &&ZGdqܹ# ++|iU^&LxCfM1e$GxG?,f͚>BÏt^}e(%\id!hڴ T_[2q8/\ *}vR |~]W/:n"IƏڨ[z?}PsԫWM6E\\U3ߎ_^. FjDq_ro.+DL+333!I4 ~zn+H7ॗ^{p9Z?h4s 5yӺ-P0m+{{7!98rrrPF 4l`s5<؝޽{W_}Sև0֭c;wBvwf͚عsE>k׮#6fzjL> ߃V[ .C U<6J6[~=p.-l=ϾD^r}"88Qt~cSSk׮J*_=6 r9dk ~~֯Y%KbϞE<>k߯tޭO0r 9Zq4iJC#&&?f̘#crc=4Xٸvyi`0XUE$IѣGѠA1#V_gϢaC]qQ4j~ Gr*eYoʕ?"22 ηU5BBBp5sիj6npY+Ǐ ODXXa.ӤRuR]ٗzƟիer!]'&$$…CjPZ5#5 t:Ըq#\f^Zj͛怽hчR zk~{d㱺ߦ3W^ř3gt'˖}YVT/Gnx1Xh>?`۱kPEːD@`َ%noَAU/?YDh5Q w&7ˑgEh%Ξ=`TR#a+337nFfԨ8zNN3 AHHy Fq&"^}, z${Į]~FL<o1,ךٳ;/^bUt䫯sРѮ]V>%q~FwA淛whONNF{GVV&6nd*E^X||"t:| 2+Vė_.CffU wN߾bŊ0e4E(n gϞѻLK,5en~,,, }>"##s7gcpedgg#!!<:unC`ÆM6l$6mAe\l֬)<_nWׯ2uݶm;F| &7w ug_+b͚5OȑQBViiix~.#P~Ӧ$x'|2-Bu~2+Ǣ]xΝ;h aϞXG,^7nk[bX]sqMWZ+Wf͚ݸy&ի[d]Og I#!^mŢC%&C" BDl:pOs]Y?\ /r҂3&L@Ny)}fΜ;ǓO>My8|C>...L8fK||8pF~W^y3c~L0k._5xxxxΝݝ1ib kԫW5kֲknjc{ޟ_g֬w ';;YO:O޽r\CYs&oydeeѲeKϟW mڔ>/_}9scʔg0Mt܉s?)̡ywX[\\\mjҹ'kq˛+ɸ,vLb8PtNhz k2H) v4/Eڵ`Æ?ΦEEo6<ýGףi֬QQgmf&tz DիF!++tӧ7j.vH!*r5hxs7_k)oYEA( ICx(!G;@sFjQ4:pgbOG 0@S{ht-4sN(J}70,_--''ۡ`-kZ4 -[Cl'ФIcBB7ry! &A@H',j7E=kP-Ƅj6j.Wצ3} ˯V@ӾՏՖXٹUFaʔ'*BQeeggHzMQSju_DBX 0޽/p)o.X->n̛E4mk}& G>|$ݺ`.]N>vpʔgxׁ{K+[o3 0aÆknǘ1c޽7&L"&&%DUVs#Du# hrrr RU^xG[o2oާxyyOpʕrd П-Z3p6 ~caS7n,U~cG e޽KBNN-) _~5[t6l/lom6t؁U~}vL&zYwtZM{׸kw|,O= ,X0^xO?Q ~??_ .\+W{hbv_wey,̞'ym|&M?3z?ˀb˖ػwC>{N,]#7|e˖{}P;.DՐKNNZF՚4Ք(^ORR2>](!Jo~8ȲeK[.*k׮&XV ;J4i"]?1kLu сeٲt īN3QUWWW|||-Xhhg|}}ٰa? 5kѣTEQ9OF iժS>Ovv//O|}}jet:FK#cʔgHLL˳ڭ\ >>>ƫՕq&oq矗SOz+=9^F`6n{Ѷm?@xQ~u9^^^L:Cڵy?8;;3l؝ 77ܽY޽{vzԩ#@}jbȐ<(K `鮻J)dzèBTGhj#.pEAӑIZZJ-%9~<??_[ (w^k.&m9**L^xa-K͆ m 펺Se5kqr ;wO>,) #Gˋ/̨QѩSG:wHhhTشiaa;mkUjyrN>C˖-nlPlE}Eu8vxGYٟϏt;NVV#Fr'55_>Yls]t]v?%Сy`~͚u 5j԰-[pww99 5*JKl6a089­nDMQYRUމdZEUՎ|#+/\ i:]:t0_N>{C۶mXr۶mg;4hg)$&&w^tN3<_t튛˶mׇ ,nfѢسg/{]_Svm:v쀟/7Iַqif~v|yǫ)Uff&))8;;ۺImΤYkqvv&11.E iJB%bbkbTUe$$$`4tqW7I``} .\vڶDž qL2SnݺiӚ͛b89IVV&嗧2oާ8p"˸o~;Fnݺ/wY]ƍ8tCMّ#GJ9+3pa\Z7!))''kiӦL`0juL)Ԗ%?e4]Zuuݺ-+q`y8?[IɌlyb60̶S,f ٬ڮ_ FqMCܺ4N^~EShʔg[7^z"n%Kfkiu6kd@ *eL]E7!VKpp@.`*YUem.M-"rq*G $-QhU?*:٬l6jj3Mg-K KZEURm0L'xzzУG.$8pTvq f4:i ` 4KZ.**mʏ3%b+K~,\{Y^# Od*Zm&U{Zܲ4ͯo6(ٮӌjO(5ٲeseCT?.D>:[K-`6-nnȢ+*ުnfс&*MZi]ےf FUMj]mY0@Ӿ3KΌjlCQTTwB!DYYoj_ .k+o@ӢpSօ$7MukJSZ?Ѣ8poK`Հfnٴo@S!ղ?:.[XDzhO:Wz$7}Zq@ľb҅B(j6@n}Uyg%73 4M}wi*GMk:B~Ǻl\pK+KU&H)n e^B!D"Ah fbpYHaܨ !YòOqLn C!B!D@S!B!D@S!B!D@S!B!D@S!B!D@S!B!D@S!B!D@S!B!D@S!B!D@S!B!D@S!B!D@S!B!D@S!B!D@S!B!D@S!B!D@S!B!D@S!B!D@S!B!D@S!B!D@S!B!D@S!ĥ.B@WBQ=]HCNGN{>"s9#/g7lM˽Ƿ3:OgWƴOM7۶IbJ&uF}Ϛ%٤' bs9#+uw5\q1 ?mB2x?Ұʹbt~E !Jj4Bۙ+ٱb{>6'3RXq +>G.aC E̒#lLZEAYUv*֞ŴDgeg\1>پ6'21?/appJ.BaOM!qZ,r ;m\nOƬ˴Xj휴zkI\Lb;ߑb@Υy۹#ޙI1cvx")3?"_4EaPp(]뵬!BrOz-Pբ_LLRVWZh@=Ltr}{F)ؔKOI@Bz"˃àӗZ1G߸ jnpᮐn, t۾'/ǰ.bS.ӼFb{[Qݏ ڰ*b;{ݎуGrjjZM2+( Эmlv gpzSi߀AMBq9q9#/vJK wὭpQl;w8OA36N^A]Ax;z]BHrrr1b$#F$&&aۺu1b$ӦZI+|a3Q~q));cǓ^BXk"W/y2ʴ@KqK9w]PeӬF kZ^jBe9_ݏ:g|!D%^`?8t^51h97Vadn|] +7kI۞Vϔrw+br(ETɲ-:9X?CEG6 lJfn6nsI9q)gf\0;UD\:Gh lҙKf*&9hiF-Q#b;΅Z^nul50I( MȖ=iU+)El\tfN]1HJ[t`i_]<t hVB!"@Ub q+219ֈeՐtzR(<H`uw¿gEᮦRs\¨Q2acٓK,^Kݺ <Ν;] *D\Ls n}j2Kڧ(B-w:4Jf ;[k6%::nݺѲeK?o g}?/T:t@JJ*_ +Vt+**?XMzu(qI222OquuhtԩS|G͖}4͛LJ޽{b2X'~wj֬I5lyu~;j"##W_}NPPCBC;us?CW('7< $gv '.Es9#3u=ʴOAQG1yw 1#6Ӫf**iEC^p"/c[IBxXmefsre{ٖKT,;t5]-qZ⮐ny.tDZΨ nt8ym/5|m덼Ȼ)Y\HN#B\3g"W?>V˞=D͖-h1uܸt="˖`!222 yر#qqx≧'&&zwөSGs ɏhN8As4QwBAaW1r͹h F"ܭ~+Gqy z6؍Cvwvt#ҨY&uILQX'Qyujw'KSu'wq,G#(D>FΧ$?LO/-<y|O\f^K=ľ3SqV! !I)n)ڵ姟~ӌ; ݻ'Z'-wf3O<ñON_N sѢq9c|r2<baBFF:nݺ~F>ch Ul~Zjr >x/e XM\"!$:%x3WbK fU埨\JOoKiʲړ;q9ѽA[{a飉}-{/ߜF0\LH+ h֏3ЫºLAc@3ƾAva۹#:=Ц]fg0IEfJw")3) r@3ا.~.Ewk7;EFnVElԕM4]MRB!H)n:NGnn.Iض]brN|ɇ??~'NrVZvrƌ7 ϏsΫuvxGҲK 45_ǏG6ٳggΜa۶l/G3q";<Ykז˞={-W˴_fZZ} vMh5zwPk@Nw}wHѼ#zǪOiԡPޙ pH, =4tӔu: EӖB!SM W^ˋǏf5?~8qF ~79L ѤIF#uIFF:˗$(r̜9$fff ơhذOz{ݖ}Mv#v۷ 9G}\zY3;c&B!ĵ@Sƌy_g0aF3ii08?q,Y3t %33Kt:5kN:ܹ#;wfi4oތ'Nr:thG׮%89U\pp8x v`in( )L>ooKݻ᱘ jٶmYYYs0z4 fIϞ݉ȟnFU{1aX|}}xxyyqIҵkW#7nB {IV-e߾}h4ƌ/gokVҡNS8[!7DE0_R4viu벶sDɃ&$BT&U-yZ(ݺny,[KQUP30Ͷfm=55^z\K.X/+/ ՔUBJ5po<6+hh4(b[PF8-M)0`J+v!n$VKpp@.`*YUem.M-"rq*l2ii:+ҒӸ< 0TSk'd)VtVQ-WL!jba] !(B*m]!ro@S!B!D@SQۦ UmBTuh !G7!U#uSBI)<\,50ڿ8+dz!DAx:H&B!FS!B!D@S!B!D@S!B!D@S!B!Dȣj=wQUU-nn]vL+qM/C!-miM(JeA*AMqK R!`T $7jz^Mwgfj[nB!}bTbK _N/Ieq˲C~m%)l6jY6^U\eݱf&漇Z^B[G4vh ؖ "ҊگۯLPCH)nFhJ@d2a20*k]RZȢr~u>д\k)B!nI(VEQCR M~UIE`ҶWup&ZvS܌$7 &lE`@UTtIͻlvߚtmAB^B['nv.5.bkrZ{`}*&Fwr8jم(/ 4E8\]]jY4!BkId"==\j%՝̣)oTfY:$B!DjqwwCבl WQ>hj+?ȴ bggJ.B!D9;;l ##U-lMMQ-9fqvv`0TrɄB!`,ʶlKMQ (5B!e,mT 6E&V 5ZI%B!8`2%ՍZfL&4 : #BOӢh0Lj QH)-Y%77W !b4:kVHMQmϗ fzr &BQz=f7HYQH)UUQUMLh,B(y#@STSj`$B!MEQT5L !#]e@awgz{֝ 4i҄cA@6m U'xCӯ_.B!rSr"ՐMQUDSm[dzټ:fx (ayd6Y~̝Y+BGˊNj4-Օ 4hȘ1rH۷Ē !79D$ə*`˫˯+PXP o0j#h/ QY$NS/^g̙׳}t` Nw?/gȐ\|qEzΝf9z8z#cpuug=,Y<==ӧs'&."[˴i/Ѻu+y=zљA0hr BgXu$cr,b +-j¨I&2̄|_-j;1  t>!DYIYQUl$6mzp gHhh'~!V^…?oѼy3ZjW_}NV-leմisoz`8vUF!$ '$f_UctP Չ|Ou(&MgE&5Zȟ?޶m;;w ''OOON}ͲXt9C;˗Yx dz*>cUEUMV.>|P+j6>,}QסBh[^ZZG3 IDATgd.O!,( 4]6s=l/˗sڵ斗7gϞ#&u T!3yRo= צС=>:omּs2.]'ca|ɓ'yŗxtاS!N\FcyZQ=9;{)<;ED\65+B*]YSJYOlúݺn]X|8yd2*~YU5c6%55ڵkrtWr̢Z(qt^aY4UU1UTUTwB^B[KPP̴<(vhZץDXj3C\\,n t,Eex{w -<8_U+:Fhl]_eEܸ5 xVsenuv۱KSH+\ A !Yh1]!uZUlc7-c+͠.F5kJ=33UVn(՚BkMhh7BCmŊ_ cMҕ\9$&&ʗzMyشism;v총cte;w_MeEq=y-tT3+ykc'T,frk2咐pklfffvzή" QmI)Wa߾vcл+(hѢãi2`vcױE>s !n<5o0 "˼Z>nC$gK?N޽$11u68 ɚ5HLLۛ~TXd0 !DW)#.Ui޼͛ZBy5hZUEVȀXv=W\a ֮]GRR -Du#Z~#??"##tn}O>9F…?j._Lݺs}]h46m+N۶mhٲK.gxt$  }ʻ&22F6m*ڽ˗/3ol۶jg!o`ƌKnKyP.rrr jȃ>@=:-"*,~~q<أil=Co߁'O,WE2vȑOʽ$11O>M6onz֭[ϲeK[.G/ȑ0FgZnͤIW.<0ӧ0gG2݇7'N^sFG,[V>cǎ3W9jՒɓ'G1Sd:y$KLPPC]t^}n9zSliJojjԨ]w %77bѢPV-[^^z1v8֭@HHSz'y7رcg믿39gg#ĴiF~lڴEQ]|!qq}MzWso$KhhgnՕSN1qdKַѨQ#6mĉILLr8#))58>3gu(ĉL0;vR~=cNƏĩS駥lݺ@變}.ŊhWշ8;;ӿ_[3Zksف,AVR)a""NԐiӦjٺu>z"##Yny>Ã/cyyHhkz vbbb>|$.\ 228qcG;x"88??_xU&OB5xuKsLfxdze;kٶmK-l/`h۶-&S.=wa}FmשYyk5/_Lhܪ'G^,X%Z3buر;RRQY,S>csrr`[ d~BXo*Fc?NZ \]]IKK#==}{rL*4mLn])6?gggիk65bccmALNN_o:uZQQg1M^N5 yԩS%h޼CZ͚sZ͝;wsϔZc|!,%K~.P^Ǒ~\DLK>A}޽-;۲e ZKӻMYv}.Aɋ36L.|6!ğ (tj`ZwvvfȐT&!nf *&z^ONN.]&00ж-!!ww˄cɒYz-&,,={dOB۠0oާUVMΜ9P(8|pH*1hK/ҥK([nرclذuֳg>MZd~QQQ; n?t-Ŗ/Yխ]-{#&e b;'&&?1ڶmayq hVTQ&NJ*}RPP ho[OYA%X-4ZP44cI͊6EQl.Џu]vok>ٳx'СösY'VVZ0g\.] ÇYt_uac5!!M_U&߿KIWWW6l@vmi4wpJb}_3vהɊp^z~;^|ymn{XSu60.ƍEq jǙLm& lڵ]9Ftt F?ˑ#a;^O? 1Ʒ.ܹBɟ.$Re+˗8S~ȕԼ弛6eK۴i͚5+"BM.Q^M&ExVH,WHfxEں" q}Iٳg߿5哝G RL?ǏG0t0\]]HII 00{s1|Fg8M@ BБ&"R,t Ux@r,@A;HK(NHHO&N s]2;; νOС=IIܸqׯOJi׮ 7oe`[ѣǸ|2- 0WPw˯2xر9srI\\\쵸i_B5jȐl۶71|(4:tP yBOmWױĽޣRU(Xy*ӽGP,S^@;ꨦi:t_’%pe,Xbh4dɲ_?5B9s:Ãʕ+>}}Jݻ߿<֭g=4n܈J*0aG :^dž INNfg䓉*[aʴi?ݸr*M2do~~ex՗#:uΝa𡸹lٟ LcՓ͛a2ؼy [_3=*V;9w:ud֬鸹( _|1l+Xʗ/k3=z,ω0|󸸸)_<کSGzxGGG ҥԨO?}O&9|vNL6Zj5ϪZ LMpyΟ?OfM:MKBƒE$5VSQUEӣ^'2Β!",|-dPuzj0 QkOc9:5ú?iϧ=N[eYg}鰴fkLlҬV+fʕ+\ QR%Zjhd͚uԫWjz p%9J]gAU?QF jԨΕ+Wٴi+O<8۷ˋڵkiV.]N*U[nbtoooΜ9ܹܹ U}dz| |/^bʹhтJ*rQΟ?O^ۦC_kxI9Fǎܹ+Wзof/b%eV $5~O 6dSl7~7 hՊYЬf NhI[x gnt,U2Yޕ{AͼvzU5!N+"3NGppP= Xr,Ze2<+qqqY[nR\Y6gJJ ΘLlˍ(fk:BBB<`&..}?U:!(b*9Q3"-쿐©XM >OQTPSCiԐ*!hBpY'HڒӰaRRlӃ;\zoWEQ ;L5ci//OzZFqPu&22SNӭ[r!ʕ+ wbJ5)X:7~ҥK'<9^[+BM`iq PɵaӤ۠.s_qH5EQ ʟdFU RJlܸEQh޼9 gt:5kBDDD1Ty;w"<<j֬m`6m,oDN!DQ)(2if, MiV&AS!3EQPUEQPNEӡQEj8ENxĖtYMJs~^Ӵl.eU4{-Y[V{~ ih4*z Bo6INNh4)p:>>Պ2ZUUǴզBo˺[Y*|Q$hGI&hf 44k֥.Z3T-{Zx5-F!MEASqrrl6l1@AÚ`ݐ!\jQ%sxL[ois6TEܹ gjѢы|m_k~m&M'4=< S!,io5R)( *R<&N;;;QZ5 B@@e6n̬Ys3gfIر+Vqe[6if̐!EqѢE3ƌy8̙ˋ/qqqsGyիgwG1a{:͛76l9 ?2;o~|7[Fvm1Lws ȑ(S4Ǐ`ڴO& ЏHwhO);wnёg#mڄ/a?֭ۘ:u:ΝǛ^z2t`TUW\|ի2y״lk׮Kp`gȳ>kb|juҳc,[=h><y]'__BJJ ;voodY?~rFfM9w<_} aa ڵkM IDATѣpl5seɒeܾ}* >vڰj>#xkb֬9y;{ )aJd MP;[dy?R,(ٟpQ'#M8Q.DI>BdPptt7oxRO<я}0y|d~q <Ê+s<֨Q/| oxܺu+W3zK ,|FϱdqIȥKs?ԯ_߾d22»_lYUTT'~B@@u)qoE]7o6cƼ?Ogʔiv_<(֮ GGGn߾ȑc0:G>Ξ=K/b`=8:thǜ93y1,\;_=YӰa6mڵѤI:VZ2sՓoXObj4nM4ĉ.={/<Ɣ)?g6**;o5݋VZ:lܸ sgظq3s.t)S1v,[;5k`ܸwINNN-w#Gۛ39t(W_}þO?ٿ1kt:uqk:uԩ?0}&O*XbpEK||Zћv1WQ,K 1"HMӈIp%$EsBJMR)D111L>Sz{:֮]{ѣ;&}wmڴѣG1j0LGM$(*|2;L)}]lݺ>}z߼y+AAUXBiz_O&**m[Sn CiٲeeL?W!oo`-&쳏s̏3fSxT֭[L3Gooo|||`?puuaďt|t֓;wӺu+fΜE.0|PV(2r0Aُf Ճ۷ Ull,z\]sj%>>^;WY_GjAl6g+Nj/LPPUƏ?>y7\g*U0j֭ cذcs/$Ǝ}Up ׯP|y>={'LOOsI*UҥKguR%hd~1ZLL޵_9nS?꾕ϙ3giwx(f=w^l2#oR?~"Ӻx{_ӈ=z_g&W\j-i~~!>DŻnw%̈́H6q׽JHæX"n(sFW8To7yeF6OUMJy$ $h^ :t`k>?l7QL|mv1@8::b6ۦ'87oJ8d7KM``^zFGfŊU|>ʕ+ @+oQsss 曯sU.\&ё^xg=xo,]HH0o~ڴ E4.jՂhԨ!ՃuުV+q&oj˛,ϯ Z\pڵf[_Ν/s Q֜%luC`C*l9wUQ] 70s,̸6yY\b4!. lꁯ!{AL@6ug86OE5#?J}W:L)_<U9r8cժ5y~ߡC{v؅Yټy ͚54 zoT)/vY̥-OOs|.,22Ҿ.m4jڵ$''q{8jj#=FEEq%{sHHu ˴ߡC Lt7Vބ2e$%%( ^^^[lݺ?̾KaZrjuuvcww} 'gѢYju˛щ'4s{\Pz0W^\_*Upvvv֭[ω'BǶ 2 m gR9s4(WQ Go[ucYK=s YTtdxk4s[c|B$h ww97ktq~})@֭HNNС:Nǎr6!!g¶m3Zqp(U`kyINöm;; /NHti_sy<ǏC[WU :5k/9} 7nK߾}J3;w>צ1n0xp-yA˾m Yx)7nȑ|HN}cÆ)tv=4F?t5z;w˻s.fΜϏ]&Eoܸq?ǎE~qo`ݺ>}sC7w?xxcRRCfm@0! ˽̈́h:*Stݑ&6(w4 M0,ԃnu\ {:hfh $} MgC/!!m#9v,[ws.$&&rY*W*Ud칌9 ,ouvvYf̜ ԨEnnZlΌ&(*ѬZ$BCƾvî]{[ky啗AEfԭ[aFѠA}>d&| /RJۏ٢E3r?<+=ztgQm^{&Nիװd"1}[FzGZnkbOآE3S~yӦۻfذ!>S=z{M u]ʔ)3R_t܉lY?_A!;hnߎ>ÈY_/<ɐ!C88~m36m:?ieF):{u:{yp,(/0SGZiJ:нgnTULa:'[Q <3S3|e]e}'O88ꩦYZf(W/s7qXW.]:c=HIIa„O8q}!5kKO;wF Ҹq#&Od|Ԩի'ݺ,9y$ƽqwՐ͘1W{;v,3le6ghdٲel۶8;;SFu틿94ԩIJJfȐgi۶MrfLll+϶(>Ǐ`ذQ|ׅ,Ii}1OcXlS{l\̱LUς'?OERK^Gӡ(eNM<`>Ҭ>ꬢhj)hba W2(>>|˞\v ^y^K5eY˰L<i9˺"&AS<+h[3ǏOG̸]Ơ/EKc,miXzjF\\M!(aOSa6Jq)mяo?j2K4h}^Y- qe#*Ll<ȝ|E5hJM! ?~ٳҲeL!S!ă+r8ؿhVid.?D{hM&o2U@7ZA8~XV^_$999mYrk׮+ @>B<@Ǐ?Nf ZBQDƦϏ d;dJa\˚,f۽'#/4`|i-i4аT蚷qDÊi\6h_Ldm֬YG׮qvv|rr2k֬Ν;.a%ASH6y Ӛ !x>Ac^Lgycvw2q2^_}sl>44Ьxc*6YЈMC;vɵkkGprͤd֬YKLL JsNEVf!TtV!sOx&*}n`2BV-r| 111ܹ\]h޼)>>s&""''G5kf%eϞu+wwժxMөSG֮]G*Uظq3M4ӓcQlܸʈHLLjgϞ'b6[XpN&8{`ĈűnljlٟTL^=~:˗~ z|G͵jaEfz=)))\pvl~ٳjՂݻ׮]gٲ<]D zAΝXz-wS;Ncذ!LF.X];BղRmÔevyn8%OpP rZCjS]<ݪ wogaގD9waT[/T<&D)z]h4f: *4Md21`@6Mƍi޼6maӦt֬Y˙3g (ܼy???[lqmAPPUWN ' m ۑA =ʞ={xhM\vZs56lL~} Ւ%KQ3|KRb*Wҥ16aX,>OOL7$Jҥڅ{9~5B8q8y,Ca))XT>>>8::p-.\@z:^=h۶ VӧϰeV{-c=jMmYyde61o@TUEq1ի'k֬c݄8,Kjlu6n#tD46lD``ldn߸ѤIct:ȆY>C׳{7nč78zXi\/ǖ-[\NNNONNɉٯWZ-oRRRh2f.\WH=o1SRRXB*9Q3"-쿐©XM(hEQAM RC^sI eS{h6 IDAT"AS<|Xb`6bB!.];zN!f[lݐ!詨jZس[A3]gS}Ҏ`kn`0n_{t:fo fY2,q2nƼyEmyキt8ccN'00#NGtttu.̟?':1O>7`6رo&hƯc?&((#ҪU_\!(!go!S7,\) JFm8k/%˂i ^zB9Ҥ8BM!bZ-8::uv~z =(F@^=޽+7n1zNAtt4 >^뙟m._/""nn4mڔ /ѩSq/E ))~SܹSׇʕ+mWLW`˯ n:t73`4ʔ)v~zO?_|5k0cTxט;w>ÇGj՚LAsԮ]+ǐ 0h3.nzТEsJʶ;ݻ-.\'ȑ2eC@@elʫ_Ӽy{VB.rI"cH2P݇F*/JKBVIu-H*iQ~f_"&BLL,9@rjJ9y)(>4î]{ѣ;&}wܹsKwa0Xt9|+|||ۇ{6lȧN$))if'EW\O?sύLJN_-f֭Cs}]-zZ냢Շ~_͛`4>εF3~Mhh+ի @O2j|)]ڗҥ}iӦ5GF=3gǏ $:&7KCv̚5cҤINNEAAUWwf8pȑHJJb޼|D{Sۀg9z4EHbb%rpnq`̧Tt vŲ1"UQ쵕E'-`ji9NI[kF^3ҹ ϵ(2!Fxm߾wfZ7axj׮@Ŋx٧sd21b0*Uaٿ?֭gyn3`@֮]c<+a9<mۆN:iQ^]<==ؾ}'=zt`4kWWW4͚cV+ZdѢńS~= qM-x՗[eVcoiԨa[\|mn_drJԭ[UVRmv`4呻fLF{>9fϞA@@e*Tiҥ}9~_ 99W_}!}\kRsND^v'o_bnL8dg(bR)&eMCC}+*㈷}SNhk7n؃f(Jvmٲe+=zt'&&ü[yTRԫW-[Q~=O׮]ܯ(oΕ+WYpqfuz|~c_fժt77|@hh+ZjI>Yr/|믿i^/oBYsjOdѾՋ Rt6*[BUTzl̈́h:3:3ݿ -No S1bF6א=0T| 4ta`Swc$P^3ӫTїKܡ^AʉjE2Z,oӬYw}v,]˗/~RټiDBB">#:i\]m#GFF|}+[Νfܹ&mccc1{mwObsYrev:5j8p05Bö .)!ͤtGp~v=>3q ͍wp"ɓ'9y$ᇙ=W֮>` !!L&Z5ɓС0ǤI_ܷ򺺺ұc+РA\S|̙ٗ3nߌ1ٻ︪seoAPD;w)ʕlpVV,JZG B\.{~\2DA9,ׯo9Qnzbc+8)|N]l …U.Ø̓޴&|W<ܺK\0NSt8VHNWih1wҷ5_ޯ#crE3@Xw0' N!DҢ)D%3B~VEϞ=]wp֬YJ~}1XG.^1lr.2i҄rǮܹK|O@@/d;vbǎ]3eDg0:uE3s?uV[<$֭ˌOsAl&^.?E%@UˑDS*$c4eŸ8ӡC?k۶?yI8::0m !*OcÂ`Ud0gOL[c|F2_OvQpj.[54 b6.]fkf3h4k5kU 2 VZڵ*#\!niҢ)-$^yeLzmOp 0AgӒA5b3d &>#ٹ9l=Ufw\S\ޖ'.p7LKY3ޕmE8s)5HJHD: /1s` "b)))EqDSJXXu(OO/,I !<%zUǒ`]z>z^X4"ei]cVfF)eVT g43i5]ۣG5\v=}ΒlfgXKjj*JmBIY!BjiݎM6NUYtϋߢW:E7^dd ͶQLcvE{#8[_ZZK^y.]""b=99IfTۙ$B!լU`=:UefYIє渽6~!UuU$J19dM2],%uppo޸s%֬YڵHMMݝ޽%$B!լO$ghD:Ue٢'?;D h_hYށU h=*6ޞ޽{FJJ )))xxxзoqB$B!fD} E,m 3ixa `o]VtP@eLTв剧g ih !B&tB{-Rh:ŒҜI@EIJ × TiUϒd*$үlRQIRQh_r 3`Ғ)D)$B6.\@tC!JhcoeVtW{~/2fє˗W1J<Ά#fb%AʫA%.Cc_pmOUJ?;g$D7K@3|~233=שS"%%GGׯOPUȒ%obهNҼy &wBǎШQE!Jչn3w#|)ƭxk?{Pk<8q<ﱎtݤZbđ%kXLMEQx}ʵBUڟƆ z;TvV\bT[$g28wc0m!ǎsm%##={I.%}$-- ///{Qٳg/#F  77O?'`2_֝;wGǎhժM[Ύ6mZӺu+neO?ceӦdҡC{6gjBiҕc>ew` he^w_S7*н-Gw/UEA/֝D!~טlڟkOmQtzz5smTh||$:;S$ьn:Z_;pNNiӚzꑐ-[1b +2rF.]:q"#7;vťxvK. 3={rj Z{zz;vͅ pttUԳ?tE/۷G`a޸ w%,;سg/6l&Wb2HOOG"!!e˖ӠA}شi fcǐO?-ёFb69v,AڕŋyŝUL!Msf#e$)\: pqvr|j em~& UǬi[w⍗U$D6D%lPuz90; I)n{uٸq F[[[L&qq' jM45 W\p 6⊏:['Np]wƶmoņ Jxx/숌$22N:ZemQNV%{{{x`$YYYsRJoٲ[ wwwѣ;[[[lmmiӦ5ǎŔ@:88Э۝]lox>!^6vLAf \ts+̟ 2^(ln݊ÇIIIýD,GGr%&^$/D˖-!8>11o11h WW4MCi6ټy+>>>4iҘxd2u6N䄋5-mgggtLf & [9YOHHbKBTށ̺Nv*sg 6ιMUnz6̆@jۜGPT=M]xJ) "@HH 5ر4.r>++ "oNnnn;g;ĪUkԩǏQ~Gg.77!(hۓm@ӴrfgՕs?cYt:fi 8|8M w{UGCFדӖawyBriooNG\kvKPP\t k1B!Jx+mYѺ((@(*bFSMh 43Ғ(&~ nJ E q#I)P^v$''S^󎎎]0:55GG'ܹpyN4hPI|\]]>}Hٜ+WP24Dzz>>a6֭QL&F;zF .? IDATr)korէhذ!6mWhƍ i&ؐi&|{2jHN<źu1b|-e];Zdb%O5f( EQAO"5M'.:mhkG BjI+DM!կ_NPP=t Dױ͛7#)ɲLF߾}eNN dחgٷ/DX@Qڶm_m''-j"++ݻ닽`0^#*͚5…$bbbےg߾`kkݻˣK899M&ٱc;w[={ŋΎ֭[oi!vsss玬^^On]ٿ|fزe ,F\%>pѣG~ڷo ͚5Cݻm[WBQPM{۠(F*Ĉb]jxBX|aY_S\vƨ?yOvcjc lm>z4&d27KOL^^TޥK_ʊ2`@?<=HMM~_(1lKHiܸx||<{HOO͍v+pIRRRqpp 8:[nSs`L&;v*eY M:Kv޽׺e4MciW}&<ҩSǿ_!x\]]tBaɄ,M..΅=U-H,VFysk'%^>+=qtS)5\l[+M?:OcZ)NJoZ;IMqKD:-]Cc ӶmK$oq ?D`U !B!Th !B!Th !B!Th !B!Th !B!Th !B!Th !B!Th !B!Th !B!Th !B!Th !SOM;:?21 2/#\{_J={;D]opd;|8gгgBC{1vlg2fγϾP:Bqc;!oL>Ĺ^o-&LxN}nݺqʬoԨ?QuaϞeoԨo5[k֬e0<U%(KN4hbXfy[[[BCҴiJoСCJ[r:*iA``Rc0y .hj߲| W/G}=¬e2223clJnn-[` /5L ?,-tB.{Np,D|4((˖u/؆R򴫃Jmw=|mihGoJ}BDSr?IH~}8r ,8jbĒ Ϝg>|''G:thȑT8N>…> m۶桇F '|/;yy&Zj1\VMp}#XKkZd/>xWWW/'O?-ǧ\e7qt_cԧy{-Y=&M׷ԩϐ[n#77>}zL&}wK4IkWٕ+WqwPΝxx챱t֕'N;#%%ӟqE<==iL4{''',XģgٲQãDGҠDֆ-},[3~ر^xٳvƓ[o3Kq|%9pOiӦH)nKNQR͡'mBhxQԩVk |%T Gוu,feL2#m*~BɀDfz_Z̞&=…ɱIMM_͝~Wy5))),y믿l$11m^'##~M3_n݆ٳz>((IA`Jh43Ө_?56m 5_]fٲg̗O˖-xYDEȑz? ^ԩ#^^]Zfժwvl6ӯ__RRRϿHKK?d%ϟ޽{裏\=Ø1i~i9iiiƱf8hٲy6DD-5ƴ4ܮ[lvv6K|;=C ˘}=-ڷƍ1k<4toMG3y4x1g5#ĭh~OӏGpO1yՇX9-f?D98tC-i.s*]Sq7W0o[Z i?Οn/oR]777&O3fh-&O~Z橧&3e4 o׮]=ӦMAQ4M&w>ڶm^oøq(*ff„x:t&MZwjj*SLe=(m2ڵX}}}Z-AA(4nܘr9|8vr||< ZƑGUU˪Uk5j$ɗعs}aȐE̙Rsuu%:U_Gq'N`0ЦM"[jŲe`6>'u\], ;vG?wMFcV]UȣOmz^aa`3b!)3̧8Ki'9rG=;mdOr F"Oei7U&>Čn8I;7$׺uK|pT|yל5x;1F腍m3 /pcJ*w}X%IyN76w,߱^*ܨ_ӆHEQT32o[uٲjw@  :(cG Gbjۻ&5qtt̙x͂ѣNJLMM%!!zN8xsΑN@@E6;#,222kܹPBsNI&N|͛3(VaeoZf>A}+nIfb%z. '):|o|ݿgs|$i&Je\~{+ƺ=Yq !DS ݻ̙1qqqDE`]ծO$%]䣏>!&&#G3 7<YY|Gŝ#̞?֭K۶[t:=~1:t9s>~ 7nXffgT8ĉO[3f<ϟ>.y2^^^|cw33giٲEc{RЪzSa&|p !ÇôiSJqi7oZd<|{4n܈^C=JT?̛78:wW_CQzk6GWd!"77'|ѣO2zj|Ukׂx5jsϽcM ))/Hk^'//Ϻ!Kq 'R).{01$xx(k@3M8Яygl܉ M3+eVbBTvԧ\es`)8__+/јҺWJDrff3yyydddSzxppg%νL|}k1a@M=8~<//O&M{}ѣ2^&>> ChVZ2vKsѯ_"/oҦMk~زi|g 7nȲeWdygifYj Kl&<ҩSǿOr\9s>fƈ*s |!4M{#8CcL~yk͞J\S,g鈙 mڭRb:}:WWz=:EQ=bKvΖ1TT~Mby2Hm\.\li͌[p%POB|w+9w.gg'z=^N#$$%JbZm y J9V|,M {W"!!!E}ռ"sozNڼ򋥎 -_JM>ᤧKĊ8t0+VݻVw8B[ЁXku},9Yd |o|ie{Ғjö́6v*dVJXc'6EgsS'BB\Ǝ}x7[!-‚`UX|XZ2Cb.kY]j7hʹ x9 F95u_f- PfUYv]e+-MZ4_u(oV%u !ngӒA5b3d &>#ٹ9l=Ufw\S\ޖ'5Xf`ku EÌi{ 1HJHD: /1;` "b)))xz֨UI)ĉO䯟)!ĭPX2lt:Z瑿ZPܿW0=S|]$""֒=+-f!nUuV!\$.69޺SU"(:ɘNͰ٢hB 2U퍠/kR_ZZKϧru.]""b=99IfTۙ$B!լU`=:UefYIє渽6~!UuU$R@rɚdY>_K2@߾qwwҥKYkב;{K)DI4B!Ys =,k&ghtʢ/0EO~wV$`Ѿ.e6M> &X%u{Tl={͍RRRoߒ6I)BQEϯ3i)Y&g./Tu07wŦWZbThkd"&lzyyYCZ2($B!7 ^ z/N|d4g.{tReB!Ukճ$9*>nbcT%T׳ܧ pd Q I4 9{\u!M8[fU-]:%է՞ߋ,`4t O`a鈙+oIjPː((X=\wۓ@Ձώ>7 q;DSܶF# .FJ_WrRdzjr+{UJ]|bcc9wNM!čӹn3w:Ҳ9n;Ԛ=a߿̳k?㙵s+Ԛ=ŬTp,:nR-hX9)X[TEe ڟV*WOcCEEAePk'n%F:BuVԬY(H4[h^IQU49>vp$&bsƆ Q:;2_ t:iI)n{M4Ύڵqqq%55Hi29y4C [[[7nĉ'KKbPP j.GM?bqԡv4k֔ǟ-t}KTUΞMgM4kvmK ^˖-8r(Ix3p`4M`0`ggKFFF^ Ņ=7;v]* 'z}gYQ./ݨQݻq1BBBP ܊|˭igglذ???BC^$d͵H]סl.}B\ށ̺Nv*sg 6ιMUnz6̆@j~[Eoӡz›XwTUSDMq۳<\iɁјlzźѣLj`ƥH]YYYEpss%++˺xyLYY}''":;;l&22ӧqttњ()"#==___4M#0n)O퍭-Ν'&&lm,pҥ"  }k-ѰaC-ZLǎTUeAlذ=8:>8wZlɊ/={Efj-1c{nl޼hѢ9Z!U!neA5mm\(j#u a zhf)~MArYBCM!ʡcǎv~q...4oޜcǎJh]DF!==777ڵk?Ҏƍ| :u@pp}BCߗgի:Κh6hʕ04n܈ KQFr]wϢE>aCqtt ={ &ӽ{(3f<åK3c Lrr2=N.?K233=LtZ^xq㞠};7o.YYY|ѧL8 Bu6z!33ٳǔ)XkTsegglϜ8qY^d21qj֬{c=}6gy^io |w N!');JRV*ٹ9r_M;+:ê Dϵ$J߁+? 4Y&R<4epkG]!DDSrZ"""?~,ue߾zڷo˂_#իGD^} :v񏒚ƢEߐc-|3_m֌i|R23eRSS9UZn믿Jvv/w?`yTu6n݆RթS˗F̚5qsrrGY,[3̜{GqQ6.˖o5|ww ۷䮻`cc?k-/ӿ`KvwZwrr2;[塪:MBPCNٻ{g&ɤ7 znE,`ž]˪ꮢbG]A(Ҁ$L&ɤ !E~k;{̨9?h4`6;~(={(((H&6!DcU͋h$d4X&&(}[qEK@U8F1AsYV5s8nd$hsƍظqSBCPQaa9DDt'77#}}.===ӏG{DcU/zj\ʘfxoʬ!$$;EQ4;#Gy """.=Fh0=܋F\z2499$&MsQ>zhfJJ*$@PPݻ^]tܙ Lk4hVΝy)))ᦛik֬c߾D`ZzBCC=ܲeRߏij|3*+FhbJ+㕜4 y2;!nz9D\+2R7UV%sG. $hsޠAkw~;FEEq)ӧO,+VFz;u'RPy޽c\իnn5_҉v)%hi !G8yyyѣGk\<<<햞T*DFÇp WfG4||[e^YrVU{s; 6EEEEۗk9e˖c'NpPQQӫIKyy9;w$;8_~PosÆzB=\$!w /5.dhk[v &}xɹN%""TVV88<<όL,rqTTrrr S`:u lر,ƎӬY3),,䩧%5u?[kǁ+9IIl߾+}4(Ѻm6g$%%lr~]&L8|"222ٰa#f!DSb-_CfQ} vҐSϔ'97bw;Vɏ.Tٸi/7}M=|_4 4U< B)ipw⋧3lܸÇt\+ $55G~;FFF~̠)Izz: {.b9q"y###}Ï\z9/` ~ߞǡC8pg. |N erx7x+//neKysp]ˋ~A;88"n~1w[o̸8=(=yꫯ9|g}L#[[Q8ʮ_pĜt2?_|6M*;u&@mL13WkߋaΒ]-N!DCZz\ԧbs`׽9;; uu?`Nvsi۩ͮ_l_׿>Mhh}iMXx +W:7/o┘[oCNNsQoiСt;y׹ٌ'%%?Çϟ|nM4=ʂ IJJF П믿4MnS4Kkl6(**&\֤ߟigGugΰkXidY4+eX,FX,-+WDsФGS(,,n%Kc/4ų //OZx\Yb^28B((( ((,DG%ASjԨ9e_K/"u4W>`ೄ[A10'\˾\1P }͎H (2+[uL0FiLWlcmB#X* {;<<<⋘1b2ڵ^xyiRUUźu?Ĕ)ׯ/)l޼2BC?___Yf3d`=ߊln%MQA5pSlSPTbչ#!%49jppõ(J:O8AAA!QQMf`\wݵ 7`۶([9Oe݄jEtL׮]}q/\ttٴFs IDATi3+V⪫`o o$?[JNsl5<Ưn_2{?3YJ u<&F "* lڡ_ nt㋫fD6iXO6W(ΐ *vO.=;(ηYU.]Ě\T; *#.1*DG"ASf8q"f͖VQQAJJ*K~~~Dӵk7\TTiO>"> °aCyy/wp=nݺ`g;^zQPPW ???o]Z+qwwwyQFmv0rp"##Yf-:9&8p _|?1a>ѯ__L&fnݺqxFƚ?vfĈst!D0+v?9A7zNd@(]V3fbbo?=J͝`Dλ2Q`zE2b0rA?/DEV qI#lݺ 89p ܲW2331 C\@3ظ>t!W]u%nn&KRR v=z0lPF#s.RS #F wy6mĉ'%??? RoDD^/@QQ1k֬g(&NlF4رc!J``$%`Vօ!CZ>⋧ӹs5L2+Wɺu?1lHNN!!aW\1 OOO֬YǪUk1"4͎jnh460v;z( '++TVVry!8z6w}[[po ij׏%gVQu& `Įi[㝸fL>VWl_rXb0Ćm?R"Y'AS~=3gǺu눈莧'[JyyW\1 ʚ5kqww'6vLL8L&~i=۶mgԨ߿ f̸7776lب?Yv={F1uj|=yD{ŢaÆ`2N7®] xyyr\'R^^Έ# R[eazB ɝG_"1'4B9ں=ɇ?|Faz2 TԕFvM8ΔGtgwD ,bQn]=ytz`e+қ)&ASbcNn]񥰰q饗;fbcԫ#-2U0jH`0x = lv(t֕Ν;VGU=#1adf&==U@>>1bpK$;8!!!Э[7bȐ$%%-[7S!j3ʗ!V} )v4Ն@:#(0feX !ΌM!R\\/qQXXgóv҅ha2=)..҇Z<<))q %ztYW슊 škժ*zcv2QM6UQQ3(,,S`L&>>>ܹL/Dii3g^Šزe cǎoX6mLxx7fO֭(fIm>| $-eeivv)cƌwط/QћiZ7S!ݝlȬqG mY4:?VHME !SCCCU@W煺3,LLwH֭7n,ܹ޽c4eTVVb2ɮ] ˋ{Q^^ѣ3tww7vJПs6CVV6ǎezk2(+s.]B8x0޽cfQVVNnn>OmQQQ$$$ ɝ;vҵk7ZwMÇnOddd\0իױ}ؖq/̜y)0~|gDGGӧyWZDFF?I5jUUU,Z :u fKvh_z%l ?777bbb81k3JoB4"!&HEQQF坴LM[sᲡ;SlާW<|66ֽ߿`f;W$څ:v*JJJ m t <]֙uVw DQXv999̜y)>>>ۗHRR2tbiv"%e?2f(֮Q_G3//MPPP@hhhPZUuv:fee}v.h:JJJ5 oo/RRc22e2f۷@UUIJJ7lEǝCx ZBȑ`41 a@~||k=Uu=ǹ-4k|6㬧c̬x{{a4dh 11*lkZǩOk`_ƴbx4Ep6f{Rm۶c0YUw|w """ܥV=1ؾ}iv4MnS4K$h !wTSבH8W iƲenSPP@FF&:\EQ8ۗHEE?VPP@QQ͵6<}(BMѶM!ڐ( ǎ;ٸq3nCxxiHLLdTVVa1=4h>>6oނh "|9B!B4hs\tfÀ;֤ g`!B!NA !B!hQ4B!B( B!B!ZM!B!-JB!B%AS!B!D)B!E:B3rD~[7A!B34EWXXM8c5븦i.۶5@nv~ݮa(++kr|Bi %%%vTՀ*(㦪**~XC۵=.8$hϷpƚ4wfw) fC Btx j(ѹn@l,l A oB!B!ZM!B!-JB!B%AS!B!D)B!EIB!BѢ$h !B!hQ4B!B( B!B!ZM!B!-Jw߃<|||[y:, Eח#sy''ˀθ(>"vfμ^y埄uq׵k׳4!BsM!β9snkfsOZ+.ghdgg`B,}3në[ vut=zDУGD[7C!KDpp =zD/O=,9pXYYEQQ1cƌ&:'fofMOYh yyy7aI0}<L~~>E/ǟ|7?x-2'N[̘1(--|>wܒ{]Y++.>A oHd[7WlJGTQ9yOMߢFaĬJ,o3y28½Oq$h q^~|}}y啗5xc.wGǍ7W\0C&/dqtƯn_'g䓐G} <=̚uwϗ{yי=* ѣY1a„Nfժ5ZcΞr.SIVV|&#((@ :s^q<槟Vhy晿/D^^^xzŋó>fΜ[2_ ]vygӟ!5u?{ǜ{$87Ymw">I9 k_wpmixs+PEl9΀9sNqP 1Jbfnzs/!$h qƲs;v>s=v̟nIEK2tf 4~a4v{4PUixLϴiivt__Ӳoi5jsg=ba82qqq|bvNGɀ@ZZs~J~e?NNN!11I4ѣ4'1s,yԼ'-#|& ʊy#:ZJi?|1͎h{K`0a3x{{SBf̸#GmX̘1뮻I1"&O([/OD2˦Fr(Muxxx{wݻ ۽;^zϢ_jzfUXV:Ͻ{a|ዊ?iT/ӻw 6l$4^} tB1 :dv۹f m.9#97WlrQWVul."%zVBٹy{`o{&ѳ.DQTP$hh2v@<=HO ;;[ߗ^^i6sDymNjj*L~!?s/˜n5 V/dFnn.!! DNbۚ{$//NQYiq Jlfjp|ni^S`KFFId.7D>fͤzl+_<ȑ#aF""jzIMMѣn3f\Ļ~ƍpV^s&7sL֬Yҥsoanv7? 2i ̞}-ǎe5ZC=Wr۸/Ǐp㍷K{vY$<s2g-X⏤5N})k=vݛsPgX~ 6[{DqWui۩ͮ7//?{a4=z]wKg}ʕbqtĦM[MǟpC~|}$zrrr;MΞ}-s\O|~MYj5yqe31n<{X~`+/L9T#_4"m:r(>F #bEގ1f՚Yg.oru454͎f1njPCo(կ˃ܶ'LVq0z__@`k^uZz\Fڧ5vcZlb C8[A8d7 ;AMr];ic!i%?痠鐙yn[o1cFSVVƂif||ۺB&! qso_&3퓇)(QW{ѓ٦Aye1 fcZIJJ҃fNR<*V\EގYsrrYvyyyt___L&^~ڵL<wwwRRRٴi3ee <Ǐa%:gkL!hYpϑ8&Zs"Bʧ޷YO0{)L'QjT# v]Bӛ6.❕(F7 y1$ (ͺ>Sqz$hsVUU?XV.nEq(_{D׮]),,_6STTGl6 0aݺu|Fo] _.blvVl6.~q啗yW7pd͚uZ3.g\zńe˯\ӴuͬY3fɒo[]BB7#Oxg۷u O`0q~)NQdr*DUA35y29x׌ !p*m|KkP &T03GDŽ8$h q֯^w^o>Brr*?+Œ%qW|M8z(]6J+?ooobbzqAҳg ~5F4LСtO?}vFAII?3Ǐs8p~Z%\̥`ٲ\q,v;G4%5;~ĈaE$F@w̛ЫW4ݻw`̘QݻO?K.Š`@4 l&e6s諸U$椓Ƒ_;GѿsT[7'0(lVOQDը`W Ǚ23ãN#t(SփE}T# `"'N`PL!> BA ww AmٲIh&MA*ۗtbbzvA`8V^M?""7ڶC8p^^^hYf#GС ""ѵkѻw/"##݇kii)C풒xxxPRRJii~~5*xvڍFPPjhB 0bz<6ݟ[JX\q5UMUѷUEAS hv#k`<РZ=VE1z (>>1UUgT48 ƍeǎ],Zo Dn]MEAEQ;jClCG EQQTa˰(~iuHP/ְmWX_&LUǟqssͭ ᚅExzҥ 11DF6.]ETTSU驇.vWXX(yV BzzGՃf߾lڴn͞[QQQfbbzp礧&<6mnw wwwvr\#+u N\y6vdVpญ6,M[(*!RS4C& ugX.ҋ)D):0xyyL>IOOi|aÆѭ[WFj@Qd2a(++l6lǎ]7 ٫Oݓ]v{ѣGV{"!aAAAxzzo_"eee5|DFfBZA̙3jw]K`0p%3Xf-۶mGɷO(--嫯aZ$>~ AA_u?Q^^ΐ!ܹ3>>>7o]fcРAe!'!&HEQQF~.T󣪦 qtv AStiRgL ;v7na}CHHܣGd__&MӧO-Z¨Q#NlF^=𤋮O+pMªUkSN9ݳgVZKeN:x{2~.N4Ao{LL K!qm6 @N̞F :C4xw}5ÙzBj*R{8tY_ca\JZo0rV%BCØ9 6aN^""ӣGK߾vNG!DWZڴKQr(..5ӹ<+8gU7LjWx*tPVwb<=c:tOsj HkؤѨ`v Cur.MYPsmidۚ4}ql66_Bs솻;\ ;c!:2 vf}!*ϩmFpzێ`URyѳ鼾UBr?n;8h6vfG y=BtD4RY{_cD-vn{vCBPNq?[gCudF LCk(p6^lm4rˍ3Ksu2`@ۥ}}÷{wDBܠeQ@9T7*,*(" *᪻끊v]EV9jXUwftt&GI|?|:;7i{ ֮ :?7n,nEIyy9b5pjЯ_.>}vw<_<8pn6̘q/vD?w>\"!!Æ]3GFF,@^H<aY"i>[\N,\ ̛:-z= /^ÇaYذa'N`Æo1gl<,<EVV6nf=S3f܇^y^^uY"/Oc޼Ѳe u=()9zw=(bbʔ_թɓ'q]ӐW_}g{v{ʭ\ sbxBQ#q +ܰ ׽[5u,EbZqOQҥ3`޼a!"233Ѻukdff"333s93'u늞=EUUy=<Ӹҋ]܆ۋd2 <vx? --sj` 1a͘8su1ok瞻uk> Gc'=>t9$IDjj*233}itHIIO $~6:|ڵ+N@vv6r46oތɓo"p]eX?pli>s:5n刈`$v睿ܹ/bu v)zyyf6׿P rsbΜE@uu5fΜ"ѭ[Wzzz~+[c|InʰcNdeezB&+~<;vDny ԩ#vxfvvq[Ž;"!]ʛq"ƮD4Inó>y^BFF>mEQ|'L#F Ǻu_a|ۘ0L>-Lpƌ UVhժe2/@-|l&&&{buy 4D9ڈ}5N϶٭?= *Na~7&6I݉4 D$㏻P\\i}zȑqYc݋j:+zĉ'qao?`F6m>^zO>,˞^RRs{\g"jw6dfƳOQH?\^o>/^Er X&"Qҥ3={ylݚk7bԨ_xBԀQX ;Ă|&ߩŒ31{ݻg쳻{ʴimؿ@뚒oƳ={֭!o_aٲp[ؽ{֭>8 Kţ>͛h|xW!sSN﷣T;W;v֭a֬Gѣ9!~.(rʝUϞ7;w\pߐy~`&HVQe""K D$DQĜ9ѦMfz_1|xᙞ2yy#1yXp1^=z3Λ"<ɓB6YxgJ{]VV$"^_""=P' D6Mۯk˒af㏻ 5@c+RgPeYlSٳM;^ezyyFny9n7jjjPZZ@Ȕ(2g<9 x`rՁB|k#. #,,u:t022a IAk߬ʕ A "DQ u89j>M$IBgPmS 2ttۦl3.[iD8F Y)-q[mj#(sTY)o]q-d5&Q+ygydHlxc'(sT篜L"p`$"""jb?,wk}1FK_ x%r9fetk `%ދgR"j2 DDDDM,D H$S`ަ=%A¢dg/r3=$"jlugzx,"8&)/ {g gUjKD&Qc)"hw~=+l]YDoMtjVzzD &xǮDDDDMn*NAIU)}pg$X41(P0e, dv@]DDFl$"""jb `E{k(.=SFi2K/^OpL*KDM"""(pߠйe;a6M3ť1z8QyеUtCDJD&E~ 6Ap8͞'O6okXr5jj:Ƨ.K/mDZcNʕvzCJB:ˬl~_1ۅ74?H?"ɖؘU'"c4 Եh|6mE lKHHԩw~ ŇQ\|HJ׻Ǐ]ѳ޽{AC;7=[ N '*OƣaD ЭYP`bϘL?bPMBK}'M+W_({{^SW-,y]|Lq'LÁW^y?}} :]tFII r%N:4Djj |s!ॗ^UW] &ZjA. 6mF~~dٍs9Æ]YN ǎ(mj+ qWKΖ[\.t邼طo> O=s v܉m8Ӆ] /ov;^{m>F 6pk!FrcaX5y.n]:($L IDAT*Ųk,*ұOcU/M K|%KڴɂYߎ~(c=??l5nM_vڅJOOGvv[Rl|=zܹ'ߎabBޟ~}A~سg/ 1z(L|/~7 uHEȲmv[#11|)֮ yy#1"++ K(((ĸq7"%%Wի1zevƘ1֩/\?^{5nYY~q1,] yi gy>%Ŧ庵: \4) I\NXŠI1G} :nEQ 駟֠틙3"7uu$I(--Euu5wݻuܹ֭5 2/>49li|߾\tхhժ /o$TxQ]] Y~E99вeK0hš;fCc}(y9@mq^v7QccФt:r))극 `[0jTQRR{,:֯߀9s^@˖-k@Q,]!֮]'JcҤP]]SK/̀]e>ªUkqikѣ/ǨQ(?M|rvD?~}-[Gyy9/~ݻcih۶m?l=r4&M 9a75|s;x㍅Ï6n|?9~98.|W\^ E2d0vbZramDS4)%'Oؾ̝"֭ ԩ\ny_8Ç(X|RnH޽+VBI)<12Z\N/cݺѦM 8EEEx7PVVqzlGС=Zjb̙ѭ[W;v EEExs1ed̚>|b4> Kr1hЅ>4Bڵ`"j}ض{.jjj`Nv=UUUc[l'ôiSMGEz-Ԁ:t@߾ѳgz=ǧQRrAehx\uu5R:5NsHq¥^QyVBL6??UU#oTW;eK>`u߾}]wMSO=;>}5*Xk'=N.sL<{iii8z(&L =̘1knu?t-扸عSTFvٸv`X ['ni'MrnfȲe>~Ʊcp!TVV`:+ڒ[@a6TTGEQ`"ٳ,fA%Dn{ƯJ4iݻ֯߈\.__~">}zo7p8Xj5VXy|p:u{+WFnݐLD IDM x((؆|[$$H1c:.h RSSqA۷={ :7o)6n]vA߾}q,{Yq}쫩ދmw4Z@yy9ڷoh6 r ǚ R|B_K?̐z퓐ayS(++̛:F2 @Q^6uV9rbѱc vgQy⋕ؼy ;BA@^Yߧhٲ%*$~?,\#GLdw^‡N999!uw|^=QQQ>X;{,tꫯcҤ[}Ω?tk׮_]'"H.C"z$DMyغ5-0|0 :C͛l\rXslٲv1sK/g^ݻw7o_9$ x?ٟۧɀ*+}KKKћozHuig޽{w^:u)Swm歯Æ]Xh k60p 8{}Yg_fLp}5T$$*QcYyUx뭷+cڅTQOKcRwȑwHJ⋇zz_G“O>m65?~\mѡC{ݺuA~~>Μ) 8&ޤ~1"99}o=z7.W uLϬbp֋%B=')Qb&ż=Any(,܆̄@yk޽;:u _UV᫯ƀqA@NN;iLfggŰa`Р q&CD [43:s]SW#p0FYvCN㽖+/feH}Q+--FRRRm7W.VS}ḧ́JEZf_0n't/u2 ݎRTVV\g""(-U/eB t¨U)fUDRex D͆77wgYETTMfCRRN,AiiY(@iiN,ARRl6k|0a3яE;TC'QlcYfJ@Qԟ'O"31mEQ|MTVVJn (9.v#99 Es8O< Q|zg%j4b^02}xC&j?3J8n4cxVi E. GEBB22a#6s!O Á2\.$&&"99sI|ge7#%%~Hٱ^ bQM|%8al- q{Zn0U?E 6;veO-fƙ3pݞkuZ]캔 )))>RߒLcN !V{LYj3α_L M31A)փ&Q|IcK@]Wӻ_l6vڅm,[5чM}Д$ ,CeOi DD9˔ã>Xjp(ɲvfuuރ`?kQl`$qZWu}u[2EQ,oZh$ 5558pv^颥,{2lETƠi@͎r!>`ݲ:Mf}V ZsCv8p22ґ༾AU]تIDDǪP':p_^z՟7nDb)h2c7Y" ڇu]((؆.@-k-`QчKmݸ?gΜAA6$''՞S+Ghf%{|37Ed-la߸zm~] hm.Uv7oE~߲zY0DD9fš>8qHJJ\;{z,AP?y5+0{ 4WA}' 7QjXj$hx&VMXMue6m۶sҥ mFEF0'P$nlRLellykf| }ah t5B⯕ϼ|$kh ֭<ڲwҩUa'C8x=;pZ!"jEck.B3U9NfU4F?w[vZ/hk]7sԎKLTYTލ: + Ra'JC/!Fp8(/Q\\ II? C_ ־ucMEw fhc>x2pR<ՠe/Xl8dlspݞKl-y0gh^֬Ȟu${-CQdh~ȗw6$״ ˀYƧlˣ>?P̏ݧʹ.KI, [8lSL~ɮ4}hrp>٤:Eh֪S|v5^Rѕ*o~Q>7dzk3 -ް?yϩ_-;EAM. >3V E4AI> HMMf؍XvU/}(e~ӬԎwծ]1Z-~yg>JDT?u.aL}@ЅJB&?d }靘("11nUAbbOxzP\~od h3(MSb'"))k0 mSmf@Vu\M%I?i\ULDB $E[V[2-dY%-$IHOOCuu5!R{0[7!b9&C0d63ސFJJ2v{׬q֪YwV@߰)zg>8}z<juiŴxfK(ōu[JJgqY85]{͡5ӟ$u&*$''A R|ŠJ4l+4:ct8HJJVMAæ mZE}uՂ>-DDmuâowX6}@!lyfvȲ%`،C>\ wlVE5=Z6N(!Prcl}kT7v .l*ސ(xzZ+~fec5([u[Mo(d&5m*99 N.:fSe8P=oͦMh5S[7n\V(n -9,gn ˅&QӳZd0a¥UVn(X̺]d}Vg? "#\bCjS2$"DѷyܺeSsU(--\DðA> i\E@XmkRM4CV1n{ܞhJ)hn_kv`6NQۺnS֏`_IDԼA,`n4f "n7$IjRr;6ɻ=q7IM`fjb*{߾{1-M %%Q U؄6J}9-pjx~|gyYYwZ }mc'99 Ul&b طFnf ͶGH{NS]0YחMeT{ծ'Ԯ'n4cznJj* KZ j~[x]h eV>?Ƣq4eYƩSIkj-$I{8{8԰0kjݵjw=oRdLa(@8ی?rii)jL%k8*eY2YYu<ڲ"{ `l1!K_؅ַyC ~DDMD[O_w,51d6ڜ{jONϚBXO`Fhm R]? :n3fsg:0CNXأ (2&M [HJK<3زe+.}yȃFB ׻>l5+cnWi->`[2"ȳj/ 7OxBfs gK N:t`իϠn4vՏ 5fZ<#Ѣj@ݬq(eT-//#zIg ?(M,lmX.(`ŊUZh=nMo5o+UK&[,M}їCkY%|gwݤC_l](^ ֭X-̶[ \hCj XNZAS=ۋ2l6|[_d]]6ѿl޼Bǎ=-"c͚u|Xorilj3x~%ZF$"Q]=~mtᨂBMzgABB ۓܝ(,7g;я>dO%ւfڲ~j6O^-,Vj'W?tbÆM>}RRR3gТE O_~G_oxLǏc(,4ByZ/;-t+V;&yr\pAݠi>|YY=r\s͕;vӦMc=K?¾}ѦMy篐{`ժ5x뭷曯y?=ŋnO_fTԮƐ1"eJwPp8C:݌:QeeHKK}"^R2kP5S7|lA)>@Ek@^ YY7|=E4ƒmڴƀ 7/RRW_)KгgO+ƚ5kp[!=oqo{g?~:E2ޕ[ưa`ZA1p:I ׿>.s:x%>ݜ)6\sNw̙ecXnY(n"DQ{^(DAoOz ?ؽ֢v̙3gpd N'f7?]eN,3g|SY?;]\|Oifg5rMJS'P[oo^O< vEqITTTԮ399YYiڣCiL$'xN8y`OLѬx/EHt썻r]LzVêUfTY.<~Y{RfE>ZYI[^f.]:NL$ CQ<7K^R}lJ+{nL6sx8~8ڵw>իW/$''ĉԩcPe&M["y..tŲ~HIIA6䒋~F 26mBNN.p ֭$uRbcMTUUB$TWWfE fAQn -Zda`} h"d,u:) <%%g 2( Sn!I ۍ2TWW=huVa?w$q$HC dEA>t:~ؿІ1c^ o0Kcw 4VӸQ9w$J=`i' ی}I2Z9vY2&ZXgW_"""""6451| eivnu:#"A3&2k1mESۺi5S-kЎ3 oA( XVaO[6PjCƤk_(A0* >k 09{ 1|jek2+׷hj`Ju0v5֍A(Øպ1[4i2g6_چX M=c85 L>l°M6VLm\Z ' X`Q &XMcղoѴ k<',Y3PPnR4~ZP2ưiJ]jò^}F DDDDD_ȴ zfA,lbafu_f ("p6F uR c&7YXJ>A&W@i nϚ3^#Ӫ~u2c@--V`Zmjԗ6m'PƲ0l5`•v׬~EX6VMlX^i߸͟'""""kh7`Z.SbTdk( YcHMV\u5v5k4[7cC1#dgiVj-j<&VR[,">,V@u V0.(5ZYMzl`g5f %Q uVVa/Ԁ ww>f] ʆ+lZX@(j ~f>k\wȴfѺFsд*_l+eiMo """""Ɖ~ vL2}L۠Y %lOW_J"""""j`•2V/ؙ`0LiɃ*4vW>K92(6 zɸ 5 ,_R&mVXHDDDDD_ f`[)@#/ki`VM`h}Bi3d>I_B$Q8æ?` u,fS?DDDDDY.:O.@u DG g7Zm_vˍd?;!""""5 U to 2=&l!D"rm`[yL""""nFlC (lЀɀJDDDD~ Zv uXpwmqaM!'Ra>$OWYchzn\63#q_܆L Pf4-ڞ""""x,ӭ6 FTL :NCԐV`"""""/Y߮' @HMX"""""] `G؈Ivᓈ(!]j#B&gC>QdwLMH_B-DDDDDpv }GX QkCg8ADDDDD%psD\,ƺ5_nKDX Iwe>DDDDDI.=#}Fa(u%U"}<y5p˜ @|H= 0.59.0', default_options: [ 'warning_level=2', 'c_std=gnu11', ], ) i18n = import('i18n') if get_option('development') app_id = 'com.mattjakeman.ExtensionManager.Devel' vcs_tag = run_command('git', 'rev-parse', '--short', 'HEAD', check: false).stdout().strip() if vcs_tag == '' version_suffix = '-devel' else version_suffix = '-@0@'.format(vcs_tag) endif else app_id = 'com.mattjakeman.ExtensionManager' version_suffix = '' endif config_h = configuration_data() config_h.set_quoted('APP_VERSION', meson.project_version() + version_suffix) config_h.set_quoted('GETTEXT_PACKAGE', 'extension-manager') config_h.set_quoted('LOCALEDIR', join_paths(get_option('prefix'), get_option('localedir'))) config_h.set_quoted('RESOURCE_PATH', '/' + app_id.replace('.', '/')) config_h.set_quoted('APP_ID', app_id) config_h.set_quoted('PKG_NAME', get_option('package')) config_h.set_quoted('PKG_DISTRIBUTOR', get_option('distributor')) config_h.set10('IS_OFFICIAL', get_option('official')) config_h.set10('WITH_BACKTRACE', get_option('backtrace')) configure_file( output: 'exm-config.h', configuration: config_h, ) add_project_arguments([ '-I' + meson.project_build_root(), '-Werror=implicit-function-declaration', ], language: 'c') subdir('data') subdir('src') subdir('po') gnome.post_install( glib_compile_schemas: true, gtk_update_icon_cache: true, update_desktop_database: true ) extension-manager-0.6.3/meson_options.txt000066400000000000000000000012121477302130300205750ustar00rootroot00000000000000option('development', type: 'boolean', value: false, description: 'Produce a development build') option('official', type: 'boolean', value: false, description: 'Whether this is an official upstream package') option('backtrace', type: 'boolean', value: true, description: 'Whether the package is built with backtrace support') # Will be shown in error messages option('package', type: 'string', value: 'Unknown Package', description: 'The package format being built (e.g. "Flatpak")') option('distributor', type: 'string', value: 'Unknown Author', description: 'The package distributor (e.g. "Your Name ")')extension-manager-0.6.3/po/000077500000000000000000000000001477302130300155625ustar00rootroot00000000000000extension-manager-0.6.3/po/LINGUAS000066400000000000000000000001761477302130300166130ustar00rootroot00000000000000ar ca cs da de el es et fa fr hr hu id_ID it ja ko nb nl nn oc pl pt pt_BR ru_RU sv ta tr uk vi_VN zh_CN zh_TW hi be bg ga fi extension-manager-0.6.3/po/POTFILES000066400000000000000000000024101477302130300167270ustar00rootroot00000000000000data/com.mattjakeman.ExtensionManager.desktop.in.in data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in src/exm-application.c src/exm-backtrace.c src/exm-browse-page.blp src/exm-browse-page.c src/exm-comment-dialog.blp src/exm-comment-dialog.c src/exm-comment-tile.blp src/exm-comment-tile.c src/exm-detail-view.blp src/exm-detail-view.c src/exm-error-dialog.blp src/exm-error-dialog.c src/exm-extension-row.blp src/exm-extension-row.c src/exm-help-overlay.blp src/exm-info-bar.blp src/exm-info-bar.c src/exm-install-button.blp src/exm-install-button.c src/exm-installed-page.blp src/exm-installed-page.c src/exm-rating.blp src/exm-rating.c src/exm-screenshot-view.blp src/exm-screenshot-view.c src/exm-screenshot.blp src/exm-screenshot.c src/exm-search-row.blp src/exm-search-row.c src/exm-upgrade-assistant.blp src/exm-upgrade-assistant.c src/exm-upgrade-result.c src/exm-utils.c src/exm-window.blp src/exm-window.c src/exm-zoom-picture.c src/local/exm-extension.c src/local/exm-manager.c src/local/shell-dbus-interface.c src/main.c src/web/exm-comment-provider.c src/web/exm-data-provider.c src/web/exm-image-resolver.c src/web/exm-request-handler.c src/web/exm-search-provider.c src/web/model/exm-comment.c src/web/model/exm-search-result.c src/web/model/exm-shell-version-map.c extension-manager-0.6.3/po/README.md000066400000000000000000000263171477302130300170520ustar00rootroot00000000000000# Translating Extension Manager Contributions to translations are always welcome! There are two ways to translate Extension Manager, via Weblate or manually, choose your favorite. > [!TIP] > Use Weblate if you don't know which one to choose. ## Via Weblate We use Weblate - an open source continuous localisation tool - for translation management. Access to Hosted Weblate is kindly provided free of charge to the Extension Manager project.

## Manually If you are totally new to GTK software translation (or software development in general), fear not! The entire process is explained below in as much detail as possible. If you have any trouble, please [get in touch](/README.md#-community). If you already have experience with translating GTK applications, remember that Extension Manager is written in C. You will need to rebuild it every time you make a change to the `po` files. ### How to add new translation 1. You need software to translate Extension Manager (in this case, we will use [POEdit](https://poedit.net/)) and [GNOME Builder](https://apps.gnome.org/Builder/) to build and test your translation. 2. Clone Extension Manager repository to your device. * *Using git:* ```bash git clone git@github.com:mjakeman/extension-manager.git ``` * *Using Github:* 1. Click green button `Code`. ![](screenshots/_19.png) 2. In opened menu click `Download ZIP`. ![](screenshots/_20.png) 3. Save it in your `~/` home folder. 4. Unpack archive with archive manager of your choice. 5. Rename folder that will be unpacked from archive to `extension-manager`. * *Using GNOME Builder:* 1. Run GNOME Builder. 2. Click `Clone Repository` button at the bottom. ![](screenshots/_1.png) 3. In `Repository URL` paste: `https://github.com/mjakeman/extension-manager` 4. Set `Location` to `~/` 5. Click `Clone Repository` and wait until it's done. ![](screenshots/_2.png) You can leave GNOME Builder open as we will use it again later. 3. You need the `pot` file that lies inside `./po` folder. Make sure that the [pot file is up-to-date](#regenerate-pot-files) before proceeding. 4. Open it with POEditor. 5. Click on button at the bottom of window `Create a new translation`. ![](screenshots/_3.png) 6. Select your desired language. ![](screenshots/_4.png) 7. Press `Ctrl+S` or `File` > `Save` to save new file, place it inside `./po` folder with filename that POEdit gave you. 8. Open `./po/LINGUAS` file with any text editor, and add there locale code of your language. For example, if you want to add Ukrainian translation, POEdit will suggest you filename `uk.po`, so in `LINGUAS` file, you need to add `uk`. And, please, keep locale codes in alphabetical order. But sometimes, you might want to specify a variant for your language. For example, for Russian in Russia Federation, you need to set locale to `ru_RU`, instead of just `ru`. You can learn more about locales [here](https://www.gnu.org/software/gettext/manual/html_node/Locale-Names.html). 9. Translate Extension Manager! 10. [Test your translation](#how-to-test-translation). ### How to test translation After you have finished your translation, you will want to test it. The easiest way to do so is to use [GNOME Builder](https://apps.gnome.org/Builder/). If you chose to clone the repository using GNOME Builder in [How to add new translation](#how-to-add-new-translation) and have not closed the GNOME Builder window, skip to step 4. 1. If you haven't already install [GNOME Builder](https://apps.gnome.org/Builder/), install it now. 2. Open GNOME Builder. 3. Click on button at the bottom of window `Select a Folder...` and pick folder with Extension Manager source [that we cloned before](#how-to-add-new-translation). ![](screenshots/_5.png) 4. In top-center, click on button with `triangle pointing down`. ![](screenshots/_6.png) 5. In opened menu pick `Rebuild`. ![](screenshots/_7.png) 6. Wait until you get `Build succeeded` in upper-center text box. ![](screenshots/_8.png) 7. Click on button with `triangle pointing down` in upper-center. ![](screenshots/_9.png) 8. In opened menu pick `Install`. ![](screenshots/_10.png) 9. Open `New Runtime Terminal`. With `Ctrl+Alt+T` shortcut or click `+` button in top-left corner and pick `New Runtime Terminal`. ![](screenshots/_11.png) ![](screenshots/_12.png) 10. In opened terminal, you need to force locale that you want to test. Usually, it will match locale name of your `po` file or it might require to specify your regional code. For example, to force application in Ukrainian language, you need to type: ```bash LC_ALL=uk_UA.UTF-8 ``` Where you need to replace `uk_UA` with your desired locale. You can learn more about locales [here](https://www.gnu.org/software/gettext/manual/html_node/Locale-Names.html). ![](screenshots/_13.png) 11. Run `extension-manager` to run Extension Manager, which would use locale that you want to test. ![](screenshots/_14.png) Once you have finished your changes, you need to refresh the application so it will apply changes to translation. To do so: 1. Stop current running Extension Manager with `Ctrl+C` in terminal or simply close Extension Manager window. 2. Then click on button on `top-center` with `triangle pointing down` in GNOME Builder. ![](screenshots/_15.png) 3. In opened menu pick `Rebuild`. ![](screenshots/_16.png) 4. Wait until GNOME Builder rebuild Extension Manager. ![](screenshots/_17.png) 5. Now close this terminal with: ```bash exit ``` Or just click `cross symbol` on tab with this terminal. ![](screenshots/_18.png) 6. After that, repeat instructions from [How to test translation](#how-to-test-translation) section, starting from step 7. Do this every time, when you do some changes to `po` file to see them in Extension Manager. ## How to update existing translation If you want to update the translation that someone else already did: 1. Try to contact original translator. You might find their contact info in top of `po` file of translation that you want to update (if you will open it via any text editor) or in `translator-credits` and ask them about changes in translation. 2. If you can't contact them for some reasons or they don't respond, then just translate on your own. 3. [Re-generate pot file](#regenerate-pot-files). 4. Open `po` file that you want to update with POEditor. 5. In top menu click `Translation`. ![](screenshots/_21.png) 6. In opened menu pick `Update from POT file…`, and then pick `pot` file that you re-generated earlier. ![](screenshots/_22.png) 7. If you wish, don't forget to add yourself to `translator-credits` (*DON'T REMOVE PREVIOUS TRANSLATORS THERE*, just add your credit on newline) and in top of `po` file via text editor. 8. [Send pull request](#how-to-contribute-your-translation). Try to be consistent with choices that previous translator did, unless they contradict other GTK/GNOME applications translated terms or you think that your translation will suit better. ### How to contribute your translation If you think that you done with translating, it's time to send your translation as pull request to developers of Extension Manager! This part might be tricky to someone who not familiar with software development and Github, so if you don't understand something, you can contact [community/developers here](/README.md#-community), where you will get help! 1. Make sure, that you have account on [Github](https://github.com/). And if not, create one. 2. Also make sure, that you know some basics about how to make pull requests: [How to make pull request from fork](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork) and [How to create fork](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/about-forks). 3. Upload changes that you make in your local copy of repository to your Github fork. If you already know how to use git, this can be done like this: ```bash cd extension-manager git commit -m "I translated Extension Manager!" git push ``` If not, you could use Github interface to do so: 1. Open your fork on Github, navigate to `./po` folder. 2. Click `Add file` then `Upload files` and pick your translated `po` file and `LINGUAS` (in case if you added new translation. For updates to existing translation you don't need to send `LINGUAS`). 3. Make sure that everything is correct, there are no typos in translation, mistakes, you didn't upload wrong files by accident, etc. 4. Open [pull request](https://github.com/mjakeman/extension-manager/compare) to Extension Manager repository against your fork. ### Tips about translating 1. Try to be consistent in your translation with other GTK/GNOME applications. Pick same terms, use same accelerators, etc. 2. Always test your translation before opening pull request. 3. Open your `po` file with any text editor, not with POEdit, and in top most of file you will find some placeholder info for your translation. Please, fill it, if you can. Take as example `uk.po` file. 4. `translator-credits` is optional and if you are not comfortable with sharing your alias, email or link, then leave it as-is. Also, if there are credits for other translators, please, don't remove them. Just add your credit info on newline. If you want to put email, do this: `your_alias ` And if you want to place link: `your_alias https://example.com` You can check if you input everything correctly in `About` dialog of Extension Manager. ### Regenerate POT files If you want to regenerate the `pot` file (i.e. when it hasn't been updated in a while), there are a few steps that need to be followed: * *Using GNOME Builder:* 1. Open GNOME builder. 2. Open `New Runtime Terminal` with `Ctrl+Alt+T` or click `plus button` in top-left corner and pick `New Runtime Terminal` ![](screenshots/_23.png) ![](screenshots/_24.png) 3. And replace contents of `POTFILES` with output of `print-source-files.sh`. ```bash cd extension-manager/po ./print-source-files.sh > ./POTFILES ``` ![](screenshots/_25.png) 4. Go to the build directory (typically `_build`, but whichever you specified when running meson) and initialize it. Like this: ```bash cd cd extension-manager mkdir ./_build cd ./_build meson ``` ![](screenshots/_26.png) 5. Now meson is initialized and you can re-generate `pot` file. Like this: ```bash meson compile extension-manager-pot ``` ![](screenshots/_27.png) 6. Now close this terminal with: ```bash exit ``` Or just click `cross symbol` on tab with this terminal. ![](screenshots/_28.png) * *Without GNOME Builder:* 1. Make sure that you have `meson` and `gettext` utilities installed on your system. Refer to your distribution package manager. 2. Go to `po` directory and run `print-source-files.sh`. ```bash cd extension-manager/po ./print-source-files.sh > ./POTFILES ``` 3. Go to the build directory (typically `_build`, but whichever you specified when running meson) and initialize it. Like this: ```bash cd extension-manager mkdir ./_build cd ./_build meson ``` 4. Now meson is initialized and you can re-generate `pot` file. Like this: ```bash meson compile extension-manager-pot ```extension-manager-0.6.3/po/ar.po000066400000000000000000000624411477302130300165330ustar00rootroot00000000000000# Arabic translations for extension-manager package. # Copyright (C) YEAR THE extension-manager'S COPYRIGHT HOLDER # This file is distributed under the same license as the extension-manager package. # Omar TS , 2022. # Omar TS , 2024. msgid "" msgstr "" "Project-Id-Version: extension-manager\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-03-06 16:36+0000\n" "PO-Revision-Date: 2024-11-30 22:34+0000\n" "Last-Translator: Omar TS \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 ? 4 : 5;\n" "X-Generator: Weblate 5.9-dev\n" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:2 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:6 #: src/exm-window.blp:7 msgid "Extension Manager" msgstr "مدير الامتدادات" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:11 msgid "Manage GNOME Shell Extensions" msgstr "أدِر امتدادات جنوم شل" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #. Make sure to leave the original strings and add your translations afterwards, so that users can search both in English and your language. #: data/com.mattjakeman.ExtensionManager.desktop.in.in:14 msgid "extension;manager;shell;" msgstr "extension;manager;امتداد;مدير;شل;" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:7 msgid "Browse, install, and manage GNOME Shell Extensions" msgstr "تصفح ونصِّب وأدِر امتدادات جنوم شل" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:13 msgid "A utility for browsing and installing GNOME Shell Extensions." msgstr "أداة تصفح وتنصيب امتدادت جنوم شل." #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:14 msgid "Features:" msgstr "الميزات:" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:16 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:26 msgid "Browse extensions.gnome.org right inside the app" msgstr "تصفح الامتدادات الموجودة في extensions.gnome.org من داخل التطبيق" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:17 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:22 msgid "Manage the extensions you already have installed" msgstr "أدِر الامتدادات التي نصَّبتها" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:30 msgid "See all the details of your extensions" msgstr "اطلع على كافة تفاصيل امتداداتك" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:34 msgid "Check your extensions compatibility with the next version of GNOME" msgstr "تحقق من توافق امتداداتك مع الإصدار التالي من جنوم" #: src/exm-application.c:201 msgid "Browse, install, and manage GNOME Shell Extensions." msgstr "تصفح ونصِّب وأدِر امتدادات جنوم شل." #. Translators: Use 'Name email@domain.com' or 'Name https://website.example' (without single quotes). Do not delete existing names, write yours on a new line. #: src/exm-application.c:204 msgid "translator-credits" msgstr "" "Omar TS \n" "علي جلال " #: src/exm-browse-page.blp:16 msgid "Search for Extensions" msgstr "ابحث عن امتدادات" #: src/exm-browse-page.blp:17 msgid "" "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell Extensions" msgstr "أدخل كلمة مفتاحية للبحث في «extensions.gnome.org» عن امتدادات جنوم سل" #: src/exm-browse-page.blp:47 msgid "Relevance" msgstr "الصلة" #: src/exm-browse-page.blp:48 msgctxt "Sort search results" msgid "Downloads" msgstr "التنزيلات" #: src/exm-browse-page.blp:49 msgid "Recent" msgstr "الأخيرة" #: src/exm-browse-page.blp:50 src/exm-detail-view.blp:113 msgid "Name" msgstr "الاسم" #: src/exm-browse-page.blp:57 msgid "Sort search results" msgstr "فرز نتائج البحث" #: src/exm-browse-page.blp:103 msgid "_Load More Results" msgstr "_حمِّل المزيد من النتائج" #: src/exm-browse-page.blp:137 src/exm-installed-page.blp:123 msgid "No Results Found" msgstr "لم يُعثَّر على نتائج" #: src/exm-browse-page.blp:144 msgid "Try a different search" msgstr "جرّب بحثا مختلفا" #: src/exm-browse-page.blp:178 src/exm-comment-dialog.blp:34 #: src/exm-detail-view.blp:49 src/exm-detail-view.blp:291 #: src/exm-upgrade-assistant.blp:100 msgid "Connection Error" msgstr "خطأ في الاتصال" #: src/exm-comment-dialog.blp:13 src/exm-detail-view.blp:248 #, fuzzy #| msgid "There are no comments." msgid "Reviews and Comments" msgstr "لا تُوجَد تعليقات." #: src/exm-comment-dialog.blp:25 #, fuzzy #| msgid "Loading…" msgid "Loading" msgstr "جار التحميل…" #: src/exm-comment-tile.blp:30 src/exm-detail-view.blp:127 msgid "Author" msgstr "المطوِّر" #: src/exm-detail-view.blp:40 msgid "Loading Details" msgstr "يُحمِّل التفاصيل" #: src/exm-detail-view.blp:59 src/exm-window.c:347 msgid "An Error Occurred" msgstr "حدث خطأ" #: src/exm-detail-view.blp:60 msgid "No extension details available" msgstr "لا توجد تفاصيل متاحة لهذا الامتداد" #: src/exm-detail-view.blp:154 msgid "Enlarge Image" msgstr "كبِّر الصورة" #: src/exm-detail-view.blp:172 src/exm-extension-row.blp:89 msgid "Description" msgstr "الوصف" #: src/exm-detail-view.blp:195 msgid "Links" msgstr "الروابط" #: src/exm-detail-view.blp:203 msgid "Homepage" msgstr "الصفحة الرئيسية" #: src/exm-detail-view.blp:219 msgid "Donate" msgstr "تبرّع" #: src/exm-detail-view.blp:228 msgid "View on Extensions" msgstr "اعرض على موقع الامتدادات" #: src/exm-detail-view.blp:271 msgid "Reviews and comments are disabled for this extension" msgstr "" #: src/exm-detail-view.blp:314 #, fuzzy #| msgid "There are no comments." msgid "There are no reviews or comments" msgstr "لا تُوجَد تعليقات." #: src/exm-detail-view.blp:343 #, fuzzy #| msgid "_Show All Reviews" msgid "_Show All" msgstr "ا_عرض جميع التعليقات" #. Translators: '%s' = extension name #: src/exm-detail-view.c:445 #, c-format msgid "%s Icon" msgstr "%s أيقونة" #. Translators: '%s' = extension name #: src/exm-detail-view.c:478 #, c-format msgid "%s Screenshot" msgstr "%s لقطة شاشة" #: src/exm-error-dialog.blp:7 msgid "Error Report" msgstr "تقرير خطأ" #: src/exm-error-dialog.blp:22 msgid "An unexpected error occurred in Extension Manager" msgstr "حدث خطأ غير متوقع في مدير الامتدادات" #: src/exm-error-dialog.blp:36 #, fuzzy #| msgid "_Copy to Clipboard" msgid "Copy to Clipboard" msgstr "ا_نسخ إلى الحافظة" #: src/exm-error-dialog.blp:77 msgid "_New Issue" msgstr "_بلِّغ عن العلة" #. Success indicator #: src/exm-error-dialog.c:125 src/exm-upgrade-assistant.c:347 msgid "Copied" msgstr "نُسخَت" #: src/exm-error-dialog.c:173 msgid "Please open a new issue and attach the following information:" msgstr "بلِّغ عن العلة وأرفق المعلومات التالية:" #. Translators: '%s' = Name of Distributor (e.g. "Packager123") #: src/exm-error-dialog.c:177 #, c-format msgid "" "You are using a third-party build of Extension Manager. Please contact the package distributor (%s) first before " "filing an issue. Be sure to attach the following information:" msgstr "" "أنت تستخدم إصدارًا تابعًا لجهة خارجية من مدير الامتدادات. رجاء " "اتصل بموزع الحزمة (%s) أولاً قبل تقديم أي مشكلة. " "تأكد من إرفاق المعلومات التالية:" #. Translators: Button's tooltip to open extension's preferences dialog #: src/exm-extension-row.blp:28 msgid "Open extension preferences" msgstr "افتح تفضيلات الامتداد" #. Translators: Icon's tooltip when an extension has an error #: src/exm-extension-row.blp:46 msgid "An error occurred while loading this extension" msgstr "حدث خطأ أثناء تحميل هذا الامتداد" #. Translators: Icon's tooltip when an extension is incompatible #: src/exm-extension-row.blp:63 src/exm-install-button.c:117 msgid "This extension is incompatible with your current version of GNOME" msgstr "هذا الامتداد غير مُتوافِق مع إصدار جنوم لديك" #. Translators: Icon's tooltip when an extension update is available #: src/exm-extension-row.blp:80 msgid "A newer version of this extension is available" msgstr "يُوجَّد إصدار أحدث لهذا الامتداد" #: src/exm-extension-row.blp:98 src/exm-info-bar.blp:50 msgid "Version" msgstr "رقم الإصدار" #: src/exm-extension-row.blp:107 msgid "Session Modes" msgstr "" #: src/exm-extension-row.blp:137 msgid "Error" msgstr "خطأ" #: src/exm-extension-row.blp:158 msgid "See Details" msgstr "اعرض التفاصيل" #: src/exm-extension-row.blp:169 msgid "Remove…" msgstr "أزِل…" #: src/exm-extension-row.c:175 msgid "Unlock Dialog" msgstr "" #. Translators: GNOME Display Manager #: src/exm-extension-row.c:181 msgid "GDM" msgstr "" #. Translators: Label when an extension runs on both, login and lock screens #: src/exm-extension-row.c:189 msgid "" "This extension will run while the screen is locked and no user is logged in" msgstr "" #. Translators: Label when an extension runs on the lock screen #: src/exm-extension-row.c:194 msgid "This extension will run while the screen is locked" msgstr "" #. Translators: Label when an extension runs on the login screen #: src/exm-extension-row.c:199 #, fuzzy #| msgid "%d extension will be updated on next login" #| msgid_plural "%d extensions will be updated on next login" msgid "This extension will run while no user is logged in" msgstr "لا امتدادات ستُحدَّث في الولوج التالي" #: src/exm-help-overlay.blp:11 msgctxt "shortcut window" msgid "General" msgstr "عام" #: src/exm-help-overlay.blp:14 msgctxt "shortcut window" msgid "Show Installed Page" msgstr "أظهر صفحة المُنصَّب" #: src/exm-help-overlay.blp:19 msgctxt "shortcut window" msgid "Show Browse Page" msgstr "أظهر صفحة التصفح" #: src/exm-help-overlay.blp:24 msgctxt "shortcut window" msgid "Toggle Search" msgstr "بدّل البحث" #: src/exm-help-overlay.blp:29 msgctxt "shortcut window" msgid "Show Keyboard Shortcuts" msgstr "أظهر اختصارات لوحة المفاتيح" #: src/exm-help-overlay.blp:34 msgctxt "shortcut window" msgid "Close Window" msgstr "أغلق النافذة" #: src/exm-help-overlay.blp:39 msgctxt "shortcut window" msgid "Quit" msgstr "غادر" #: src/exm-help-overlay.blp:45 msgctxt "shortcut window" msgid "Screenshot View" msgstr "اعرض لقطة الشاشة" #: src/exm-help-overlay.blp:48 src/exm-help-overlay.blp:63 msgctxt "shortcut window" msgid "Zoom In" msgstr "قرِّب" #: src/exm-help-overlay.blp:53 src/exm-help-overlay.blp:68 msgctxt "shortcut window" msgid "Zoom Out" msgstr "بعِّد" #: src/exm-help-overlay.blp:58 msgctxt "shortcut window" msgid "Reset Zoom" msgstr "أعد ضبط التكبير" #: src/exm-info-bar.blp:28 msgctxt "Number of downloads" msgid "Downloads" msgstr "عدد التنزيلات" #: src/exm-info-bar.c:107 msgid "Unsupported" msgstr "غير مُتوافِق" #: src/exm-install-button.c:127 msgid "Install…" msgstr "نصِّب…" #: src/exm-install-button.c:132 #, fuzzy #| msgctxt "State" #| msgid "Installed" msgid "Installing" msgstr "مُنصَّب" #: src/exm-install-button.c:136 msgctxt "State" msgid "Installed" msgstr "مُنصَّب" #: src/exm-install-button.c:140 msgid "Unsupported…" msgstr "غير مُتوافِق…" #: src/exm-installed-page.blp:16 msgid "_Log Out…" msgstr "_اخرج…" #: src/exm-installed-page.blp:28 msgid "Use Extensions" msgstr "فعِّل الامتدادات" #: src/exm-installed-page.blp:29 msgid "Extensions can cause performance and stability issues" msgstr "قد تُسبِّب الامتدادات مشكلات في الأداء وفي الاستقرار" #: src/exm-installed-page.blp:34 src/exm-upgrade-assistant.blp:133 msgid "User-Installed Extensions" msgstr "الامتدادات التي نصَّبها المستخدم" #: src/exm-installed-page.blp:51 src/exm-upgrade-assistant.blp:150 msgid "No User Extensions Installed" msgstr "لا امتدادات نصَّبها المستخدم" #: src/exm-installed-page.blp:55 msgid "Browse" msgstr "تصفح" #: src/exm-installed-page.blp:69 src/exm-upgrade-assistant.blp:160 msgid "System Extensions" msgstr "الامتدادات المُنصَّبة في النظام" #: src/exm-installed-page.blp:86 src/exm-upgrade-assistant.blp:177 msgid "No System Extensions Installed" msgstr "لا امتدادات مُنصَّبة في النظام" #. Translators: Text announced by screen readers when interacting with the list of search results #: src/exm-installed-page.blp:111 msgid "Search Results" msgstr "نتائج البحث" #: src/exm-installed-page.blp:124 msgid "Try a different search or search online" msgstr "حاول إجراء بحث مختلف أو ابحث عبر الإنترنت" #: src/exm-installed-page.blp:131 msgid "_Search Online" msgstr "ا_بحث على الإنترنت" #. Translators: '%d' = number of extensions that will be updated #: src/exm-installed-page.c:298 #, c-format msgid "%d extension will be updated on next login" msgid_plural "%d extensions will be updated on next login" msgstr[0] "لا امتدادات ستُحدَّث في الولوج التالي" msgstr[1] "سيُحدَّث امتداد واحد في الولوج التالي" msgstr[2] "سيُحدَّث امتدادان في الولوج التالي" msgstr[3] "سيُحدَّث %d امتدادات في الولوج التالي" msgstr[4] "سيُحدَّث %d امتدادًا واحد في الولوج التالي" msgstr[5] "سيُحدَّث %d امتداد في الولوج التالي" #: src/exm-rating.c:142 #, c-format msgid "%i Star" msgid_plural "%i Stars" msgstr[0] "لا نجمة" msgstr[1] "نجمة واحدة" msgstr[2] "نجمتان" msgstr[3] "%i نجوم" msgstr[4] "%i نجمة" msgstr[5] "%i نجمة" #. Translators: Button's tooltip to zoom out screenshots #: src/exm-screenshot-view.blp:37 msgid "Zoom Out" msgstr "بعِّد" #. Translators: Button's tooltip to zoom in screenshots #: src/exm-screenshot-view.blp:51 msgid "Zoom In" msgstr "قرِّب" #: src/exm-upgrade-assistant.blp:11 msgid "Upgrade Assistant" msgstr "مساعد الترقية" #: src/exm-upgrade-assistant.blp:66 msgid "_Check Compatibility" msgstr "ا_فحص التوافق" #: src/exm-upgrade-assistant.blp:189 msgid "_Copy to Clipboard" msgstr "ا_نسخ إلى الحافظة" #: src/exm-upgrade-assistant.c:188 #, c-format msgid "Checked %d/%d Extensions" msgstr "فُحِص %d/%d من الامتدادات" #. Set percentage text #: src/exm-upgrade-assistant.c:207 #, c-format msgid "%d%% Compatible" msgstr "؜%d%% مُتوافِقة" #: src/exm-upgrade-assistant.c:223 #, c-format msgid "" "GNOME %s supports %d out of %d of the extensions currently " "installed on the system" msgstr "يتوافق مع جنوم%s ؜%d من أصل %d من الامتدادات المُنصَّبة" #. Translators: Icon's tooltip when an extension is compatible #: src/exm-upgrade-assistant.c:503 msgid "A compatible version of the extension exists" msgstr "يُوجَد إصدار مُتوافِق من هذا الامتداد" #. Translators: Icon's tooltip when an extension is not compatible #: src/exm-upgrade-assistant.c:510 msgid "No compatible version of the extension exists" msgstr "لا يُوجَد إصدار مُتوافِق من هذا الامتداد" #. Translators: Icon's tooltip when an extension compatibility is unknown #: src/exm-upgrade-assistant.c:517 msgid "" "This extension is not hosted on extensions.gnome.org. Its compatibility " "cannot be determined." msgstr "" "هذا الامتداد غير مُستضاف على extensions.gnome.org، لذا تعذَّر تحديد توافقه." #: src/exm-upgrade-assistant.c:608 #, c-format msgid "" "You are currently running GNOME %s. Select a version of GNOME below " "and check whether your extensions will continue to be available." msgstr "" "أنت حاليًا تُشغِّل جنوم %s، فاختر إصدارًا آخر أدناه وتحقق من توافقية " "امتداداتك معه." #. Translators: Tooltip of the search icon in the header bar #: src/exm-window.blp:39 msgid "Search Installed Extensions" msgstr "ابحث في الامتدادات المنصَّبة" #: src/exm-window.blp:48 msgid "Main Menu" msgstr "القائمة الرئيسية" #: src/exm-window.blp:59 msgid "Search for installed extensions" msgstr "ابحث عن امتدادات مُنصَّبة" #: src/exm-window.blp:71 msgctxt "Navigation" msgid "_Installed" msgstr "ال_مُنصَّبة" #: src/exm-window.blp:80 msgctxt "Navigation" msgid "_Browse" msgstr "_التصفح" #. Translators: the character preceded by "_" should not be the same #. as others in the same menu #: src/exm-window.blp:108 msgid "Sort _Enabled First" msgstr "افرز ال_مُفعَّل أولًا" #: src/exm-window.blp:109 msgid "_Show Unsupported" msgstr "ا_عرض غير المتوافق" #: src/exm-window.blp:113 msgid "_Upgrade Assistant" msgstr "_مساعد الترقية" #: src/exm-window.blp:114 msgid "_Keyboard Shortcuts" msgstr "اختصارات _لوحة المفاتيح" #: src/exm-window.blp:115 msgid "_About Extension Manager" msgstr "_عن" #: src/exm-window.blp:120 msgid "Uninstall Extension?" msgstr "أتُزيل الإضافة؟" #: src/exm-window.blp:121 msgid "" "The extension's features and functionality will no longer be accessible. Are " "you sure you want to uninstall?" msgstr "" "لن تُتاح ميزات ووظائف هذا الامتداد بعد إزالته، فهل أنت متأكد من أنك تريد " "الإزالة؟" #: src/exm-window.blp:126 msgid "_No" msgstr "_لا" #: src/exm-window.blp:127 msgid "_Yes" msgstr "_نعم" #: src/exm-window.blp:132 msgid "Unsupported Extension" msgstr "امتداد غير مُتوافِق" #: src/exm-window.blp:133 msgid "" "This extension does not support your GNOME Shell version. It may cause " "errors if installed." msgstr "هذا الامتداد غير مُتوافِق مع إصدار جنوم شل لديك، ولو نُصِّب قد يُسبِّب أخطاء." #: src/exm-window.blp:139 msgid "_Install Anyway" msgstr "_نصِّب على أي حال" #: src/exm-window.blp:140 msgid "_Go Back" msgstr "ا_رجع" #: src/exm-window.c:348 msgid "_Details" msgstr "ا_لتفاصيل" #: src/web/exm-request-handler.c:99 msgid "" "Check GNOME infrastructure status " "and try again later" msgstr "" "تحقق من حالة البنية الأساسية لـ جنوم " "وحاول مرة أخرى لاحقًا" #: src/web/exm-request-handler.c:100 msgid "Check your network status and try again" msgstr "تحقق من حالة الشبكة وحاول مرة أخرى" #~ msgid "Comments" #~ msgstr "التعليقات" #~ msgid "Loading Comments" #~ msgstr "يُحمِّل التعليقات" #~ msgid "User Reviews" #~ msgstr "تعليقات المستخدمين" #~ msgid "No comments yet" #~ msgstr "لا تعليقات حتى الآن" #~ msgid "" #~ "This extension could be activated in session modes such as the login " #~ "screen or the lock screen" #~ msgstr "" #~ "يمكن تنشيط هذا الامتداد في أوضاع الجلسة مثل شاشة تسجيل الدخول أو شاشة " #~ "القفل" #, c-format #~ msgid "%s by %s" #~ msgstr "%s بواسطة %s" #, fuzzy #~| msgid "Updates are available" #~ msgid "Updates Available" #~ msgstr "تُوجَد تحديثات" #~ msgid "Supported" #~ msgstr "مُتوافِق" #~ msgid "Unknown" #~ msgstr "مجهول" #~ msgid "A utility for managing GNOME Shell Extensions" #~ msgstr "أداة إدراة امتدادت جنوم شل" #, c-format #~ msgid "e.g. “%s”" #~ msgstr "مثال «%s»" #~ msgid "This extension is incompatible with your current version of GNOME." #~ msgstr "هذا الامتداد غير مُتوافِق مع إصدار جنوم لديك." #~ msgid "An error occurred." #~ msgstr "حدث خطأ." #~ msgid "Return to view" #~ msgstr "رجوع إلى العرض" #~ msgid "@app_title@" #~ msgstr "@app_title@" #~ msgid "HOTFIX: Fix broken 'recent' and 'popularity' search filters" #~ msgstr "" #~ "الإصلاح العاجل: إصلاح عوامل تصفية البحث \"الحديثة\" و\"الرائجة\" المعطلة" #~ msgid "Various stability and correctness fixes" #~ msgstr "إصلاحات الاستقرار والتصويب المختلفة" #~ msgid "Translation updates" #~ msgstr "تحديثات الترجمة" #~ msgid "Upgrade Assistant scroll fix" #~ msgstr "إصلاح تمرير مساعد الترقية" #~ msgid "Pixel perfect app icon" #~ msgstr "بكسل أيقونة التطبيق المثالي" #~ msgid "Official snap support" #~ msgstr "دعم سناب الرسمي" #~ msgid "Improved error log generation" #~ msgstr "تحسين إنشاء سجل الأخطاء" #~ msgid "Fully adaptive mobile-friendly user interface" #~ msgstr "واجهة مستخدم متوافقة تماما مع الأجهزة المحمولة" #~ msgid "Paginated search results" #~ msgstr "نتائج البحث المرقّمة" #~ msgid "Upgrade Assistant for checking extension compatibility" #~ msgstr "مساعد الترقية للتحقق من توافق الإضافات" #~ msgid "Unsupported extensions are hidden by default" #~ msgstr "يتم إخفاء الإضافات غير المتوافقة بشكل افتراضي" #~ msgid "Overhauled error and crash reporting" #~ msgstr "الإبلاغ عن الأخطاء والأعطال التي تم إصلاحها" #~ msgid "Full-screen image viewer" #~ msgstr "عارض الصور بملء الشاشة" #~ msgid "Handles new gnome-extensions:// URI scheme" #~ msgstr "يتعامل مع مخطط URI gnome-extensions:// الجديد" #~ msgid "Randomised extension suggestions" #~ msgstr "اقتراحات الإضافات العشوائية" #~ msgid "Performance and stability" #~ msgstr "الأداء والاستقرار" #~ msgid "Various bug fixes" #~ msgstr "إصلاحات الأخطاء المختلفة" #~ msgid "Remove release notes dialog" #~ msgstr "إزالة مربع حوار ملاحظات الإصدار" #~ msgid "Fix special characters in installed extension listings" #~ msgstr "إصلاح الأحرف الخاصة في قائمة الإضافات المثبتة" #~ msgid "The second feature update to extension-manager. Highlights include:" #~ msgstr "تحديث الميزات الثاني لمدير الإضافة. ومن أبرز ما جاء فيها:" #~ msgid "View comments and reviews" #~ msgstr "عرض التعليقات والمراجعات" #~ msgid "Support for in-app updates" #~ msgstr "دعم التحديثات داخل التطبيق" #~ msgid "Better handling errors and out-of-date extensions" #~ msgstr "معالجة أفضل للأخطاء والإضافات القديمة" #~ msgid "Allow installing 'unsupported' extensions" #~ msgstr "السماح بتثبيت إضافات \"غير مدعومة\"" #~ msgid "Display release notes on first run" #~ msgstr "عرض ملاحظات الإصدار عند التشغيل الأول" #~ msgid "New app icon" #~ msgstr "أيقونة التطبيق الجديد" #~ msgid "Optionally sort extensions by enabled status" #~ msgstr "اختياريا فرز الإضافات حسب حالة التمكين" #~ msgid "Fix special characters in search results" #~ msgstr "إصلاح الأحرف الخاصة في نتائج البحث" #~ msgid "Fixes a crash that sometimes occurs while uninstalling an extension" #~ msgstr "" #~ "يعمل على إصلاح العطل الذي يحدث أحيانًا أثناء إلغاء تثبيت إحدى الإضافات" #~ msgid "The first feature update to extension-manager. Highlights include:" #~ msgstr "أول تحديث للميزة لمدير الإضافة. ومن أبرز ما جاء فيها:" #~ msgid "Dark theme and support for overriding the system colour scheme" #~ msgstr "مظهر داكن ودعم لتجاوز نظام ألوان النظام" #~ msgid "Shows screenshots in extension listings" #~ msgstr "يظهر لقطات في قوائم الإضافة" #~ msgid "Shell version compatibility check" #~ msgstr "التحقق من توافق إصدار شل" #~ msgid "Localised into seven languages" #~ msgstr "مترجمة إلى سبع لغات" #~ msgid "Global extension on/off toggle" #~ msgstr "تبديل تشغيل / إيقاف الإضافة العام" #~ msgid "Displays user and system extensions separately" #~ msgstr "يعرض إضافات المستخدم والنظام بشكل منفصل" #~ msgid "Extension Manager (Development)" #~ msgstr "مدير الإضافة (التطوير)" extension-manager-0.6.3/po/be.po000066400000000000000000000531711477302130300165170ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the extension-manager package. # Troja , 2024. # "Troj@" , 2025. msgid "" msgstr "" "Project-Id-Version: extension-manager\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-03-06 16:36+0000\n" "PO-Revision-Date: 2025-03-01 18:46+0000\n" "Last-Translator: \"Troj@\" \n" "Language-Team: Belarusian \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: Weblate 5.10.3-dev\n" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:2 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:6 #: src/exm-window.blp:7 msgid "Extension Manager" msgstr "Менеджэр пашырэнняў" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:11 msgid "Manage GNOME Shell Extensions" msgstr "Кіраванне пашырэннямі абалонкі GNOME" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #. Make sure to leave the original strings and add your translations afterwards, so that users can search both in English and your language. #: data/com.mattjakeman.ExtensionManager.desktop.in.in:14 msgid "extension;manager;shell;" msgstr "пашырэнне; менеджэр; абалонка;" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:7 msgid "Browse, install, and manage GNOME Shell Extensions" msgstr "Праглядайце, усталёўвайце і кіруйце пашырэннямі абалонкі GNOME" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:13 msgid "A utility for browsing and installing GNOME Shell Extensions." msgstr "Утыліта для прагляду і ўсталявання пашырэнняў абалонкі GNOME." #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:14 msgid "Features:" msgstr "Асаблівасці:" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:16 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:26 msgid "Browse extensions.gnome.org right inside the app" msgstr "Прагляд сайта extensions.gnome.org прама ў дадатку" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:17 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:22 msgid "Manage the extensions you already have installed" msgstr "Кіруйце пашырэннямі, якія вы ўжо ўсталявалі" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:30 msgid "See all the details of your extensions" msgstr "Паглядзець ўсе дэталі вашых пашырэнняў" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:34 msgid "Check your extensions compatibility with the next version of GNOME" msgstr "Праверыць сумяшчальнасць вашых пашырэнняў з наступнай версіяй GNOME" #: src/exm-application.c:201 msgid "Browse, install, and manage GNOME Shell Extensions." msgstr "Праглядайце, усталёўвайце і кіруйце пашырэннямі абалонкі GNOME." #. Translators: Use 'Name email@domain.com' or 'Name https://website.example' (without single quotes). Do not delete existing names, write yours on a new line. #: src/exm-application.c:204 msgid "translator-credits" msgstr "Anton Veratsenikau" #: src/exm-browse-page.blp:16 msgid "Search for Extensions" msgstr "Пошук пашырэнняў" #: src/exm-browse-page.blp:17 msgid "" "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell Extensions" msgstr "" "Увядзіце ключавое слова для пошуку пашырэнняў абалонкі GNOME на 'extensions." "gnome.org'" #: src/exm-browse-page.blp:47 msgid "Relevance" msgstr "Па актуальнасці" #: src/exm-browse-page.blp:48 msgctxt "Sort search results" msgid "Downloads" msgstr "Па колькасці загрузак" #: src/exm-browse-page.blp:49 msgid "Recent" msgstr "Па даце абнаўлення" #: src/exm-browse-page.blp:50 src/exm-detail-view.blp:113 msgid "Name" msgstr "Па назве" #: src/exm-browse-page.blp:57 msgid "Sort search results" msgstr "Сартаваць вынікі пошуку" #: src/exm-browse-page.blp:103 msgid "_Load More Results" msgstr "_Загрузіць больш вынікаў" #: src/exm-browse-page.blp:137 src/exm-installed-page.blp:123 msgid "No Results Found" msgstr "Нічога не знойдзена" #: src/exm-browse-page.blp:144 msgid "Try a different search" msgstr "Паспрабуйце іншы пошук" #: src/exm-browse-page.blp:178 src/exm-comment-dialog.blp:34 #: src/exm-detail-view.blp:49 src/exm-detail-view.blp:291 #: src/exm-upgrade-assistant.blp:100 msgid "Connection Error" msgstr "Памылка злучэння" #: src/exm-comment-dialog.blp:13 src/exm-detail-view.blp:248 msgid "Reviews and Comments" msgstr "Водгукі і каментары" #: src/exm-comment-dialog.blp:25 msgid "Loading" msgstr "Загрузка" #: src/exm-comment-tile.blp:30 src/exm-detail-view.blp:127 msgid "Author" msgstr "Аўтар" #: src/exm-detail-view.blp:40 msgid "Loading Details" msgstr "Загрузка дэталяў" #: src/exm-detail-view.blp:59 src/exm-window.c:347 msgid "An Error Occurred" msgstr "Адбылася памылка" #: src/exm-detail-view.blp:60 msgid "No extension details available" msgstr "Няма звестак аб пашырэнні" #: src/exm-detail-view.blp:154 msgid "Enlarge Image" msgstr "Павялічыць малюнак" #: src/exm-detail-view.blp:172 src/exm-extension-row.blp:89 msgid "Description" msgstr "Апісанне" #: src/exm-detail-view.blp:195 msgid "Links" msgstr "Спасылкі" #: src/exm-detail-view.blp:203 msgid "Homepage" msgstr "Хатняя старонка" #: src/exm-detail-view.blp:219 msgid "Donate" msgstr "Ахвяраваць" #: src/exm-detail-view.blp:228 msgid "View on Extensions" msgstr "Праглядзець гэтае пашырэнне на сайце Extensions" #: src/exm-detail-view.blp:271 msgid "Reviews and comments are disabled for this extension" msgstr "Водгукі і каментарыі для гэтага пашырэння адключаны" #: src/exm-detail-view.blp:314 msgid "There are no reviews or comments" msgstr "Няма водгукаў і каментароў" #: src/exm-detail-view.blp:343 msgid "_Show All" msgstr "_Паказаць усе" #. Translators: '%s' = extension name #: src/exm-detail-view.c:445 #, c-format msgid "%s Icon" msgstr "%s Значок" #. Translators: '%s' = extension name #: src/exm-detail-view.c:478 #, c-format msgid "%s Screenshot" msgstr "%s Скрыншот" #: src/exm-error-dialog.blp:7 msgid "Error Report" msgstr "Справаздача пра памылку" #: src/exm-error-dialog.blp:22 msgid "An unexpected error occurred in Extension Manager" msgstr "Адбылася нечаканая памылка ў Менеджэра пашырэнняў" #: src/exm-error-dialog.blp:36 msgid "Copy to Clipboard" msgstr "Капіяваць у буфер абмену" #: src/exm-error-dialog.blp:77 msgid "_New Issue" msgstr "_Новая праблема" #. Success indicator #: src/exm-error-dialog.c:125 src/exm-upgrade-assistant.c:347 msgid "Copied" msgstr "Скапіравана" #: src/exm-error-dialog.c:173 msgid "Please open a new issue and attach the following information:" msgstr "" "Калі ласка, адкрыйце новую праюлему і прыкладзеце наступную інфармацыю:" #. Translators: '%s' = Name of Distributor (e.g. "Packager123") #: src/exm-error-dialog.c:177 #, c-format msgid "" "You are using a third-party build of Extension Manager. Please contact the package distributor (%s) first before " "filing an issue. Be sure to attach the following information:" msgstr "" "Вы выкарыстоўваеце іншую зборку Менеджэра пашырэнняў. Калі ласка, спачатку звяжыцеся з дыстрыб'ютарам пакета (%s), " "перш чым падаць заяву. Абавязкова прыкладзеце наступную інфармацыю:" #. Translators: Button's tooltip to open extension's preferences dialog #: src/exm-extension-row.blp:28 msgid "Open extension preferences" msgstr "Адкрыйце налады пашырэння" #. Translators: Icon's tooltip when an extension has an error #: src/exm-extension-row.blp:46 msgid "An error occurred while loading this extension" msgstr "Падчас загрузкі гэтага пашырэння адбылася памылка" #. Translators: Icon's tooltip when an extension is incompatible #: src/exm-extension-row.blp:63 src/exm-install-button.c:117 msgid "This extension is incompatible with your current version of GNOME" msgstr "Гэта пашырэнне несумяшчальна з вашай бягучай версіяй GNOME" #. Translators: Icon's tooltip when an extension update is available #: src/exm-extension-row.blp:80 msgid "A newer version of this extension is available" msgstr "Даступная больш новая версія гэтага пашырэння" #: src/exm-extension-row.blp:98 src/exm-info-bar.blp:50 msgid "Version" msgstr "Версія" #: src/exm-extension-row.blp:107 msgid "Session Modes" msgstr "Рэжымы сесіі" #: src/exm-extension-row.blp:137 msgid "Error" msgstr "Памылка" #: src/exm-extension-row.blp:158 msgid "See Details" msgstr "Паглядзець падрабязнасці" #: src/exm-extension-row.blp:169 msgid "Remove…" msgstr "Выдаліць…" #: src/exm-extension-row.c:175 msgid "Unlock Dialog" msgstr "Акно разблакіроўкі" #. Translators: GNOME Display Manager #: src/exm-extension-row.c:181 msgid "GDM" msgstr "GDM" #. Translators: Label when an extension runs on both, login and lock screens #: src/exm-extension-row.c:189 msgid "" "This extension will run while the screen is locked and no user is logged in" msgstr "" "Гэта пашырэнне будзе працаваць нават пры заблакіраваным экране і без ўваходу " "карыстальніка" #. Translators: Label when an extension runs on the lock screen #: src/exm-extension-row.c:194 msgid "This extension will run while the screen is locked" msgstr "Гэта пашырэнне будзе працаваць, нават калі экран заблакіраваны" #. Translators: Label when an extension runs on the login screen #: src/exm-extension-row.c:199 msgid "This extension will run while no user is logged in" msgstr "" "Гэта пашырэнне будзе працаваць, нават калі карыстальнік не ўвайшоў у сістэму" #: src/exm-help-overlay.blp:11 msgctxt "shortcut window" msgid "General" msgstr "Асноўные" #: src/exm-help-overlay.blp:14 msgctxt "shortcut window" msgid "Show Installed Page" msgstr "Паказаць старонку \"Усталяваныя\"" #: src/exm-help-overlay.blp:19 msgctxt "shortcut window" msgid "Show Browse Page" msgstr "Паказаць старонку \"Пошук\"" #: src/exm-help-overlay.blp:24 msgctxt "shortcut window" msgid "Toggle Search" msgstr "Пераключыць пошук" #: src/exm-help-overlay.blp:29 msgctxt "shortcut window" msgid "Show Keyboard Shortcuts" msgstr "Паказаць спалучэнні клавіш" #: src/exm-help-overlay.blp:34 msgctxt "shortcut window" msgid "Close Window" msgstr "Зачыніць акно" #: src/exm-help-overlay.blp:39 msgctxt "shortcut window" msgid "Quit" msgstr "Выйсці" #: src/exm-help-overlay.blp:45 msgctxt "shortcut window" msgid "Screenshot View" msgstr "Прагляд скрыншотаў" #: src/exm-help-overlay.blp:48 src/exm-help-overlay.blp:63 msgctxt "shortcut window" msgid "Zoom In" msgstr "Павялічыць" #: src/exm-help-overlay.blp:53 src/exm-help-overlay.blp:68 msgctxt "shortcut window" msgid "Zoom Out" msgstr "Зменшыць" #: src/exm-help-overlay.blp:58 msgctxt "shortcut window" msgid "Reset Zoom" msgstr "Скінуць маштаб" #: src/exm-info-bar.blp:28 msgctxt "Number of downloads" msgid "Downloads" msgstr "Загрузак" #: src/exm-info-bar.c:107 msgid "Unsupported" msgstr "Не падтрымліваецца" #: src/exm-install-button.c:127 msgid "Install…" msgstr "Усталяваць…" #: src/exm-install-button.c:132 msgid "Installing" msgstr "Усталяванне" #: src/exm-install-button.c:136 msgctxt "State" msgid "Installed" msgstr "Усталявана" #: src/exm-install-button.c:140 msgid "Unsupported…" msgstr "Не падтрымліваецца…" #: src/exm-installed-page.blp:16 msgid "_Log Out…" msgstr "_Выйсці…" #: src/exm-installed-page.blp:28 msgid "Use Extensions" msgstr "Выкарыстоўваць пашырэння" #: src/exm-installed-page.blp:29 msgid "Extensions can cause performance and stability issues" msgstr "Пашырэнні могуць выклікаць праблемы з прадукцыйнасцю і стабільнасцю" #: src/exm-installed-page.blp:34 src/exm-upgrade-assistant.blp:133 msgid "User-Installed Extensions" msgstr "Пашырэнні, устаноўленыя карыстальнікам" #: src/exm-installed-page.blp:51 src/exm-upgrade-assistant.blp:150 msgid "No User Extensions Installed" msgstr "Карыстальніцкія пашырэнні не ўсталяваны" #: src/exm-installed-page.blp:55 msgid "Browse" msgstr "Пошук" #: src/exm-installed-page.blp:69 src/exm-upgrade-assistant.blp:160 msgid "System Extensions" msgstr "Сістэмныя пашырэнні" #: src/exm-installed-page.blp:86 src/exm-upgrade-assistant.blp:177 msgid "No System Extensions Installed" msgstr "Сістэмныя пашырэнні не ўсталяваны" #. Translators: Text announced by screen readers when interacting with the list of search results #: src/exm-installed-page.blp:111 msgid "Search Results" msgstr "Вынікі пошуку" #: src/exm-installed-page.blp:124 msgid "Try a different search or search online" msgstr "Паспрабуйце іншы пошук або пошук у інтэрнэце" #: src/exm-installed-page.blp:131 msgid "_Search Online" msgstr "_Пошук у Інтэрнэце" #. Translators: '%d' = number of extensions that will be updated #: src/exm-installed-page.c:298 #, c-format msgid "%d extension will be updated on next login" msgid_plural "%d extensions will be updated on next login" msgstr[0] "%d пашырэнне будзе абноўлена пры наступным уваходзе" msgstr[1] "%d пашырэння будуць абноўлены пры наступным уваходзе" msgstr[2] "%d пашырэнняў будуць абноўлены пры наступным уваходзе" #: src/exm-rating.c:142 #, c-format msgid "%i Star" msgid_plural "%i Stars" msgstr[0] "%i Зорка" msgstr[1] "%i Зоркі" msgstr[2] "%i Зорак" #. Translators: Button's tooltip to zoom out screenshots #: src/exm-screenshot-view.blp:37 msgid "Zoom Out" msgstr "Зменшыць" #. Translators: Button's tooltip to zoom in screenshots #: src/exm-screenshot-view.blp:51 msgid "Zoom In" msgstr "Павялічыць" #: src/exm-upgrade-assistant.blp:11 msgid "Upgrade Assistant" msgstr "Памочнік па абнаўленні" #: src/exm-upgrade-assistant.blp:66 msgid "_Check Compatibility" msgstr "_Праверыць сумяшчальнасць" #: src/exm-upgrade-assistant.blp:189 msgid "_Copy to Clipboard" msgstr "_Капіяваць у буфер абмену" #: src/exm-upgrade-assistant.c:188 #, c-format msgid "Checked %d/%d Extensions" msgstr "Праверана %d з %d пашырэнняў" #. Set percentage text #: src/exm-upgrade-assistant.c:207 #, c-format msgid "%d%% Compatible" msgstr "%d%% сумяшчальна" #: src/exm-upgrade-assistant.c:223 #, c-format msgid "" "GNOME %s supports %d out of %d of the extensions currently " "installed on the system" msgstr "" "GNOME %s падтрымлівае %d з %d пашырэнняў, усталяваных на " "дадзены момант у сістэме" #. Translators: Icon's tooltip when an extension is compatible #: src/exm-upgrade-assistant.c:503 msgid "A compatible version of the extension exists" msgstr "Існуе сумяшчальная версія пашырэння" #. Translators: Icon's tooltip when an extension is not compatible #: src/exm-upgrade-assistant.c:510 msgid "No compatible version of the extension exists" msgstr "Не існуе сумяшчальнай версіі пашырэння" #. Translators: Icon's tooltip when an extension compatibility is unknown #: src/exm-upgrade-assistant.c:517 msgid "" "This extension is not hosted on extensions.gnome.org. Its compatibility " "cannot be determined." msgstr "" "Гэта пашырэнне не размешчана на extensions.gnome.org. Немагчыма вызначыць " "яго сумяшчальнасць." #: src/exm-upgrade-assistant.c:608 #, c-format msgid "" "You are currently running GNOME %s. Select a version of GNOME below " "and check whether your extensions will continue to be available." msgstr "" "Вы зараз выкарыстоўваеце GNOME %s. Выберыце версію GNOME ніжэй і " "праверце, ці застануцца даступнымі вашы пашырэнні." #. Translators: Tooltip of the search icon in the header bar #: src/exm-window.blp:39 msgid "Search Installed Extensions" msgstr "Пошук сярод усталяваных пашырэнняў" #: src/exm-window.blp:48 msgid "Main Menu" msgstr "Галоўнае меню" #: src/exm-window.blp:59 msgid "Search for installed extensions" msgstr "Пошук усталяваных пашырэнняў" #: src/exm-window.blp:71 msgctxt "Navigation" msgid "_Installed" msgstr "_Устаноўленыя" #: src/exm-window.blp:80 msgctxt "Navigation" msgid "_Browse" msgstr "_Пошук" #. Translators: the character preceded by "_" should not be the same #. as others in the same menu #: src/exm-window.blp:108 msgid "Sort _Enabled First" msgstr "Сартаваць _уключаныя пашырэнні" #: src/exm-window.blp:109 msgid "_Show Unsupported" msgstr "_Паказаць непадтрымліваемыя" #: src/exm-window.blp:113 msgid "_Upgrade Assistant" msgstr "_Памочнік па абнаўленні" #: src/exm-window.blp:114 msgid "_Keyboard Shortcuts" msgstr "_Спалучэнні клавіш" #: src/exm-window.blp:115 msgid "_About Extension Manager" msgstr "_Пра Менеджэр пашырэнняў" #: src/exm-window.blp:120 msgid "Uninstall Extension?" msgstr "Выдаліць пашырэнне?" #: src/exm-window.blp:121 msgid "" "The extension's features and functionality will no longer be accessible. Are " "you sure you want to uninstall?" msgstr "" "Функцыі і магчымасці пашырэння больш не будуць даступныя. Вы ўпэўненыя, што " "хочаце выдаліць пашырэнне?" #: src/exm-window.blp:126 msgid "_No" msgstr "_Не" #: src/exm-window.blp:127 msgid "_Yes" msgstr "_Так" #: src/exm-window.blp:132 msgid "Unsupported Extension" msgstr "Пашырэнне не падтрымліваецца" #: src/exm-window.blp:133 msgid "" "This extension does not support your GNOME Shell version. It may cause " "errors if installed." msgstr "" "Гэта пашырэнне не падтрымлівае вашу версію абалонкі GNOME. Пры ўсталёўцы " "гэта можа выклікаць памылкі." #: src/exm-window.blp:139 msgid "_Install Anyway" msgstr "_У любым выпадку ўсталяваць" #: src/exm-window.blp:140 msgid "_Go Back" msgstr "_Павярнуцца назад" #: src/exm-window.c:348 msgid "_Details" msgstr "_Падрабязнасці" #: src/web/exm-request-handler.c:99 msgid "" "Check GNOME infrastructure status " "and try again later" msgstr "" "Праверце стан інфраструктуры GNOME і " "паўтарыце спробу пазней" #: src/web/exm-request-handler.c:100 msgid "Check your network status and try again" msgstr "Праверце стан сеткі і паўтарыце спробу" #~ msgid "Comments" #~ msgstr "Каментарыі" #~ msgid "User Reviews" #~ msgstr "Водгукі карыстальнікаў" #~ msgid "No comments yet" #~ msgstr "Каментароў пакуль няма" #~ msgid "" #~ "This extension could be activated in session modes such as the login " #~ "screen or the lock screen" #~ msgstr "" #~ "Гэта пашырэнне можа быць актывавана ў такіх рэжымах сеансу, як экран " #~ "ўваходу або экран блакіроўкі" #, c-format #~ msgid "%s by %s" #~ msgstr "%s ад %s" #~ msgid "Updates Available" #~ msgstr "Даступныя абнаўленні" #~ msgid "Supported" #~ msgstr "Падтрымліваецца" #~ msgid "Unknown" #~ msgstr "Невядома" #~ msgid "A utility for managing GNOME Shell Extensions" #~ msgstr "Утыліта для кіравання пашырэннямі абалонкі GNOME" extension-manager-0.6.3/po/bg.po000066400000000000000000000530011477302130300165110ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the extension-manager package. # trunars , 2024, 2025. msgid "" msgstr "" "Project-Id-Version: extension-manager\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-03-06 16:36+0000\n" "PO-Revision-Date: 2025-03-02 13:35+0000\n" "Last-Translator: trunars \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: Weblate 5.10.3-dev\n" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:2 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:6 #: src/exm-window.blp:7 msgid "Extension Manager" msgstr "Мениджър на разширения" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:11 msgid "Manage GNOME Shell Extensions" msgstr "Управление на разширенията на GNOME Shell" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #. Make sure to leave the original strings and add your translations afterwards, so that users can search both in English and your language. #: data/com.mattjakeman.ExtensionManager.desktop.in.in:14 msgid "extension;manager;shell;" msgstr "разширение;мениджър;обвивка;" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:7 msgid "Browse, install, and manage GNOME Shell Extensions" msgstr "Разглеждане, инсталиране и управление на разширенията на GNOME Shell" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:13 msgid "A utility for browsing and installing GNOME Shell Extensions." msgstr "" "Помощна програма за разглеждане и инсталиране на разширенията на GNOME Shell." #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:14 msgid "Features:" msgstr "Характеристики:" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:16 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:26 msgid "Browse extensions.gnome.org right inside the app" msgstr "Разглеждане на extensions.gnome.org директно в приложението" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:17 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:22 msgid "Manage the extensions you already have installed" msgstr "Управлявайте разширенията, които вече сте инсталирали" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:30 msgid "See all the details of your extensions" msgstr "Виж всички подробности за вашите разширения" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:34 msgid "Check your extensions compatibility with the next version of GNOME" msgstr "" "Провери съвместимостта на разширенията си със следващата версия на GNOME" #: src/exm-application.c:201 msgid "Browse, install, and manage GNOME Shell Extensions." msgstr "Разглеждане, инсталиране и управление на разширенията на GNOME Shell." #. Translators: Use 'Name email@domain.com' or 'Name https://website.example' (without single quotes). Do not delete existing names, write yours on a new line. #: src/exm-application.c:204 msgid "translator-credits" msgstr "trunars" #: src/exm-browse-page.blp:16 msgid "Search for Extensions" msgstr "Търсене на разширения" #: src/exm-browse-page.blp:17 msgid "" "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell Extensions" msgstr "" "Въведете ключова дума за търсене в 'extensions.gnome.org' за разширения на " "GNOME Shell" #: src/exm-browse-page.blp:47 msgid "Relevance" msgstr "Уместност" #: src/exm-browse-page.blp:48 msgctxt "Sort search results" msgid "Downloads" msgstr "Изтегляния" #: src/exm-browse-page.blp:49 msgid "Recent" msgstr "Скорошни" #: src/exm-browse-page.blp:50 src/exm-detail-view.blp:113 msgid "Name" msgstr "Име" #: src/exm-browse-page.blp:57 msgid "Sort search results" msgstr "Сортирай резултатите от търсенето" #: src/exm-browse-page.blp:103 msgid "_Load More Results" msgstr "_Зареди още резултати" #: src/exm-browse-page.blp:137 src/exm-installed-page.blp:123 msgid "No Results Found" msgstr "Няма намерени резултати" #: src/exm-browse-page.blp:144 msgid "Try a different search" msgstr "Опитайте различно търсене" #: src/exm-browse-page.blp:178 src/exm-comment-dialog.blp:34 #: src/exm-detail-view.blp:49 src/exm-detail-view.blp:291 #: src/exm-upgrade-assistant.blp:100 msgid "Connection Error" msgstr "Грешка при свързване" #: src/exm-comment-dialog.blp:13 src/exm-detail-view.blp:248 msgid "Reviews and Comments" msgstr "Отзиви и коментари" #: src/exm-comment-dialog.blp:25 msgid "Loading" msgstr "Зареждане" #: src/exm-comment-tile.blp:30 src/exm-detail-view.blp:127 msgid "Author" msgstr "Автор" #: src/exm-detail-view.blp:40 msgid "Loading Details" msgstr "Зареждане на подробности" #: src/exm-detail-view.blp:59 src/exm-window.c:347 msgid "An Error Occurred" msgstr "Възникна грешка" #: src/exm-detail-view.blp:60 msgid "No extension details available" msgstr "Няма налични подробности за разширението" #: src/exm-detail-view.blp:154 msgid "Enlarge Image" msgstr "Увеличи изображението" #: src/exm-detail-view.blp:172 src/exm-extension-row.blp:89 msgid "Description" msgstr "Описание" #: src/exm-detail-view.blp:195 msgid "Links" msgstr "Връзки" #: src/exm-detail-view.blp:203 msgid "Homepage" msgstr "Домашна страница" #: src/exm-detail-view.blp:219 msgid "Donate" msgstr "Дарение" #: src/exm-detail-view.blp:228 msgid "View on Extensions" msgstr "Преглед на разширения" #: src/exm-detail-view.blp:271 msgid "Reviews and comments are disabled for this extension" msgstr "Отзивите и коментарите са деактивирани за това разширение" #: src/exm-detail-view.blp:314 msgid "There are no reviews or comments" msgstr "Няма отзиви или коментари" #: src/exm-detail-view.blp:343 msgid "_Show All" msgstr "_Покажи всички" #. Translators: '%s' = extension name #: src/exm-detail-view.c:445 #, c-format msgid "%s Icon" msgstr "%s Икона" #. Translators: '%s' = extension name #: src/exm-detail-view.c:478 #, c-format msgid "%s Screenshot" msgstr "%s Екранна снимка" #: src/exm-error-dialog.blp:7 msgid "Error Report" msgstr "Доклад за грешка" #: src/exm-error-dialog.blp:22 msgid "An unexpected error occurred in Extension Manager" msgstr "Възникна неочаквана грешка в Мениджър на разширения" #: src/exm-error-dialog.blp:36 msgid "Copy to Clipboard" msgstr "Копирай в клипборда" #: src/exm-error-dialog.blp:77 msgid "_New Issue" msgstr "_Нов брой" #. Success indicator #: src/exm-error-dialog.c:125 src/exm-upgrade-assistant.c:347 msgid "Copied" msgstr "Копирано" #: src/exm-error-dialog.c:173 msgid "Please open a new issue and attach the following information:" msgstr "Моля, отворете нова тема и прикачете следната информация:" #. Translators: '%s' = Name of Distributor (e.g. "Packager123") #: src/exm-error-dialog.c:177 #, c-format msgid "" "You are using a third-party build of Extension Manager. Please contact the package distributor (%s) first before " "filing an issue. Be sure to attach the following information:" msgstr "" "Използвате компилация на трета страна на Мениджър на разширения. Моля, първо се свържете с дистрибутора на пакета (%s), " "преди да подадете сигнал. Не забравяйте да прикачите следната информация:" #. Translators: Button's tooltip to open extension's preferences dialog #: src/exm-extension-row.blp:28 msgid "Open extension preferences" msgstr "Отвори предпочитания за разширение" #. Translators: Icon's tooltip when an extension has an error #: src/exm-extension-row.blp:46 msgid "An error occurred while loading this extension" msgstr "Възникна грешка при зареждането на това разширение" #. Translators: Icon's tooltip when an extension is incompatible #: src/exm-extension-row.blp:63 src/exm-install-button.c:117 msgid "This extension is incompatible with your current version of GNOME" msgstr "Това разширение е несъвместимо с текущата ви версия на GNOME" #. Translators: Icon's tooltip when an extension update is available #: src/exm-extension-row.blp:80 msgid "A newer version of this extension is available" msgstr "Налична е по-нова версия на това разширение" #: src/exm-extension-row.blp:98 src/exm-info-bar.blp:50 msgid "Version" msgstr "Версия" #: src/exm-extension-row.blp:107 msgid "Session Modes" msgstr "Режими на сесия" #: src/exm-extension-row.blp:137 msgid "Error" msgstr "Грешка" #: src/exm-extension-row.blp:158 msgid "See Details" msgstr "Виж подробности" #: src/exm-extension-row.blp:169 msgid "Remove…" msgstr "Премахване…" #: src/exm-extension-row.c:175 msgid "Unlock Dialog" msgstr "Отключване на диалог" #. Translators: GNOME Display Manager #: src/exm-extension-row.c:181 msgid "GDM" msgstr "GDM" #. Translators: Label when an extension runs on both, login and lock screens #: src/exm-extension-row.c:189 msgid "" "This extension will run while the screen is locked and no user is logged in" msgstr "" "Това разширение ще се изпълнява, когато екранът е заключен и никой " "потребител не е влязъл в системата" #. Translators: Label when an extension runs on the lock screen #: src/exm-extension-row.c:194 msgid "This extension will run while the screen is locked" msgstr "Това разширение ще се изпълнява, докато екранът е заключен" #. Translators: Label when an extension runs on the login screen #: src/exm-extension-row.c:199 msgid "This extension will run while no user is logged in" msgstr "" "Това разширение ще се изпълнява, докато никой потребител не е влязъл в " "системата" #: src/exm-help-overlay.blp:11 msgctxt "shortcut window" msgid "General" msgstr "Общи" #: src/exm-help-overlay.blp:14 msgctxt "shortcut window" msgid "Show Installed Page" msgstr "Покажи страница за инсталиране" #: src/exm-help-overlay.blp:19 msgctxt "shortcut window" msgid "Show Browse Page" msgstr "Покажи страница за разглеждане" #: src/exm-help-overlay.blp:24 msgctxt "shortcut window" msgid "Toggle Search" msgstr "Превключване на търсенето" #: src/exm-help-overlay.blp:29 msgctxt "shortcut window" msgid "Show Keyboard Shortcuts" msgstr "Покажи клавишни комбинации" #: src/exm-help-overlay.blp:34 msgctxt "shortcut window" msgid "Close Window" msgstr "Затвори прозореца" #: src/exm-help-overlay.blp:39 msgctxt "shortcut window" msgid "Quit" msgstr "Напусни" #: src/exm-help-overlay.blp:45 msgctxt "shortcut window" msgid "Screenshot View" msgstr "Преглед на екранна снимка" #: src/exm-help-overlay.blp:48 src/exm-help-overlay.blp:63 msgctxt "shortcut window" msgid "Zoom In" msgstr "Увеличаване" #: src/exm-help-overlay.blp:53 src/exm-help-overlay.blp:68 msgctxt "shortcut window" msgid "Zoom Out" msgstr "Намаляване" #: src/exm-help-overlay.blp:58 msgctxt "shortcut window" msgid "Reset Zoom" msgstr "Нулирай мащаба" #: src/exm-info-bar.blp:28 msgctxt "Number of downloads" msgid "Downloads" msgstr "Изтегляния" #: src/exm-info-bar.c:107 msgid "Unsupported" msgstr "Не се поддържа" #: src/exm-install-button.c:127 msgid "Install…" msgstr "Инсталиране…" #: src/exm-install-button.c:132 msgid "Installing" msgstr "Инсталиране" #: src/exm-install-button.c:136 msgctxt "State" msgid "Installed" msgstr "Инсталирано" #: src/exm-install-button.c:140 msgid "Unsupported…" msgstr "Не се поддържа…" #: src/exm-installed-page.blp:16 msgid "_Log Out…" msgstr "_Изход…" #: src/exm-installed-page.blp:28 msgid "Use Extensions" msgstr "Използвай разширения" #: src/exm-installed-page.blp:29 msgid "Extensions can cause performance and stability issues" msgstr "" "Разширенията могат да причинят проблеми с производителността и стабилността" #: src/exm-installed-page.blp:34 src/exm-upgrade-assistant.blp:133 msgid "User-Installed Extensions" msgstr "Разширения, инсталирани от потребителя" #: src/exm-installed-page.blp:51 src/exm-upgrade-assistant.blp:150 msgid "No User Extensions Installed" msgstr "Няма инсталирани потребителски разширения" #: src/exm-installed-page.blp:55 msgid "Browse" msgstr "Разгледай" #: src/exm-installed-page.blp:69 src/exm-upgrade-assistant.blp:160 msgid "System Extensions" msgstr "Системни разширения" #: src/exm-installed-page.blp:86 src/exm-upgrade-assistant.blp:177 msgid "No System Extensions Installed" msgstr "Няма инсталирани системни разширения" #. Translators: Text announced by screen readers when interacting with the list of search results #: src/exm-installed-page.blp:111 msgid "Search Results" msgstr "Резултати от търсенето" #: src/exm-installed-page.blp:124 msgid "Try a different search or search online" msgstr "Опитайте различно търсене или потърсете онлайн" #: src/exm-installed-page.blp:131 msgid "_Search Online" msgstr "_Онлайн търсене" #. Translators: '%d' = number of extensions that will be updated #: src/exm-installed-page.c:298 #, c-format msgid "%d extension will be updated on next login" msgid_plural "%d extensions will be updated on next login" msgstr[0] "%d разширение ще бъде актуализирано при следващо влизане" msgstr[1] "%d разширения ще бъдат актуализирани при следващо влизане" #: src/exm-rating.c:142 #, c-format msgid "%i Star" msgid_plural "%i Stars" msgstr[0] "%i Звезда" msgstr[1] "%i Звезди" #. Translators: Button's tooltip to zoom out screenshots #: src/exm-screenshot-view.blp:37 msgid "Zoom Out" msgstr "Намаляване" #. Translators: Button's tooltip to zoom in screenshots #: src/exm-screenshot-view.blp:51 msgid "Zoom In" msgstr "Увеличаване" #: src/exm-upgrade-assistant.blp:11 msgid "Upgrade Assistant" msgstr "Помощник за надграждане" #: src/exm-upgrade-assistant.blp:66 msgid "_Check Compatibility" msgstr "_Провери съвместимостта" #: src/exm-upgrade-assistant.blp:189 msgid "_Copy to Clipboard" msgstr "_Копирай в клипборда" #: src/exm-upgrade-assistant.c:188 #, c-format msgid "Checked %d/%d Extensions" msgstr "Проверени %d/%d разширения" #. Set percentage text #: src/exm-upgrade-assistant.c:207 #, c-format msgid "%d%% Compatible" msgstr "%d%% Съвместими" #: src/exm-upgrade-assistant.c:223 #, c-format msgid "" "GNOME %s supports %d out of %d of the extensions currently " "installed on the system" msgstr "" "GNOME %s поддържа %d от %d те разширения, инсталирани в " "момента на системата" #. Translators: Icon's tooltip when an extension is compatible #: src/exm-upgrade-assistant.c:503 msgid "A compatible version of the extension exists" msgstr "Съществува съвместима версия на разширението" #. Translators: Icon's tooltip when an extension is not compatible #: src/exm-upgrade-assistant.c:510 msgid "No compatible version of the extension exists" msgstr "Не съществува съвместима версия на разширението" #. Translators: Icon's tooltip when an extension compatibility is unknown #: src/exm-upgrade-assistant.c:517 msgid "" "This extension is not hosted on extensions.gnome.org. Its compatibility " "cannot be determined." msgstr "" "Това разширение не се хоства на extensions.gnome.org. Неговата съвместимост " "не може да бъде определена." #: src/exm-upgrade-assistant.c:608 #, c-format msgid "" "You are currently running GNOME %s. Select a version of GNOME below " "and check whether your extensions will continue to be available." msgstr "" "В момента работите с GNOME %s. Изберете версия на GNOME по-долу и " "проверете дали вашите разширения ще продължат да бъдат налични." #. Translators: Tooltip of the search icon in the header bar #: src/exm-window.blp:39 msgid "Search Installed Extensions" msgstr "Търсене на инсталирани разширения" #: src/exm-window.blp:48 msgid "Main Menu" msgstr "Главно меню" #: src/exm-window.blp:59 msgid "Search for installed extensions" msgstr "Търсене за инсталирани разширения" #: src/exm-window.blp:71 msgctxt "Navigation" msgid "_Installed" msgstr "_Инсталирани" #: src/exm-window.blp:80 msgctxt "Navigation" msgid "_Browse" msgstr "_Разгледай" #. Translators: the character preceded by "_" should not be the same #. as others in the same menu #: src/exm-window.blp:108 msgid "Sort _Enabled First" msgstr "Сортирай _Първо активирани" #: src/exm-window.blp:109 msgid "_Show Unsupported" msgstr "_Покажи неподдържани" #: src/exm-window.blp:113 msgid "_Upgrade Assistant" msgstr "_Помощник за надграждане" #: src/exm-window.blp:114 msgid "_Keyboard Shortcuts" msgstr "_Клавишни комбинации" #: src/exm-window.blp:115 msgid "_About Extension Manager" msgstr "_Относно мениджъра на разширения" #: src/exm-window.blp:120 msgid "Uninstall Extension?" msgstr "Деинсталирай разширение?" #: src/exm-window.blp:121 msgid "" "The extension's features and functionality will no longer be accessible. Are " "you sure you want to uninstall?" msgstr "" "Характеристиките и функционалността на разширението вече няма да бъдат " "достъпни. Сигурни ли сте, че искате да деинсталирате?" #: src/exm-window.blp:126 msgid "_No" msgstr "_Не" #: src/exm-window.blp:127 msgid "_Yes" msgstr "_Да" #: src/exm-window.blp:132 msgid "Unsupported Extension" msgstr "Неподдържано разширение" #: src/exm-window.blp:133 msgid "" "This extension does not support your GNOME Shell version. It may cause " "errors if installed." msgstr "" "Това разширение не поддържа вашата версия на GNOME Shell. Може да причини " "грешки, ако е инсталирано." #: src/exm-window.blp:139 msgid "_Install Anyway" msgstr "_Инсталирай въпреки това" #: src/exm-window.blp:140 msgid "_Go Back" msgstr "_Върни се назад" #: src/exm-window.c:348 msgid "_Details" msgstr "_Подробности" #: src/web/exm-request-handler.c:99 msgid "" "Check GNOME infrastructure status " "and try again later" msgstr "" "Проверете състоянието на " "инфраструктурата на GNOME и опитайте отново по-късно" #: src/web/exm-request-handler.c:100 msgid "Check your network status and try again" msgstr "Проверете състоянието на мрежата си и опитайте отново" #~ msgid "Comments" #~ msgstr "Коментари" #~ msgid "User Reviews" #~ msgstr "Потребителски отзиви" #~ msgid "No comments yet" #~ msgstr "Все още няма коментари" #~ msgid "" #~ "This extension could be activated in session modes such as the login " #~ "screen or the lock screen" #~ msgstr "" #~ "Това разширение може да се активира в режими на сесия, като например " #~ "екран за влизане или заключен екран" #, c-format #~ msgid "%s by %s" #~ msgstr "%s от %s" #~ msgid "Updates Available" #~ msgstr "Налични актуализации" #~ msgid "Supported" #~ msgstr "Поддържа се" #~ msgid "Unknown" #~ msgstr "Непознат" extension-manager-0.6.3/po/ca.po000066400000000000000000000515061477302130300165140ustar00rootroot00000000000000# Catalan translations for extension-manager package. # Copyright (C) 2022 THE extension-manager'S COPYRIGHT HOLDER # This file is distributed under the same license as the extension-manager package. # Automatically generated as es, copied and adapted as ca, 2022. # # Joan Aymà , 2024. # Quentin PAGÈS , 2025. msgid "" msgstr "" "Project-Id-Version: extension-manager\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-03-06 16:36+0000\n" "PO-Revision-Date: 2025-02-16 12:17+0000\n" "Last-Translator: Quentin PAGÈS \n" "Language-Team: Catalan \n" "Language: ca\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: Weblate 5.10\n" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:2 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:6 #: src/exm-window.blp:7 msgid "Extension Manager" msgstr "Gestor d'extensions" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:11 msgid "Manage GNOME Shell Extensions" msgstr "Gestiona les extensions del GNOME Shell" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #. Make sure to leave the original strings and add your translations afterwards, so that users can search both in English and your language. #: data/com.mattjakeman.ExtensionManager.desktop.in.in:14 msgid "extension;manager;shell;" msgstr "gestor;extensions;shell;" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:7 msgid "Browse, install, and manage GNOME Shell Extensions" msgstr "Navega, instal·la i gestiona les extensions del GNOME Shell" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:13 msgid "A utility for browsing and installing GNOME Shell Extensions." msgstr "Una utilitat per navegar i instal·lar les extensions del GNOME Shell." #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:14 msgid "Features:" msgstr "Característiques:" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:16 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:26 msgid "Browse extensions.gnome.org right inside the app" msgstr "Explora extensions.gnome.org dins de l'aplicació" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:17 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:22 msgid "Manage the extensions you already have installed" msgstr "Gestiones les extensions que ja tens instal·lades" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:30 msgid "See all the details of your extensions" msgstr "Visualitza tots els detalls de les teves extensions" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:34 msgid "Check your extensions compatibility with the next version of GNOME" msgstr "" "Comprova la compatibilitat de les teves extensions amb la següent versió del " "GNOME" #: src/exm-application.c:201 msgid "Browse, install, and manage GNOME Shell Extensions." msgstr "Navega, instal·la i gestiona extensions del GNOME Shell." #. Translators: Use 'Name email@domain.com' or 'Name https://website.example' (without single quotes). Do not delete existing names, write yours on a new line. #: src/exm-application.c:204 msgid "translator-credits" msgstr "Ícar N. S. " #: src/exm-browse-page.blp:16 msgid "Search for Extensions" msgstr "Cerca extensions" #: src/exm-browse-page.blp:17 msgid "" "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell Extensions" msgstr "" "Introduïu una paraula clau per cercar a «extensions.gnome.org» extensions " "del GNOME Shell" #: src/exm-browse-page.blp:47 msgid "Relevance" msgstr "Pertinença" #: src/exm-browse-page.blp:48 msgctxt "Sort search results" msgid "Downloads" msgstr "Baixades" #: src/exm-browse-page.blp:49 msgid "Recent" msgstr "Recent" #: src/exm-browse-page.blp:50 src/exm-detail-view.blp:113 msgid "Name" msgstr "Nom" #: src/exm-browse-page.blp:57 msgid "Sort search results" msgstr "Ordena els resultats de la cerca" #: src/exm-browse-page.blp:103 msgid "_Load More Results" msgstr "_Carregueu més resultas" #: src/exm-browse-page.blp:137 src/exm-installed-page.blp:123 msgid "No Results Found" msgstr "No s'ha trobat cap resultat" #: src/exm-browse-page.blp:144 msgid "Try a different search" msgstr "" #: src/exm-browse-page.blp:178 src/exm-comment-dialog.blp:34 #: src/exm-detail-view.blp:49 src/exm-detail-view.blp:291 #: src/exm-upgrade-assistant.blp:100 msgid "Connection Error" msgstr "" #: src/exm-comment-dialog.blp:13 src/exm-detail-view.blp:248 #, fuzzy #| msgid "There are no comments." msgid "Reviews and Comments" msgstr "No hi ha opinions." #: src/exm-comment-dialog.blp:25 #, fuzzy #| msgid "Loading…" msgid "Loading" msgstr "Carregant…" #: src/exm-comment-tile.blp:30 src/exm-detail-view.blp:127 msgid "Author" msgstr "Autor" #: src/exm-detail-view.blp:40 msgid "Loading Details" msgstr "Carregant els detalls" #: src/exm-detail-view.blp:59 src/exm-window.c:347 msgid "An Error Occurred" msgstr "S'ha produït un error" #: src/exm-detail-view.blp:60 msgid "No extension details available" msgstr "Els detalls de l'extensió no estan disponibles" #: src/exm-detail-view.blp:154 msgid "Enlarge Image" msgstr "Amplia la imatge" #: src/exm-detail-view.blp:172 src/exm-extension-row.blp:89 msgid "Description" msgstr "Descripció" #: src/exm-detail-view.blp:195 msgid "Links" msgstr "Enllaços" #: src/exm-detail-view.blp:203 msgid "Homepage" msgstr "Pàgina principal" #: src/exm-detail-view.blp:219 msgid "Donate" msgstr "Donar" #: src/exm-detail-view.blp:228 msgid "View on Extensions" msgstr "Visualitza a les extensions" #: src/exm-detail-view.blp:271 msgid "Reviews and comments are disabled for this extension" msgstr "" #: src/exm-detail-view.blp:314 #, fuzzy #| msgid "There are no comments." msgid "There are no reviews or comments" msgstr "No hi ha opinions." #: src/exm-detail-view.blp:343 #, fuzzy #| msgid "_Show All Reviews" msgid "_Show All" msgstr "_Mostrar tots els opinions" #. Translators: '%s' = extension name #: src/exm-detail-view.c:445 #, c-format msgid "%s Icon" msgstr "Icona de %s" #. Translators: '%s' = extension name #: src/exm-detail-view.c:478 #, c-format msgid "%s Screenshot" msgstr "Captura de pantalla de %s" #: src/exm-error-dialog.blp:7 msgid "Error Report" msgstr "Informe d'error" #: src/exm-error-dialog.blp:22 msgid "An unexpected error occurred in Extension Manager" msgstr "Ha ocorregut un error inesperat en el Gestor d'extensions" #: src/exm-error-dialog.blp:36 #, fuzzy #| msgid "_Copy to Clipboard" msgid "Copy to Clipboard" msgstr "_Copiar al portaretalls" #: src/exm-error-dialog.blp:77 msgid "_New Issue" msgstr "_Nova incidència" #. Success indicator #: src/exm-error-dialog.c:125 src/exm-upgrade-assistant.c:347 msgid "Copied" msgstr "Copiat" #: src/exm-error-dialog.c:173 msgid "Please open a new issue and attach the following information:" msgstr "Sisplau, obre una nova incidència i adjunta la informació següent:" #. Translators: '%s' = Name of Distributor (e.g. "Packager123") #: src/exm-error-dialog.c:177 #, c-format msgid "" "You are using a third-party build of Extension Manager. Please contact the package distributor (%s) first before " "filing an issue. Be sure to attach the following information:" msgstr "" "El Gestor d'extensions que estàs fent servir és una compilació distribuïda " "per tercers. Sisplau, posa't primer en contacte amb el " "distribuïdor de paquets (%s)abans d'enviar una nova incidència. " "Assegura't d'adjuntar la informació següent:" #. Translators: Button's tooltip to open extension's preferences dialog #: src/exm-extension-row.blp:28 msgid "Open extension preferences" msgstr "Obre les preferències de l'extensió" #. Translators: Icon's tooltip when an extension has an error #: src/exm-extension-row.blp:46 msgid "An error occurred while loading this extension" msgstr "Ha ocorregut un error al carregar aquesta extensió" #. Translators: Icon's tooltip when an extension is incompatible #: src/exm-extension-row.blp:63 src/exm-install-button.c:117 msgid "This extension is incompatible with your current version of GNOME" msgstr "Aquesta extensió és incompatible amb la vostra versió actual del GNOME" #. Translators: Icon's tooltip when an extension update is available #: src/exm-extension-row.blp:80 msgid "A newer version of this extension is available" msgstr "Hi ha disponible una nova versió d'aquesta extensió" #: src/exm-extension-row.blp:98 src/exm-info-bar.blp:50 msgid "Version" msgstr "Versió" #: src/exm-extension-row.blp:107 msgid "Session Modes" msgstr "" #: src/exm-extension-row.blp:137 msgid "Error" msgstr "Error" #: src/exm-extension-row.blp:158 msgid "See Details" msgstr "Vegeu els detalls" #: src/exm-extension-row.blp:169 msgid "Remove…" msgstr "Elimina…" #: src/exm-extension-row.c:175 msgid "Unlock Dialog" msgstr "" #. Translators: GNOME Display Manager #: src/exm-extension-row.c:181 msgid "GDM" msgstr "" #. Translators: Label when an extension runs on both, login and lock screens #: src/exm-extension-row.c:189 msgid "" "This extension will run while the screen is locked and no user is logged in" msgstr "" #. Translators: Label when an extension runs on the lock screen #: src/exm-extension-row.c:194 msgid "This extension will run while the screen is locked" msgstr "" #. Translators: Label when an extension runs on the login screen #: src/exm-extension-row.c:199 #, fuzzy #| msgid "%d extension will be updated on next login" #| msgid_plural "%d extensions will be updated on next login" msgid "This extension will run while no user is logged in" msgstr "%d extensió s'actualitzarà al següent inici de sessió" #: src/exm-help-overlay.blp:11 msgctxt "shortcut window" msgid "General" msgstr "General" #: src/exm-help-overlay.blp:14 msgctxt "shortcut window" msgid "Show Installed Page" msgstr "Mostra la pàgina d'instalades" #: src/exm-help-overlay.blp:19 msgctxt "shortcut window" msgid "Show Browse Page" msgstr "Mostra la pàgina d'explorar" #: src/exm-help-overlay.blp:24 msgctxt "shortcut window" msgid "Toggle Search" msgstr "" #: src/exm-help-overlay.blp:29 msgctxt "shortcut window" msgid "Show Keyboard Shortcuts" msgstr "Mostra les dreceres de teclat" #: src/exm-help-overlay.blp:34 msgctxt "shortcut window" msgid "Close Window" msgstr "Tanca la finestra" #: src/exm-help-overlay.blp:39 msgctxt "shortcut window" msgid "Quit" msgstr "Surt" #: src/exm-help-overlay.blp:45 msgctxt "shortcut window" msgid "Screenshot View" msgstr "Visualització de la captura de pantalla" #: src/exm-help-overlay.blp:48 src/exm-help-overlay.blp:63 msgctxt "shortcut window" msgid "Zoom In" msgstr "Apropar" #: src/exm-help-overlay.blp:53 src/exm-help-overlay.blp:68 msgctxt "shortcut window" msgid "Zoom Out" msgstr "Allunyar" #: src/exm-help-overlay.blp:58 msgctxt "shortcut window" msgid "Reset Zoom" msgstr "Restableix ampliació" #: src/exm-info-bar.blp:28 msgctxt "Number of downloads" msgid "Downloads" msgstr "Baixades" #: src/exm-info-bar.c:107 msgid "Unsupported" msgstr "No compatible" #: src/exm-install-button.c:127 msgid "Install…" msgstr "Instal·la…" #: src/exm-install-button.c:132 #, fuzzy #| msgctxt "State" #| msgid "Installed" msgid "Installing" msgstr "Instal·lada" #: src/exm-install-button.c:136 msgctxt "State" msgid "Installed" msgstr "Instal·lada" #: src/exm-install-button.c:140 msgid "Unsupported…" msgstr "No compatible…" #: src/exm-installed-page.blp:16 msgid "_Log Out…" msgstr "_Tancar sessió…" #: src/exm-installed-page.blp:28 msgid "Use Extensions" msgstr "Utilitza les extensions" #: src/exm-installed-page.blp:29 msgid "Extensions can cause performance and stability issues" msgstr "Les extensions poden causar problemes de rendiment i estabilitat" #: src/exm-installed-page.blp:34 src/exm-upgrade-assistant.blp:133 msgid "User-Installed Extensions" msgstr "Extensions instal·lades per l'usuari" #: src/exm-installed-page.blp:51 src/exm-upgrade-assistant.blp:150 msgid "No User Extensions Installed" msgstr "Cap extensió instalada per l'usuari" #: src/exm-installed-page.blp:55 msgid "Browse" msgstr "Navega" #: src/exm-installed-page.blp:69 src/exm-upgrade-assistant.blp:160 msgid "System Extensions" msgstr "Extensions del sistema" #: src/exm-installed-page.blp:86 src/exm-upgrade-assistant.blp:177 msgid "No System Extensions Installed" msgstr "Cap extensió instalada pel sistema" #. Translators: Text announced by screen readers when interacting with the list of search results #: src/exm-installed-page.blp:111 #, fuzzy #| msgid "Sort search results" msgid "Search Results" msgstr "Ordena els resultats de la cerca" #: src/exm-installed-page.blp:124 msgid "Try a different search or search online" msgstr "" #: src/exm-installed-page.blp:131 msgid "_Search Online" msgstr "" #. Translators: '%d' = number of extensions that will be updated #: src/exm-installed-page.c:298 #, c-format msgid "%d extension will be updated on next login" msgid_plural "%d extensions will be updated on next login" msgstr[0] "%d extensió s'actualitzarà al següent inici de sessió" msgstr[1] "%d extensions s'actualitzaran al següent inici de sessió" #: src/exm-rating.c:142 #, c-format msgid "%i Star" msgid_plural "%i Stars" msgstr[0] "%i estrella" msgstr[1] "%i estrelles" #. Translators: Button's tooltip to zoom out screenshots #: src/exm-screenshot-view.blp:37 msgid "Zoom Out" msgstr "Allunyar" #. Translators: Button's tooltip to zoom in screenshots #: src/exm-screenshot-view.blp:51 msgid "Zoom In" msgstr "Ampliar" #: src/exm-upgrade-assistant.blp:11 msgid "Upgrade Assistant" msgstr "Assistent d'actualització" #: src/exm-upgrade-assistant.blp:66 msgid "_Check Compatibility" msgstr "_Comprovar compatibilitat" #: src/exm-upgrade-assistant.blp:189 msgid "_Copy to Clipboard" msgstr "_Copiar al portaretalls" #: src/exm-upgrade-assistant.c:188 #, c-format msgid "Checked %d/%d Extensions" msgstr "%d de %d extensions comprovades" #. Set percentage text #: src/exm-upgrade-assistant.c:207 #, c-format msgid "%d%% Compatible" msgstr "%d%% compatible" #: src/exm-upgrade-assistant.c:223 #, c-format msgid "" "GNOME %s supports %d out of %d of the extensions currently " "installed on the system" msgstr "" "GNOME %s suporta %d de %d de les extensions instalades " "actualment al sistema" #. Translators: Icon's tooltip when an extension is compatible #: src/exm-upgrade-assistant.c:503 msgid "A compatible version of the extension exists" msgstr "Existeix una versió compatible d'aquesta extensió" #. Translators: Icon's tooltip when an extension is not compatible #: src/exm-upgrade-assistant.c:510 msgid "No compatible version of the extension exists" msgstr "No existeix cap versió compatible per aquesta extensió" #. Translators: Icon's tooltip when an extension compatibility is unknown #: src/exm-upgrade-assistant.c:517 msgid "" "This extension is not hosted on extensions.gnome.org. Its compatibility " "cannot be determined." msgstr "" "Aquesta extensió no està allotjada a extensions.gnome.org. No és possible " "determinar la seva compatibilitat." #: src/exm-upgrade-assistant.c:608 #, c-format msgid "" "You are currently running GNOME %s. Select a version of GNOME below " "and check whether your extensions will continue to be available." msgstr "" "Actualment estàs usantGNOME%s. Selecciona una versió de GNOME de sota " "i comprova si les teves extensions continuaran disponibles." #. Translators: Tooltip of the search icon in the header bar #: src/exm-window.blp:39 #, fuzzy #| msgid "User-Installed Extensions" msgid "Search Installed Extensions" msgstr "Extensions instal·lades per l'usuari" #: src/exm-window.blp:48 msgid "Main Menu" msgstr "Menú principal" #: src/exm-window.blp:59 #, fuzzy #| msgid "Search for Extensions" msgid "Search for installed extensions" msgstr "Cerca extensions" #: src/exm-window.blp:71 msgctxt "Navigation" msgid "_Installed" msgstr "_Instal·lat" #: src/exm-window.blp:80 msgctxt "Navigation" msgid "_Browse" msgstr "_Navega" #. Translators: the character preceded by "_" should not be the same #. as others in the same menu #: src/exm-window.blp:108 msgid "Sort _Enabled First" msgstr "Ordenar primer per _Habilitades" #: src/exm-window.blp:109 msgid "_Show Unsupported" msgstr "_Mostra no compatibles" #: src/exm-window.blp:113 msgid "_Upgrade Assistant" msgstr "_Assistent d'actualització" #: src/exm-window.blp:114 msgid "_Keyboard Shortcuts" msgstr "_Dreceres de teclat" #: src/exm-window.blp:115 msgid "_About Extension Manager" msgstr "_Quant al gestor d'extensions" #: src/exm-window.blp:120 msgid "Uninstall Extension?" msgstr "Desinstal·lar l'extensió?" #: src/exm-window.blp:121 msgid "" "The extension's features and functionality will no longer be accessible. Are " "you sure you want to uninstall?" msgstr "" "Les característiques i funcionalitats de l'extensió ja no estaran " "disponibles. Estàs segur que vols desinstal·lar-la?" #: src/exm-window.blp:126 msgid "_No" msgstr "_No" #: src/exm-window.blp:127 msgid "_Yes" msgstr "_Sí" #: src/exm-window.blp:132 msgid "Unsupported Extension" msgstr "Extensió incompatible" #: src/exm-window.blp:133 msgid "" "This extension does not support your GNOME Shell version. It may cause " "errors if installed." msgstr "" "Aquesta extensió no suporta la teva versió de GNOME Shell. Podria causar " "errors si la instal·les." #: src/exm-window.blp:139 msgid "_Install Anyway" msgstr "_Instal·la igualment" #: src/exm-window.blp:140 msgid "_Go Back" msgstr "Anar _enrere" #: src/exm-window.c:348 msgid "_Details" msgstr "_Detalls" #: src/web/exm-request-handler.c:99 msgid "" "Check GNOME infrastructure status " "and try again later" msgstr "" #: src/web/exm-request-handler.c:100 msgid "Check your network status and try again" msgstr "" #~ msgid "Comments" #~ msgstr "Comentaris" #~ msgid "Loading Comments" #~ msgstr "Cagerrant commentaris" #~ msgid "User Reviews" #~ msgstr "Opinions dels usuaris" #~ msgid "No comments yet" #~ msgstr "Cap comentaris encara" #~ msgid "" #~ "This extension could be activated in session modes such as the login " #~ "screen or the lock screen" #~ msgstr "" #~ "Aquesta extensió es pot habilitar en modes de sessió com a la pantalla " #~ "per iniciar sessió o la pantalla de bloqueig" #, c-format #~ msgid "%s by %s" #~ msgstr "%s creat per %s" #, fuzzy #~| msgid "Unsupported" #~ msgid "Supported" #~ msgstr "No compatible" #~ msgid "A utility for managing GNOME Shell Extensions" #~ msgstr "Una utilitat per gestionar les extensions del GNOME Shell" #, c-format #~ msgid "e.g. “%s”" #~ msgstr "Per exemple \"%s\"" #~ msgid "This extension is incompatible with your current version of GNOME." #~ msgstr "" #~ "Aquesta extensió és incompatible amb la vostra versió actual del GNOME." #, fuzzy #~| msgid "An Error Occurred" #~ msgid "An error occurred." #~ msgstr "S'ha produït un error" #~ msgid "Matthew Jakeman" #~ msgstr "Matthew Jakeman" #~ msgid "Fixes a crash that sometimes occurs while uninstalling an extension" #~ msgstr "" #~ "Corregeix una fallada que de vegades ocorre quan es desinstal·la una " #~ "extensió" #~ msgid "The first feature update to extension-manager. Highlights include:" #~ msgstr "" #~ "La primera actualització de la funció al gestor d'extensions. Els " #~ "ressaltats inclouen:" #~ msgid "Dark theme and support for overriding the system colour scheme" #~ msgstr "Tema fosc i suport per substituir l'esquema de color del sistema" #~ msgid "Shows screenshots in extension listings" #~ msgstr "Mostra les captures de pantalla als llistats d'extensions" #~ msgid "Shell version compatibility check" #~ msgstr "Comprovació de compatibilitat de la versió del Shell" #~ msgid "Localised into seven languages" #~ msgstr "Traduït en més de set idiomes" #~ msgid "Global extension on/off toggle" #~ msgstr "Activa/desactiva les extensions globalment" #~ msgid "Colour Scheme Preference" #~ msgstr "Preferències de l'esquema de colors" #~ msgid "" #~ "Whether to follow the system colour scheme or force either light or dark " #~ "mode." #~ msgstr "" #~ "Si s'ha de seguir l'esquema de color del sistema o forçar el mode clar o " #~ "fosc." #~ msgid "" #~ "A very simple tool for browsing, downloading, and managing GNOME shell " #~ "extensions." #~ msgstr "" #~ "Una eina molt senzilla per navegar, descarregar i gestionar les " #~ "extensions del Shell del GNOME." #~ msgid "e.g. \"Blur my Shell\"" #~ msgstr "p. ex. «Blur my Shell»" #~ msgid "Popularity" #~ msgstr "Popularitat" #~ msgid "Theme" #~ msgstr "Tema" #~ msgid "Follow System" #~ msgstr "Segueix el sistema" #~ msgid "Light" #~ msgstr "Clar" #~ msgid "Dark" #~ msgstr "Fosc" #~ msgid "Are you sure you want to uninstall?" #~ msgstr "Confirmes que vols desinstal·lar-la?" #~ msgctxt "shortcut window" #~ msgid "Show Shortcuts" #~ msgstr "Mostra les dreceres" extension-manager-0.6.3/po/cs.po000066400000000000000000000525401477302130300165350ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the extension-manager package. # Vojtěch Perník , 2022. # vikdevelop https://github.com/vikdevelop # Fjuro , 2025. # lorduskordus , 2025. msgid "" msgstr "" "Project-Id-Version: extension-manager\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-03-06 16:36+0000\n" "PO-Revision-Date: 2025-02-24 10:03+0000\n" "Last-Translator: Fjuro \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: Weblate 5.10.1-dev\n" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:2 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:6 #: src/exm-window.blp:7 msgid "Extension Manager" msgstr "Správce rozšíření" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:11 msgid "Manage GNOME Shell Extensions" msgstr "Správa rozšíření GNOME Shellu" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #. Make sure to leave the original strings and add your translations afterwards, so that users can search both in English and your language. #: data/com.mattjakeman.ExtensionManager.desktop.in.in:14 msgid "extension;manager;shell;" msgstr "rozšíření;správce;shell;" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:7 msgid "Browse, install, and manage GNOME Shell Extensions" msgstr "Procházejte, instalujte a spravujte rozšíření GNOME Shellu" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:13 msgid "A utility for browsing and installing GNOME Shell Extensions." msgstr "" "Jednoduchá aplikace, která vám usnadní procházení a instalaci rozšíření " "GNOME Shellu." #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:14 msgid "Features:" msgstr "Funkce:" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:16 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:26 msgid "Browse extensions.gnome.org right inside the app" msgstr "Procházejte web extensions.gnome.org přímo v aplikaci" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:17 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:22 msgid "Manage the extensions you already have installed" msgstr "Spravujte rozšíření, která již máte nainstalovaná" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:30 msgid "See all the details of your extensions" msgstr "Zobrazit všechny podrobnosti o vašich rozšířeních" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:34 msgid "Check your extensions compatibility with the next version of GNOME" msgstr "" "Zkontrolujte kompatibilitu svých rozšíření s příští verzí prostředí GNOME" #: src/exm-application.c:201 msgid "Browse, install, and manage GNOME Shell Extensions." msgstr "Procházejte, instalujte a spravujte rozšíření GNOME Shellu." #. Translators: Use 'Name email@domain.com' or 'Name https://website.example' (without single quotes). Do not delete existing names, write yours on a new line. #: src/exm-application.c:204 msgid "translator-credits" msgstr "" "Vojtěch Perník \n" "vikdevelop https://github.com/vikdevelop\n" "Masterix https://github.com/MasterixCZ" #: src/exm-browse-page.blp:16 msgid "Search for Extensions" msgstr "Hledat rozšíření" #: src/exm-browse-page.blp:17 msgid "" "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell Extensions" msgstr "" "Zadejte klíčové slovo k vyhledávání rozšíření GNOME Shellu na „extensions." "gnome.org“" #: src/exm-browse-page.blp:47 msgid "Relevance" msgstr "Relevance" #: src/exm-browse-page.blp:48 msgctxt "Sort search results" msgid "Downloads" msgstr "Počet Stažení" #: src/exm-browse-page.blp:49 msgid "Recent" msgstr "Nedávné" #: src/exm-browse-page.blp:50 src/exm-detail-view.blp:113 msgid "Name" msgstr "Jméno" #: src/exm-browse-page.blp:57 msgid "Sort search results" msgstr "Filtrování výsledků vyhledávání" #: src/exm-browse-page.blp:103 msgid "_Load More Results" msgstr "_Načíst Více Výsledků" #: src/exm-browse-page.blp:137 src/exm-installed-page.blp:123 msgid "No Results Found" msgstr "Nebyly nalezeny žádné výsledky" #: src/exm-browse-page.blp:144 msgid "Try a different search" msgstr "Zkuste vyhledat něco jiného" #: src/exm-browse-page.blp:178 src/exm-comment-dialog.blp:34 #: src/exm-detail-view.blp:49 src/exm-detail-view.blp:291 #: src/exm-upgrade-assistant.blp:100 msgid "Connection Error" msgstr "Chyba připojení" #: src/exm-comment-dialog.blp:13 src/exm-detail-view.blp:248 msgid "Reviews and Comments" msgstr "Recenze a komentáře" #: src/exm-comment-dialog.blp:25 msgid "Loading" msgstr "Načítání" #: src/exm-comment-tile.blp:30 src/exm-detail-view.blp:127 msgid "Author" msgstr "Autor" #: src/exm-detail-view.blp:40 msgid "Loading Details" msgstr "Načítání podrobností" #: src/exm-detail-view.blp:59 src/exm-window.c:347 msgid "An Error Occurred" msgstr "Došlo k chybě" #: src/exm-detail-view.blp:60 msgid "No extension details available" msgstr "Nejsou dostupné žádné podrobnosti o rozšíření" #: src/exm-detail-view.blp:154 msgid "Enlarge Image" msgstr "Zvětšit obrázek" #: src/exm-detail-view.blp:172 src/exm-extension-row.blp:89 msgid "Description" msgstr "Popis" #: src/exm-detail-view.blp:195 msgid "Links" msgstr "Odkazy" #: src/exm-detail-view.blp:203 msgid "Homepage" msgstr "Domovská stránka" #: src/exm-detail-view.blp:219 msgid "Donate" msgstr "Darovat" #: src/exm-detail-view.blp:228 msgid "View on Extensions" msgstr "Zobrazit na webu" #: src/exm-detail-view.blp:271 msgid "Reviews and comments are disabled for this extension" msgstr "Recenze a komentáře jsou u tohoto rozšíření vypnuty" #: src/exm-detail-view.blp:314 msgid "There are no reviews or comments" msgstr "Toto rozšíření nemá žádné recenze ani komentáře" #: src/exm-detail-view.blp:343 msgid "_Show All" msgstr "_Zobrazit vše" #. Translators: '%s' = extension name #: src/exm-detail-view.c:445 #, c-format msgid "%s Icon" msgstr "Ikona rozšíření %s" #. Translators: '%s' = extension name #: src/exm-detail-view.c:478 #, c-format msgid "%s Screenshot" msgstr "Snímek obrazovky rozšíření %s" #: src/exm-error-dialog.blp:7 msgid "Error Report" msgstr "Hlášení o chybě" #: src/exm-error-dialog.blp:22 msgid "An unexpected error occurred in Extension Manager" msgstr "Ve Správci rozšíření došlo k neočekávané chybě" #: src/exm-error-dialog.blp:36 msgid "Copy to Clipboard" msgstr "Kopírovat do schránky" #: src/exm-error-dialog.blp:77 msgid "_New Issue" msgstr "_Nový problém" #. Success indicator #: src/exm-error-dialog.c:125 src/exm-upgrade-assistant.c:347 msgid "Copied" msgstr "Zkopírováno" #: src/exm-error-dialog.c:173 msgid "Please open a new issue and attach the following information:" msgstr "Otevřete prosím nový problém a připojte následující informace:" #. Translators: '%s' = Name of Distributor (e.g. "Packager123") #: src/exm-error-dialog.c:177 #, c-format msgid "" "You are using a third-party build of Extension Manager. Please contact the package distributor (%s) first before " "filing an issue. Be sure to attach the following information:" msgstr "" "Používáte verzi Správce rozšíření od třetí strany. Před vytvořením nového " "problému prosím nejdříve kontaktujte správce balíčku " "(%s). Nezapomeňte přidat následující informace:" #. Translators: Button's tooltip to open extension's preferences dialog #: src/exm-extension-row.blp:28 msgid "Open extension preferences" msgstr "Otevřít předvolby rozšíření" #. Translators: Icon's tooltip when an extension has an error #: src/exm-extension-row.blp:46 msgid "An error occurred while loading this extension" msgstr "Při načítání tohoto rozšíření došlo k chybě" #. Translators: Icon's tooltip when an extension is incompatible #: src/exm-extension-row.blp:63 src/exm-install-button.c:117 msgid "This extension is incompatible with your current version of GNOME" msgstr "Toto rozšíření je nekompatibilní s vaší verzí prostředí GNOME" #. Translators: Icon's tooltip when an extension update is available #: src/exm-extension-row.blp:80 msgid "A newer version of this extension is available" msgstr "Je dostupná novější verze tohoto rozšíření" #: src/exm-extension-row.blp:98 src/exm-info-bar.blp:50 msgid "Version" msgstr "Verze" #: src/exm-extension-row.blp:107 msgid "Session Modes" msgstr "Režimy relací" #: src/exm-extension-row.blp:137 msgid "Error" msgstr "Chyba" #: src/exm-extension-row.blp:158 msgid "See Details" msgstr "Zobrazit podrobnosti" #: src/exm-extension-row.blp:169 msgid "Remove…" msgstr "Odstranit…" #: src/exm-extension-row.c:175 msgid "Unlock Dialog" msgstr "Dialog odemčení" #. Translators: GNOME Display Manager #: src/exm-extension-row.c:181 msgid "GDM" msgstr "GDM" #. Translators: Label when an extension runs on both, login and lock screens #: src/exm-extension-row.c:189 msgid "" "This extension will run while the screen is locked and no user is logged in" msgstr "" "Toto rozšíření bude spuštěno, když je obrazovka uzamčena a není přihlášen " "žádný uživatel" #. Translators: Label when an extension runs on the lock screen #: src/exm-extension-row.c:194 msgid "This extension will run while the screen is locked" msgstr "Toto rozšíření bude spuštěno, když je obrazovka uzamčena" #. Translators: Label when an extension runs on the login screen #: src/exm-extension-row.c:199 msgid "This extension will run while no user is logged in" msgstr "Toto rozšíření bude spuštěno, když není přihlášen žádný uživatel" #: src/exm-help-overlay.blp:11 msgctxt "shortcut window" msgid "General" msgstr "Obecné" #: src/exm-help-overlay.blp:14 msgctxt "shortcut window" msgid "Show Installed Page" msgstr "Zobrazit stránku Nainstalováno" #: src/exm-help-overlay.blp:19 msgctxt "shortcut window" msgid "Show Browse Page" msgstr "Zobrazit stránku Procházet" #: src/exm-help-overlay.blp:24 msgctxt "shortcut window" msgid "Toggle Search" msgstr "Přepnout vyhledávání" #: src/exm-help-overlay.blp:29 msgctxt "shortcut window" msgid "Show Keyboard Shortcuts" msgstr "Zobrazit klávesové zkratky" #: src/exm-help-overlay.blp:34 msgctxt "shortcut window" msgid "Close Window" msgstr "Zavřít okno" #: src/exm-help-overlay.blp:39 msgctxt "shortcut window" msgid "Quit" msgstr "Odejít" #: src/exm-help-overlay.blp:45 msgctxt "shortcut window" msgid "Screenshot View" msgstr "Náhled snímku obrazovky" #: src/exm-help-overlay.blp:48 src/exm-help-overlay.blp:63 msgctxt "shortcut window" msgid "Zoom In" msgstr "Přiblížit" #: src/exm-help-overlay.blp:53 src/exm-help-overlay.blp:68 msgctxt "shortcut window" msgid "Zoom Out" msgstr "Oddálit" #: src/exm-help-overlay.blp:58 msgctxt "shortcut window" msgid "Reset Zoom" msgstr "Obnovit přiblížení" #: src/exm-info-bar.blp:28 msgctxt "Number of downloads" msgid "Downloads" msgstr "Počet stažení" #: src/exm-info-bar.c:107 msgid "Unsupported" msgstr "Nepodporované" #: src/exm-install-button.c:127 msgid "Install…" msgstr "Instalovat…" #: src/exm-install-button.c:132 msgid "Installing" msgstr "Instalace" #: src/exm-install-button.c:136 msgctxt "State" msgid "Installed" msgstr "Nainstalováno" #: src/exm-install-button.c:140 msgid "Unsupported…" msgstr "Nepodporované…" #: src/exm-installed-page.blp:16 msgid "_Log Out…" msgstr "_Odhlásit se…" #: src/exm-installed-page.blp:28 msgid "Use Extensions" msgstr "Používat rozšíření" #: src/exm-installed-page.blp:29 msgid "Extensions can cause performance and stability issues" msgstr "Rozšíření mohou způsobit problémy s výkonem a stabilitou" #: src/exm-installed-page.blp:34 src/exm-upgrade-assistant.blp:133 msgid "User-Installed Extensions" msgstr "Uživatelská rozšíření" #: src/exm-installed-page.blp:51 src/exm-upgrade-assistant.blp:150 msgid "No User Extensions Installed" msgstr "Nejsou nainstalována žádná uživatelská rozšíření" #: src/exm-installed-page.blp:55 msgid "Browse" msgstr "Procházet" #: src/exm-installed-page.blp:69 src/exm-upgrade-assistant.blp:160 msgid "System Extensions" msgstr "Systémová rozšíření" #: src/exm-installed-page.blp:86 src/exm-upgrade-assistant.blp:177 msgid "No System Extensions Installed" msgstr "Nejsou nainstalována žádná systémová rozšíření" #. Translators: Text announced by screen readers when interacting with the list of search results #: src/exm-installed-page.blp:111 msgid "Search Results" msgstr "Výsledky vyhledávání" #: src/exm-installed-page.blp:124 msgid "Try a different search or search online" msgstr "Zkuste vyhledat něco jiného nebo hledejte online" #: src/exm-installed-page.blp:131 msgid "_Search Online" msgstr "_Hledat online" #. Translators: '%d' = number of extensions that will be updated #: src/exm-installed-page.c:298 #, c-format msgid "%d extension will be updated on next login" msgid_plural "%d extensions will be updated on next login" msgstr[0] "%d rozšíření bude aktualizováno při příštím přihlášení" msgstr[1] "%d rozšíření budou aktualizována při příštím přihlášení" msgstr[2] "%d rozšíření bude aktualizováno při příštím přihlášení" #: src/exm-rating.c:142 #, c-format msgid "%i Star" msgid_plural "%i Stars" msgstr[0] "%i hvězda" msgstr[1] "%i hvězdy" msgstr[2] "%i hvězd" #. Translators: Button's tooltip to zoom out screenshots #: src/exm-screenshot-view.blp:37 msgid "Zoom Out" msgstr "Oddálit" #. Translators: Button's tooltip to zoom in screenshots #: src/exm-screenshot-view.blp:51 msgid "Zoom In" msgstr "Přiblížit" #: src/exm-upgrade-assistant.blp:11 msgid "Upgrade Assistant" msgstr "Pomocník s aktualizací" #: src/exm-upgrade-assistant.blp:66 msgid "_Check Compatibility" msgstr "_Zkontrolovat kompatibilitu" #: src/exm-upgrade-assistant.blp:189 msgid "_Copy to Clipboard" msgstr "_Zkopírovat do schránky" #: src/exm-upgrade-assistant.c:188 #, c-format msgid "Checked %d/%d Extensions" msgstr "Zkontrolováno %d/%d rozšíření" #. Set percentage text #: src/exm-upgrade-assistant.c:207 #, c-format msgid "%d%% Compatible" msgstr "%d%% kompatibilních" #: src/exm-upgrade-assistant.c:223 #, c-format msgid "" "GNOME %s supports %d out of %d of the extensions currently " "installed on the system" msgstr "" "GNOME %s podporuje %d z %d rozšíření aktuálně nainstalovaných " "v systému" #. Translators: Icon's tooltip when an extension is compatible #: src/exm-upgrade-assistant.c:503 msgid "A compatible version of the extension exists" msgstr "Existuje kompatibilní verze tohoto rozšíření" #. Translators: Icon's tooltip when an extension is not compatible #: src/exm-upgrade-assistant.c:510 msgid "No compatible version of the extension exists" msgstr "Neexistuje kompatibilní verze tohoto rozšíření" #. Translators: Icon's tooltip when an extension compatibility is unknown #: src/exm-upgrade-assistant.c:517 msgid "" "This extension is not hosted on extensions.gnome.org. Its compatibility " "cannot be determined." msgstr "" "Toto rozšíření není hostováno na webu extensions.gnome.org. Jeho " "kompatibilitu nelze zaručit." #: src/exm-upgrade-assistant.c:608 #, c-format msgid "" "You are currently running GNOME %s. Select a version of GNOME below " "and check whether your extensions will continue to be available." msgstr "" "Právě používáte GNOME %s. Níže vyberte verzi prostředí GNOME a " "zkontrolujte, zda budou vaše rozšíření nadále k dispozici." #. Translators: Tooltip of the search icon in the header bar #: src/exm-window.blp:39 msgid "Search Installed Extensions" msgstr "Hledat nainstalovaná rozšíření" #: src/exm-window.blp:48 msgid "Main Menu" msgstr "Hlavní nabídka" #: src/exm-window.blp:59 msgid "Search for installed extensions" msgstr "Hledat nainstalovaná rozšíření" #: src/exm-window.blp:71 msgctxt "Navigation" msgid "_Installed" msgstr "_Nainstalováno" #: src/exm-window.blp:80 msgctxt "Navigation" msgid "_Browse" msgstr "_Procházet" #. Translators: the character preceded by "_" should not be the same #. as others in the same menu #: src/exm-window.blp:108 msgid "Sort _Enabled First" msgstr "_Nejprve řadit povolené" #: src/exm-window.blp:109 msgid "_Show Unsupported" msgstr "_Zobrazit nepodporované" #: src/exm-window.blp:113 msgid "_Upgrade Assistant" msgstr "_Pomocník s aktualizací" #: src/exm-window.blp:114 msgid "_Keyboard Shortcuts" msgstr "_Klávesové zkratky" #: src/exm-window.blp:115 msgid "_About Extension Manager" msgstr "_O Správci rozšíření" #: src/exm-window.blp:120 msgid "Uninstall Extension?" msgstr "Odinstalovat rozšíření?" #: src/exm-window.blp:121 msgid "" "The extension's features and functionality will no longer be accessible. Are " "you sure you want to uninstall?" msgstr "" "Funkce tohoto rozšíření již nebudou nadále dostupné. Chcete jej opravdu " "odinstalovat?" #: src/exm-window.blp:126 msgid "_No" msgstr "_Ne" #: src/exm-window.blp:127 msgid "_Yes" msgstr "_Ano" #: src/exm-window.blp:132 msgid "Unsupported Extension" msgstr "Nepodporované rozšíření" #: src/exm-window.blp:133 msgid "" "This extension does not support your GNOME Shell version. It may cause " "errors if installed." msgstr "" "Toto rozšíření nepodporuje vaši verzi GNOME Shell. Při nainstalování může " "způsobovat problémy." #: src/exm-window.blp:139 msgid "_Install Anyway" msgstr "_Přesto Nainstalovat" #: src/exm-window.blp:140 msgid "_Go Back" msgstr "_Zpět" #: src/exm-window.c:348 msgid "_Details" msgstr "_Podrobnosti" #: src/web/exm-request-handler.c:99 msgid "" "Check GNOME infrastructure status " "and try again later" msgstr "" "Zkontrolujte stav infrastruktury GNOME a zkuste to znovu později" #: src/web/exm-request-handler.c:100 msgid "Check your network status and try again" msgstr "Zkontrolujte svůj stav sítě a zkuste to znovu" #~ msgid "Comments" #~ msgstr "Komentáře" #~ msgid "User Reviews" #~ msgstr "Uživatelské recenze" #~ msgid "No comments yet" #~ msgstr "Zatím žádné komentáře" #~ msgid "" #~ "This extension could be activated in session modes such as the login " #~ "screen or the lock screen" #~ msgstr "" #~ "Toto rozšíření může být aktivováno v režimech jako přihlašovací obrazovka " #~ "nebo zamykací obrazovka" #~ msgid "Updates Available" #~ msgstr "Dostupné Aktualizace" #~ msgid "Supported" #~ msgstr "Podporováno" #~ msgid "Unknown" #~ msgstr "Neznámé" #~ msgid "A utility for managing GNOME Shell Extensions" #~ msgstr "Jednoduchý správce rozšíření GNOME Shellu" #, c-format #~ msgid "e.g. “%s”" #~ msgstr "např. “%s”" #~ msgid "This extension is incompatible with your current version of GNOME." #~ msgstr "Toto rozšíření není kompatibilní s vaší současnou verzí GNOME." #~ msgid "An error occurred." #~ msgstr "Nastala chyba." #~ msgid "Return to view" #~ msgstr "Zpět na zobrazení" #~ msgid "@app_title@" #~ msgstr "Správce rozšíření" #~ msgid "Fully adaptive mobile-friendly user interface" #~ msgstr "Plně adaptivní uživatelské rozhraní pro mobilní zařízení" #~ msgid "Performance and stability" #~ msgstr "Zlepšení výkonu a stability" #~ msgid "Translation updates" #~ msgstr "Aktualizace překladů" #~ msgid "Various bug fixes" #~ msgstr "Opravy různých chyb" #~ msgid "Remove release notes dialog" #~ msgstr "Odstraněn dialog s poznámkami k vydání" #~ msgid "Fixes a crash that sometimes occurs while uninstalling an extension" #~ msgstr "Opravuje občasné padání aplikace při odinstalaci rozšíření" #~ msgid "The first feature update to extension-manager. Highlights include:" #~ msgstr "První aktualizace s novými funkcemi. Mezi hlavní novinky patří:" #~ msgid "Dark theme and support for overriding the system colour scheme" #~ msgstr "" #~ "Tmavý režim a podpora pro jeho upřednostnění před barevným schématem " #~ "systému" #~ msgid "Shows screenshots in extension listings" #~ msgstr "Zobrazování snímků obrazovky v seznamu rozšíření" #~ msgid "Shell version compatibility check" #~ msgstr "Kontrola kompatibility s aktuální verzí Shellu" #~ msgid "Localised into seven languages" #~ msgstr "Přeloženo do sedmi jazyků" #~ msgid "Global extension on/off toggle" #~ msgstr "Globální přepínač pro všechna rozšíření najednou" #~ msgid "Displays user and system extensions separately" #~ msgstr "Zobrazení uživatelských a systémových rozšíření zvlášť" #~ msgid "Extension Manager (Development)" #~ msgstr "Správce rozšíření (vývojářská verze)" #~ msgid "Popularity" #~ msgstr "Popularita" #~ msgid "Supported Versions" #~ msgstr "Podporované verze" #~ msgctxt "Navigation" #~ msgid "Browse" #~ msgstr "Procházet" #~ msgid "Theme" #~ msgstr "Téma" #~ msgid "Follow System" #~ msgstr "Podle systému" #~ msgid "Light" #~ msgstr "Světlé" #~ msgid "Dark" #~ msgstr "Tmavé" #~ msgid "Are you sure you want to uninstall?" #~ msgstr "Jste si jisti, že chcete rozšíření odinstalovat?" extension-manager-0.6.3/po/da.po000066400000000000000000000541771477302130300165240ustar00rootroot00000000000000# Danish translation of Extension Manager. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the extension-manager package. # ExponentActivity ***@***.***, 2022. # msgid "" msgstr "" "Project-Id-Version: extension-manager\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-03-06 16:36+0000\n" "PO-Revision-Date: 2022-04-06 08:59+0200\n" "Last-Translator: \n" "Language-Team: \n" "Language: da\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.0.1\n" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:2 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:6 #: src/exm-window.blp:7 msgid "Extension Manager" msgstr "Udvidelsesadministrering" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:11 #, fuzzy #| msgid "A utility for managing GNOME Shell Extensions" msgid "Manage GNOME Shell Extensions" msgstr "Et værktøj til at administrere GNOME Skaludvidelser" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #. Make sure to leave the original strings and add your translations afterwards, so that users can search both in English and your language. #: data/com.mattjakeman.ExtensionManager.desktop.in.in:14 #, fuzzy #| msgid "Extension Manager" msgid "extension;manager;shell;" msgstr "Udvidelsesadministrering" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:7 #, fuzzy #| msgid "A utility for managing GNOME Shell Extensions" msgid "Browse, install, and manage GNOME Shell Extensions" msgstr "Et værktøj til at administrere GNOME Skaludvidelser" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:13 msgid "A utility for browsing and installing GNOME Shell Extensions." msgstr "Et værktøj til at gennemse og installere GNOME Skaludvidelser." #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:14 msgid "Features:" msgstr "Funktioner:" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:16 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:26 msgid "Browse extensions.gnome.org right inside the app" msgstr "Gennemse extensions.gnome.org inde i app'en" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:17 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:22 msgid "Manage the extensions you already have installed" msgstr "Administrer de udvidelser du allerede har installeret" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:30 #, fuzzy #| msgid "Search for extensions" msgid "See all the details of your extensions" msgstr "Søg efter udvidelser" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:34 #, fuzzy #| msgid "This extension is incompatible with your current version of GNOME." msgid "Check your extensions compatibility with the next version of GNOME" msgstr "Denne udvidelse er inkompatibel med din nuværende version af GNOME." #: src/exm-application.c:201 #, fuzzy #| msgid "A utility for managing GNOME Shell Extensions" msgid "Browse, install, and manage GNOME Shell Extensions." msgstr "Et værktøj til at administrere GNOME Skaludvidelser" #. Translators: Use 'Name email@domain.com' or 'Name https://website.example' (without single quotes). Do not delete existing names, write yours on a new line. #: src/exm-application.c:204 msgid "translator-credits" msgstr "ExponentActivity" #: src/exm-browse-page.blp:16 #, fuzzy #| msgid "Search for extensions" msgid "Search for Extensions" msgstr "Søg efter udvidelser" #: src/exm-browse-page.blp:17 #, fuzzy #| msgid "" #| "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell " #| "Extensions." msgid "" "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell Extensions" msgstr "" "Indtast et nøgleord fo at søge på 'extensions.gnome.org ' efter GNOME " "Skaludvidelser." #: src/exm-browse-page.blp:47 msgid "Relevance" msgstr "" #: src/exm-browse-page.blp:48 #, fuzzy #| msgid "Downloads" msgctxt "Sort search results" msgid "Downloads" msgstr "Hentninger" #: src/exm-browse-page.blp:49 msgid "Recent" msgstr "Nylig" #: src/exm-browse-page.blp:50 src/exm-detail-view.blp:113 msgid "Name" msgstr "Navn" #: src/exm-browse-page.blp:57 msgid "Sort search results" msgstr "Sortér søgeresultater" #: src/exm-browse-page.blp:103 msgid "_Load More Results" msgstr "" #: src/exm-browse-page.blp:137 src/exm-installed-page.blp:123 msgid "No Results Found" msgstr "Ingen Resultater Fundet" #: src/exm-browse-page.blp:144 msgid "Try a different search" msgstr "" #: src/exm-browse-page.blp:178 src/exm-comment-dialog.blp:34 #: src/exm-detail-view.blp:49 src/exm-detail-view.blp:291 #: src/exm-upgrade-assistant.blp:100 msgid "Connection Error" msgstr "" #: src/exm-comment-dialog.blp:13 src/exm-detail-view.blp:248 msgid "Reviews and Comments" msgstr "" #: src/exm-comment-dialog.blp:25 #, fuzzy #| msgid "Loading…" msgid "Loading" msgstr "Indlæser…" #: src/exm-comment-tile.blp:30 src/exm-detail-view.blp:127 msgid "Author" msgstr "" #: src/exm-detail-view.blp:40 #, fuzzy #| msgid "See Details" msgid "Loading Details" msgstr "Se Detaljer" #: src/exm-detail-view.blp:59 src/exm-window.c:347 msgid "An Error Occurred" msgstr "En Fejl Opstod" #: src/exm-detail-view.blp:60 #, fuzzy #| msgid "A newer version of this extension is available" msgid "No extension details available" msgstr "En nyere version af denne udvidelse er tilgængelig" #: src/exm-detail-view.blp:154 msgid "Enlarge Image" msgstr "" #: src/exm-detail-view.blp:172 src/exm-extension-row.blp:89 msgid "Description" msgstr "Beskrivelse" #: src/exm-detail-view.blp:195 msgid "Links" msgstr "Links" #: src/exm-detail-view.blp:203 #, fuzzy #| msgid "Project Homepage" msgid "Homepage" msgstr "Projekt Hjemmeside" #: src/exm-detail-view.blp:219 msgid "Donate" msgstr "" #: src/exm-detail-view.blp:228 msgid "View on Extensions" msgstr "Se på Extensions" #: src/exm-detail-view.blp:271 msgid "Reviews and comments are disabled for this extension" msgstr "" #: src/exm-detail-view.blp:314 msgid "There are no reviews or comments" msgstr "" #: src/exm-detail-view.blp:343 #, fuzzy #| msgid "Show All Reviews" msgid "_Show All" msgstr "Vis alle anmeldelser" #. Translators: '%s' = extension name #: src/exm-detail-view.c:445 #, c-format msgid "%s Icon" msgstr "" #. Translators: '%s' = extension name #: src/exm-detail-view.c:478 #, c-format msgid "%s Screenshot" msgstr "" #: src/exm-error-dialog.blp:7 msgid "Error Report" msgstr "" #: src/exm-error-dialog.blp:22 #, fuzzy #| msgid "An error occurred while loading this extension" msgid "An unexpected error occurred in Extension Manager" msgstr "Der opstod en fejl mens udvidelsen blev indlæst" #: src/exm-error-dialog.blp:36 msgid "Copy to Clipboard" msgstr "" #: src/exm-error-dialog.blp:77 msgid "_New Issue" msgstr "" #. Success indicator #: src/exm-error-dialog.c:125 src/exm-upgrade-assistant.c:347 msgid "Copied" msgstr "" #: src/exm-error-dialog.c:173 msgid "Please open a new issue and attach the following information:" msgstr "" #. Translators: '%s' = Name of Distributor (e.g. "Packager123") #: src/exm-error-dialog.c:177 #, c-format msgid "" "You are using a third-party build of Extension Manager. Please contact the package distributor (%s) first before " "filing an issue. Be sure to attach the following information:" msgstr "" #. Translators: Button's tooltip to open extension's preferences dialog #: src/exm-extension-row.blp:28 msgid "Open extension preferences" msgstr "" #. Translators: Icon's tooltip when an extension has an error #: src/exm-extension-row.blp:46 msgid "An error occurred while loading this extension" msgstr "Der opstod en fejl mens udvidelsen blev indlæst" #. Translators: Icon's tooltip when an extension is incompatible #: src/exm-extension-row.blp:63 src/exm-install-button.c:117 #, fuzzy #| msgid "This extension is incompatible with your current version of GNOME." msgid "This extension is incompatible with your current version of GNOME" msgstr "Denne udvidelse er inkompatibel med din nuværende version af GNOME." #. Translators: Icon's tooltip when an extension update is available #: src/exm-extension-row.blp:80 msgid "A newer version of this extension is available" msgstr "En nyere version af denne udvidelse er tilgængelig" #: src/exm-extension-row.blp:98 src/exm-info-bar.blp:50 msgid "Version" msgstr "Version" #: src/exm-extension-row.blp:107 msgid "Session Modes" msgstr "" #: src/exm-extension-row.blp:137 msgid "Error" msgstr "Fejl" #: src/exm-extension-row.blp:158 msgid "See Details" msgstr "Se Detaljer" #: src/exm-extension-row.blp:169 #, fuzzy #| msgid "Remove" msgid "Remove…" msgstr "Fjern" #: src/exm-extension-row.c:175 msgid "Unlock Dialog" msgstr "" #. Translators: GNOME Display Manager #: src/exm-extension-row.c:181 msgid "GDM" msgstr "" #. Translators: Label when an extension runs on both, login and lock screens #: src/exm-extension-row.c:189 msgid "" "This extension will run while the screen is locked and no user is logged in" msgstr "" #. Translators: Label when an extension runs on the lock screen #: src/exm-extension-row.c:194 msgid "This extension will run while the screen is locked" msgstr "" #. Translators: Label when an extension runs on the login screen #: src/exm-extension-row.c:199 #, fuzzy #| msgid "One extension will be updated on next login." #| msgid_plural "%d extensions will be updated on next login." msgid "This extension will run while no user is logged in" msgstr "En udvidelse vil blive opdateret når du logger ind igen." #: src/exm-help-overlay.blp:11 msgctxt "shortcut window" msgid "General" msgstr "Generelt" #: src/exm-help-overlay.blp:14 #, fuzzy #| msgctxt "State" #| msgid "Installed" msgctxt "shortcut window" msgid "Show Installed Page" msgstr "Installeret" #: src/exm-help-overlay.blp:19 msgctxt "shortcut window" msgid "Show Browse Page" msgstr "" #: src/exm-help-overlay.blp:24 msgctxt "shortcut window" msgid "Toggle Search" msgstr "" #: src/exm-help-overlay.blp:29 #, fuzzy #| msgid "Keyboard Shortcuts" msgctxt "shortcut window" msgid "Show Keyboard Shortcuts" msgstr "Tastatur Genveje" #: src/exm-help-overlay.blp:34 msgctxt "shortcut window" msgid "Close Window" msgstr "" #: src/exm-help-overlay.blp:39 msgctxt "shortcut window" msgid "Quit" msgstr "Afslut" #: src/exm-help-overlay.blp:45 msgctxt "shortcut window" msgid "Screenshot View" msgstr "" #: src/exm-help-overlay.blp:48 src/exm-help-overlay.blp:63 #, fuzzy #| msgid "Log Out" msgctxt "shortcut window" msgid "Zoom In" msgstr "Log Ud" #: src/exm-help-overlay.blp:53 src/exm-help-overlay.blp:68 #, fuzzy #| msgid "Log Out" msgctxt "shortcut window" msgid "Zoom Out" msgstr "Log Ud" #: src/exm-help-overlay.blp:58 msgctxt "shortcut window" msgid "Reset Zoom" msgstr "" #: src/exm-info-bar.blp:28 #, fuzzy #| msgid "Downloads" msgctxt "Number of downloads" msgid "Downloads" msgstr "Hentninger" #: src/exm-info-bar.c:107 msgid "Unsupported" msgstr "Ikke Understøttet" #: src/exm-install-button.c:127 #, fuzzy #| msgid "Install" msgid "Install…" msgstr "Installér" #: src/exm-install-button.c:132 #, fuzzy #| msgctxt "State" #| msgid "Installed" msgid "Installing" msgstr "Installeret" #: src/exm-install-button.c:136 msgctxt "State" msgid "Installed" msgstr "Installeret" #: src/exm-install-button.c:140 #, fuzzy #| msgid "Unsupported" msgid "Unsupported…" msgstr "Ikke Understøttet" #: src/exm-installed-page.blp:16 #, fuzzy #| msgid "Log Out" msgid "_Log Out…" msgstr "Log Ud" #: src/exm-installed-page.blp:28 #, fuzzy #| msgid "System Extensions" msgid "Use Extensions" msgstr "Systeminstallerede Udvidelser" #: src/exm-installed-page.blp:29 #, fuzzy #| msgid "Performance and stability" msgid "Extensions can cause performance and stability issues" msgstr "Ydelse og stabilitet" #: src/exm-installed-page.blp:34 src/exm-upgrade-assistant.blp:133 msgid "User-Installed Extensions" msgstr "Brugerinstallerede Udvidelser" #: src/exm-installed-page.blp:51 src/exm-upgrade-assistant.blp:150 #, fuzzy #| msgid "Displays user and system extensions separately" msgid "No User Extensions Installed" msgstr "Vis bruger- og systemudvidelser seperat" #: src/exm-installed-page.blp:55 #, fuzzy #| msgctxt "Navigation" #| msgid "Browse" msgid "Browse" msgstr "Gennemse" #: src/exm-installed-page.blp:69 src/exm-upgrade-assistant.blp:160 msgid "System Extensions" msgstr "Systeminstallerede Udvidelser" #: src/exm-installed-page.blp:86 src/exm-upgrade-assistant.blp:177 #, fuzzy #| msgid "Displays user and system extensions separately" msgid "No System Extensions Installed" msgstr "Vis bruger- og systemudvidelser seperat" #. Translators: Text announced by screen readers when interacting with the list of search results #: src/exm-installed-page.blp:111 #, fuzzy #| msgid "Sort search results" msgid "Search Results" msgstr "Sortér søgeresultater" #: src/exm-installed-page.blp:124 msgid "Try a different search or search online" msgstr "" #: src/exm-installed-page.blp:131 msgid "_Search Online" msgstr "" #. Translators: '%d' = number of extensions that will be updated #: src/exm-installed-page.c:298 #, fuzzy, c-format #| msgid "One extension will be updated on next login." #| msgid_plural "%d extensions will be updated on next login." msgid "%d extension will be updated on next login" msgid_plural "%d extensions will be updated on next login" msgstr[0] "En udvidelse vil blive opdateret når du logger ind igen." msgstr[1] "%d udvidelser vil blive opdateret når du logger ind igen." #: src/exm-rating.c:142 #, c-format msgid "%i Star" msgid_plural "%i Stars" msgstr[0] "" msgstr[1] "" #. Translators: Button's tooltip to zoom out screenshots #: src/exm-screenshot-view.blp:37 #, fuzzy #| msgid "Log Out" msgid "Zoom Out" msgstr "Log Ud" #. Translators: Button's tooltip to zoom in screenshots #: src/exm-screenshot-view.blp:51 msgid "Zoom In" msgstr "" #: src/exm-upgrade-assistant.blp:11 msgid "Upgrade Assistant" msgstr "" #: src/exm-upgrade-assistant.blp:66 msgid "_Check Compatibility" msgstr "" #: src/exm-upgrade-assistant.blp:189 msgid "_Copy to Clipboard" msgstr "" #: src/exm-upgrade-assistant.c:188 #, fuzzy, c-format #| msgid "Search for extensions" msgid "Checked %d/%d Extensions" msgstr "Søg efter udvidelser" #. Set percentage text #: src/exm-upgrade-assistant.c:207 #, c-format msgid "%d%% Compatible" msgstr "" #: src/exm-upgrade-assistant.c:223 #, c-format msgid "" "GNOME %s supports %d out of %d of the extensions currently " "installed on the system" msgstr "" #. Translators: Icon's tooltip when an extension is compatible #: src/exm-upgrade-assistant.c:503 #, fuzzy #| msgid "A newer version of this extension is available" msgid "A compatible version of the extension exists" msgstr "En nyere version af denne udvidelse er tilgængelig" #. Translators: Icon's tooltip when an extension is not compatible #: src/exm-upgrade-assistant.c:510 #, fuzzy #| msgid "A newer version of this extension is available" msgid "No compatible version of the extension exists" msgstr "En nyere version af denne udvidelse er tilgængelig" #. Translators: Icon's tooltip when an extension compatibility is unknown #: src/exm-upgrade-assistant.c:517 msgid "" "This extension is not hosted on extensions.gnome.org. Its compatibility " "cannot be determined." msgstr "" #: src/exm-upgrade-assistant.c:608 #, c-format msgid "" "You are currently running GNOME %s. Select a version of GNOME below " "and check whether your extensions will continue to be available." msgstr "" #. Translators: Tooltip of the search icon in the header bar #: src/exm-window.blp:39 #, fuzzy #| msgid "User-Installed Extensions" msgid "Search Installed Extensions" msgstr "Brugerinstallerede Udvidelser" #: src/exm-window.blp:48 msgid "Main Menu" msgstr "" #: src/exm-window.blp:59 #, fuzzy #| msgid "Search for extensions" msgid "Search for installed extensions" msgstr "Søg efter udvidelser" #: src/exm-window.blp:71 #, fuzzy #| msgctxt "Navigation" #| msgid "Installed" msgctxt "Navigation" msgid "_Installed" msgstr "Installeret" #: src/exm-window.blp:80 #, fuzzy #| msgctxt "Navigation" #| msgid "Browse" msgctxt "Navigation" msgid "_Browse" msgstr "Gennemse" #. Translators: the character preceded by "_" should not be the same #. as others in the same menu #: src/exm-window.blp:108 #, fuzzy #| msgid "Sort Enabled First" msgid "Sort _Enabled First" msgstr "Sortér først efter aktiverede" #: src/exm-window.blp:109 #, fuzzy #| msgid "Unsupported" msgid "_Show Unsupported" msgstr "Ikke Understøttet" #: src/exm-window.blp:113 msgid "_Upgrade Assistant" msgstr "" #: src/exm-window.blp:114 #, fuzzy #| msgid "Keyboard Shortcuts" msgid "_Keyboard Shortcuts" msgstr "Tastatur Genveje" #: src/exm-window.blp:115 #, fuzzy #| msgid "About Extension Manager" msgid "_About Extension Manager" msgstr "Om Udvidelsesadministrering" #: src/exm-window.blp:120 #, fuzzy #| msgid "User-Installed Extensions" msgid "Uninstall Extension?" msgstr "Brugerinstallerede Udvidelser" #: src/exm-window.blp:121 msgid "" "The extension's features and functionality will no longer be accessible. Are " "you sure you want to uninstall?" msgstr "" #: src/exm-window.blp:126 msgid "_No" msgstr "" #: src/exm-window.blp:127 msgid "_Yes" msgstr "" #: src/exm-window.blp:132 #, fuzzy #| msgid "Supported Versions" msgid "Unsupported Extension" msgstr "Understøttede Versioner" #: src/exm-window.blp:133 #, fuzzy #| msgid "" #| "This extension does not support your GNOME Shell version.\n" #| "Would you like to install anyway?" msgid "" "This extension does not support your GNOME Shell version. It may cause " "errors if installed." msgstr "" "Denne udvidelse understøtter ikke din GNOME Skalversion.\n" "Vil du installerer den alligevel?" #: src/exm-window.blp:139 #, fuzzy #| msgid "Install" msgid "_Install Anyway" msgstr "Installér" #: src/exm-window.blp:140 msgid "_Go Back" msgstr "" #: src/exm-window.c:348 #, fuzzy #| msgid "See Details" msgid "_Details" msgstr "Se Detaljer" #: src/web/exm-request-handler.c:99 msgid "" "Check GNOME infrastructure status " "and try again later" msgstr "" #: src/web/exm-request-handler.c:100 msgid "Check your network status and try again" msgstr "" #~ msgid "User Reviews" #~ msgstr "Bruger Anmeldelser" #, fuzzy #~| msgid "Updates are available" #~ msgid "Updates Available" #~ msgstr "Opdateringer er tilgængelige" #, fuzzy #~| msgid "Unsupported" #~ msgid "Supported" #~ msgstr "Ikke Understøttet" #~ msgid "A utility for managing GNOME Shell Extensions" #~ msgstr "Et værktøj til at administrere GNOME Skaludvidelser" #~ msgid "This extension is incompatible with your current version of GNOME." #~ msgstr "Denne udvidelse er inkompatibel med din nuværende version af GNOME." #, fuzzy #~| msgid "An Error Occurred" #~ msgid "An error occurred." #~ msgstr "En Fejl Opstod" #~ msgid "@app_title@" #~ msgstr "@app_title@" #~ msgid "The second feature update to extension-manager. Highlights include:" #~ msgstr "" #~ "Den første funktionsodpatering til Udvidelsesadministrering. " #~ "Højdepunkterne inkluderer:" #~ msgid "View comments and reviews" #~ msgstr "Se kommentarer og anmeldelser" #~ msgid "Support for in-app updates" #~ msgstr "Understøttelse af opdateringer i app'en" #~ msgid "Better handling errors and out-of-date extensions" #~ msgstr "Bedre håndtering af fejl og forældede udvidelser" #~ msgid "Allow installing 'unsupported' extensions" #~ msgstr "Tillad installtion af \"ikke-understøttede\" udvidelser" #~ msgid "Display release notes on first run" #~ msgstr "Vis udgivelsesnoter første gang programmet åbnes" #~ msgid "New app icon" #~ msgstr "Nyt app-ikon" #~ msgid "Optionally sort extensions by enabled status" #~ msgstr "Mulighed for at sortere udvidelser efter om de er aktiverede" #~ msgid "Translation updates" #~ msgstr "Oversættelses opdateringer" #~ msgid "Fix special characters in search results" #~ msgstr "Fiks specielle tegn i søgeresultater" #~ msgid "Fixes a crash that sometimes occurs while uninstalling an extension" #~ msgstr "" #~ "Fikser et crash der nogle gange opstår når man afinstallerer en udvidelse" #~ msgid "The first feature update to extension-manager. Highlights include:" #~ msgstr "" #~ "Den første funktionsodpatering til Udvidelsesadministrering. Højdepunkter " #~ "inkluderer:" #~ msgid "Dark theme and support for overriding the system colour scheme" #~ msgstr "Mørkt tema og understøttelse af at omgå systemets farveskema" #~ msgid "Shows screenshots in extension listings" #~ msgstr "Vis skærmbilleder i udvidelses kataloget" #~ msgid "Shell version compatibility check" #~ msgstr "Skalversion kompatibilitetstjek" #~ msgid "Localised into seven languages" #~ msgstr "Oversat til syv sprog" #~ msgid "Global extension on/off toggle" #~ msgstr "Global tænd/sluk af udvidelser" #~ msgid "Extension Manager (Development)" #~ msgstr "Udvidelsesadministrering (Udvikling)" #~ msgid "" #~ "A very simple tool for browsing, downloading, and managing GNOME shell " #~ "extensions." #~ msgstr "" #~ "Et meget simpelt værktøj til at gennemse, hente og administrerer GNOME " #~ "skaludvidelser." #~ msgid "e.g. \"Blur my Shell\"" #~ msgstr "f.eks. \"Blur my Shell\"" #~ msgid "Popularity" #~ msgstr "Popularitet" #~ msgid "Release Notes" #~ msgstr "Udgivelsesnoter" #~ msgid "Theme" #~ msgstr "Tema" #~ msgid "Follow System" #~ msgstr "Følg System" #~ msgid "Light" #~ msgstr "Lys" #~ msgid "Dark" #~ msgstr "Mørk" #~ msgid "Are you sure you want to uninstall?" #~ msgstr "Er du sikker på du vil afinstallere?" #~ msgid "What's New" #~ msgstr "Hvad er Nyt" #~ msgid "View Release Notes" #~ msgstr "Se Udgivelsesnoter" #, c-format #~ msgid "" #~ "This is your first time using Extension Manager %s.\n" #~ "Would you like to see the release notes?" #~ msgstr "" #~ "Det er første gang du bruger Udvidelsesadministrering %s.\n" #~ "Vil du se udgivelsesnoterne?" #~ msgid "Matthew Jakeman" #~ msgstr "Matthew Jakeman" #~ msgid "Colour Scheme Preference" #~ msgstr "Farveskema Præferance" #~ msgid "" #~ "Whether to follow the system colour scheme or force either light or dark " #~ "mode." #~ msgstr "" #~ "Hvorvidt systemets farveskema skal følges eller om enten lyst eller mørkt " #~ "tema skal gennemtvinges." #~ msgctxt "shortcut window" #~ msgid "Show Shortcuts" #~ msgstr "Vis Genveje" extension-manager-0.6.3/po/de.po000066400000000000000000000464271477302130300165270ustar00rootroot00000000000000# German translations for extension-manager package. # Copyright (C) 2024 Matthew Jakeman # This file is distributed under the same license as the extension-manager package. # # Antifallobst , 2022. # Lauri Jouaux , 2022. # Gabriel Brand , 2022-2024, 2025. # Robert Winzer , 2024. msgid "" msgstr "" "Project-Id-Version: extension-manager\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-03-06 16:36+0000\n" "PO-Revision-Date: 2025-02-24 10:03+0000\n" "Last-Translator: Gabriel Brand \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: Weblate 5.10.1-dev\n" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:2 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:6 #: src/exm-window.blp:7 msgid "Extension Manager" msgstr "Erweiterungs-Manager" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:11 msgid "Manage GNOME Shell Extensions" msgstr "GNOME-Shell-Erweiterungen verwalten" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #. Make sure to leave the original strings and add your translations afterwards, so that users can search both in English and your language. #: data/com.mattjakeman.ExtensionManager.desktop.in.in:14 msgid "extension;manager;shell;" msgstr "extension;manager;shell;gnome;erweiterung;verwalten;" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:7 msgid "Browse, install, and manage GNOME Shell Extensions" msgstr "Suchen, installieren und verwalten Sie GNOME-Shell-Erweiterungen" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:13 msgid "A utility for browsing and installing GNOME Shell Extensions." msgstr "" "Ein Programm zum Suchen und Installieren von GNOME-Shell-Erweiterungen." #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:14 msgid "Features:" msgstr "Funktionen:" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:16 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:26 msgid "Browse extensions.gnome.org right inside the app" msgstr "Durchstöbern Sie extensions.gnome.org direkt in der Anwendung" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:17 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:22 msgid "Manage the extensions you already have installed" msgstr "Verwalten Sie bereits installierte Erweiterungen" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:30 msgid "See all the details of your extensions" msgstr "Sehen Sie alle Details Ihrer Erweiterungen" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:34 msgid "Check your extensions compatibility with the next version of GNOME" msgstr "" "Prüfen Sie die Kompatibilität Ihrer Erweiterungen mit der nächsten GNOME-" "Version" #: src/exm-application.c:201 msgid "Browse, install, and manage GNOME Shell Extensions." msgstr "Suchen, installieren und verwalten Sie GNOME-Shell-Erweiterungen." #. Translators: Use 'Name email@domain.com' or 'Name https://website.example' (without single quotes). Do not delete existing names, write yours on a new line. #: src/exm-application.c:204 msgid "translator-credits" msgstr "" "Antifallobst \n" "Lauri Jouaux \n" "Gabriel Brand \n" "Robert Winzer " #: src/exm-browse-page.blp:16 msgid "Search for Extensions" msgstr "Nach Erweiterungen suchen" #: src/exm-browse-page.blp:17 msgid "" "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell Extensions" msgstr "" "Geben Sie einen Suchbegriff ein, um auf »extensions.gnome.org« nach GNOME-" "Shell-Erweiterungen zu suchen" #: src/exm-browse-page.blp:47 msgid "Relevance" msgstr "Relevanz" #: src/exm-browse-page.blp:48 msgctxt "Sort search results" msgid "Downloads" msgstr "Downloads" #: src/exm-browse-page.blp:49 msgid "Recent" msgstr "Aktualität" #: src/exm-browse-page.blp:50 src/exm-detail-view.blp:113 msgid "Name" msgstr "Name" #: src/exm-browse-page.blp:57 msgid "Sort search results" msgstr "Suchergebnisse sortieren" #: src/exm-browse-page.blp:103 msgid "_Load More Results" msgstr "_Weitere Ergebnisse laden" #: src/exm-browse-page.blp:137 src/exm-installed-page.blp:123 msgid "No Results Found" msgstr "Keine Ergebnisse gefunden" #: src/exm-browse-page.blp:144 msgid "Try a different search" msgstr "Probieren Sie eine andere Suche" #: src/exm-browse-page.blp:178 src/exm-comment-dialog.blp:34 #: src/exm-detail-view.blp:49 src/exm-detail-view.blp:291 #: src/exm-upgrade-assistant.blp:100 msgid "Connection Error" msgstr "Verbindungsfehler" #: src/exm-comment-dialog.blp:13 src/exm-detail-view.blp:248 msgid "Reviews and Comments" msgstr "Rezensionen und Kommentare" #: src/exm-comment-dialog.blp:25 msgid "Loading" msgstr "Werden geladen" #: src/exm-comment-tile.blp:30 src/exm-detail-view.blp:127 msgid "Author" msgstr "Autor" #: src/exm-detail-view.blp:40 msgid "Loading Details" msgstr "Details werden geladen" #: src/exm-detail-view.blp:59 src/exm-window.c:347 msgid "An Error Occurred" msgstr "Ein Fehler ist aufgetreten" #: src/exm-detail-view.blp:60 msgid "No extension details available" msgstr "Keine Erweiterungsdetails verfügbar" #: src/exm-detail-view.blp:154 msgid "Enlarge Image" msgstr "Bild vergrößern" #: src/exm-detail-view.blp:172 src/exm-extension-row.blp:89 msgid "Description" msgstr "Beschreibung" #: src/exm-detail-view.blp:195 msgid "Links" msgstr "Links" #: src/exm-detail-view.blp:203 msgid "Homepage" msgstr "Homepage" #: src/exm-detail-view.blp:219 msgid "Donate" msgstr "Spenden" #: src/exm-detail-view.blp:228 msgid "View on Extensions" msgstr "Auf »GNOME Extensions« anzeigen" #: src/exm-detail-view.blp:271 msgid "Reviews and comments are disabled for this extension" msgstr "Rezensionen und Kommentare sind für diese Erweiterung deaktiviert" #: src/exm-detail-view.blp:314 msgid "There are no reviews or comments" msgstr "Es sind keine Rezensionen oder Kommentare vorhanden" #: src/exm-detail-view.blp:343 msgid "_Show All" msgstr "_Alle anzeigen" #. Translators: '%s' = extension name #: src/exm-detail-view.c:445 #, c-format msgid "%s Icon" msgstr "%s Symbol" #. Translators: '%s' = extension name #: src/exm-detail-view.c:478 #, c-format msgid "%s Screenshot" msgstr "%s Bildschirmfoto" #: src/exm-error-dialog.blp:7 msgid "Error Report" msgstr "Fehlerbericht" #: src/exm-error-dialog.blp:22 msgid "An unexpected error occurred in Extension Manager" msgstr "Ein unerwarteter Fehler ist im Erweiterungs-Manager aufgetreten" #: src/exm-error-dialog.blp:36 msgid "Copy to Clipboard" msgstr "In die Zwischenablage kopieren" #: src/exm-error-dialog.blp:77 msgid "_New Issue" msgstr "_Neues »Issue«" #. Success indicator #: src/exm-error-dialog.c:125 src/exm-upgrade-assistant.c:347 msgid "Copied" msgstr "Kopiert" #: src/exm-error-dialog.c:173 msgid "Please open a new issue and attach the following information:" msgstr "" "Bitte öffnen Sie ein neues »Issue« und hängen Sie folgende Information an:" #. Translators: '%s' = Name of Distributor (e.g. "Packager123") #: src/exm-error-dialog.c:177 #, c-format msgid "" "You are using a third-party build of Extension Manager. Please contact the package distributor (%s) first before " "filing an issue. Be sure to attach the following information:" msgstr "" "Sie verwenden eine Drittanbieterversion von Erweiterungs-Manager. Bitte " "kontaktieren Sie zuerst den Paketanbieter (%s), " "bevor Sie ein Problem melden. Bitte fügen Sie die folgenden Informationen " "bei:" #. Translators: Button's tooltip to open extension's preferences dialog #: src/exm-extension-row.blp:28 msgid "Open extension preferences" msgstr "Einstellungen der Erweiterung öffnen" #. Translators: Icon's tooltip when an extension has an error #: src/exm-extension-row.blp:46 msgid "An error occurred while loading this extension" msgstr "Beim Laden dieser Erweiterung ist ein Fehler aufgetreten" #. Translators: Icon's tooltip when an extension is incompatible #: src/exm-extension-row.blp:63 src/exm-install-button.c:117 msgid "This extension is incompatible with your current version of GNOME" msgstr "Diese Erweiterung ist inkompatibel mit ihrer aktuellen GNOME-Version" #. Translators: Icon's tooltip when an extension update is available #: src/exm-extension-row.blp:80 msgid "A newer version of this extension is available" msgstr "Eine neuere Version dieser Erweiterung ist verfügbar" #: src/exm-extension-row.blp:98 src/exm-info-bar.blp:50 msgid "Version" msgstr "Version" #: src/exm-extension-row.blp:107 msgid "Session Modes" msgstr "Sitzungsmodi" #: src/exm-extension-row.blp:137 msgid "Error" msgstr "Fehler" #: src/exm-extension-row.blp:158 msgid "See Details" msgstr "Details anzeigen" #: src/exm-extension-row.blp:169 msgid "Remove…" msgstr "Entfernen …" #: src/exm-extension-row.c:175 msgid "Unlock Dialog" msgstr "Entsperren-Dialog" #. Translators: GNOME Display Manager #: src/exm-extension-row.c:181 msgid "GDM" msgstr "GDM" #. Translators: Label when an extension runs on both, login and lock screens #: src/exm-extension-row.c:189 msgid "" "This extension will run while the screen is locked and no user is logged in" msgstr "" "Diese Erweiterung wird ausgeführt, während der Bildschirm gesperrt ist und " "kein Benutzer angemeldet ist" #. Translators: Label when an extension runs on the lock screen #: src/exm-extension-row.c:194 msgid "This extension will run while the screen is locked" msgstr "Diese Erweiterung wird ausgeführt, während der Bildschirm gesperrt ist" #. Translators: Label when an extension runs on the login screen #: src/exm-extension-row.c:199 msgid "This extension will run while no user is logged in" msgstr "" "Diese Erweiterung wird ausgeführt, während kein Benutzer angemeldet ist" #: src/exm-help-overlay.blp:11 msgctxt "shortcut window" msgid "General" msgstr "Allgemein" #: src/exm-help-overlay.blp:14 msgctxt "shortcut window" msgid "Show Installed Page" msgstr "»Installiert«-Seite anzeigen" #: src/exm-help-overlay.blp:19 msgctxt "shortcut window" msgid "Show Browse Page" msgstr "»Suchen«-Seite anzeigen" #: src/exm-help-overlay.blp:24 msgctxt "shortcut window" msgid "Toggle Search" msgstr "Suche umschalten" #: src/exm-help-overlay.blp:29 msgctxt "shortcut window" msgid "Show Keyboard Shortcuts" msgstr "Tastenkürzel anzeigen" #: src/exm-help-overlay.blp:34 msgctxt "shortcut window" msgid "Close Window" msgstr "Fenster schließen" #: src/exm-help-overlay.blp:39 msgctxt "shortcut window" msgid "Quit" msgstr "Beenden" #: src/exm-help-overlay.blp:45 msgctxt "shortcut window" msgid "Screenshot View" msgstr "Bildschirmfotoansicht" #: src/exm-help-overlay.blp:48 src/exm-help-overlay.blp:63 msgctxt "shortcut window" msgid "Zoom In" msgstr "Vergrößern" #: src/exm-help-overlay.blp:53 src/exm-help-overlay.blp:68 msgctxt "shortcut window" msgid "Zoom Out" msgstr "Verkleinern" #: src/exm-help-overlay.blp:58 msgctxt "shortcut window" msgid "Reset Zoom" msgstr "Vergrößerung zurücksetzen" #: src/exm-info-bar.blp:28 msgctxt "Number of downloads" msgid "Downloads" msgstr "Downloads" #: src/exm-info-bar.c:107 msgid "Unsupported" msgstr "Nicht unterstützt" #: src/exm-install-button.c:127 msgid "Install…" msgstr "Installieren …" #: src/exm-install-button.c:132 msgid "Installing" msgstr "Wird installiert" #: src/exm-install-button.c:136 msgctxt "State" msgid "Installed" msgstr "Installiert" #: src/exm-install-button.c:140 msgid "Unsupported…" msgstr "Nicht unterstützt …" #: src/exm-installed-page.blp:16 msgid "_Log Out…" msgstr "_Abmelden …" #: src/exm-installed-page.blp:28 msgid "Use Extensions" msgstr "Erweiterungen verwenden" #: src/exm-installed-page.blp:29 msgid "Extensions can cause performance and stability issues" msgstr "Erweiterungen können Leistungs- und Stabilitätsprobleme verursachen" #: src/exm-installed-page.blp:34 src/exm-upgrade-assistant.blp:133 msgid "User-Installed Extensions" msgstr "Benutzerinstallierte Erweiterungen" #: src/exm-installed-page.blp:51 src/exm-upgrade-assistant.blp:150 msgid "No User Extensions Installed" msgstr "Keine Benutzererweiterungen installiert" #: src/exm-installed-page.blp:55 msgid "Browse" msgstr "Suchen" #: src/exm-installed-page.blp:69 src/exm-upgrade-assistant.blp:160 msgid "System Extensions" msgstr "Systemerweiterungen" #: src/exm-installed-page.blp:86 src/exm-upgrade-assistant.blp:177 msgid "No System Extensions Installed" msgstr "Keine Systemerweiterungen installiert" #. Translators: Text announced by screen readers when interacting with the list of search results #: src/exm-installed-page.blp:111 msgid "Search Results" msgstr "Suchergebnisse" #: src/exm-installed-page.blp:124 msgid "Try a different search or search online" msgstr "Probieren Sie eine andere Suche oder suchen Sie online" #: src/exm-installed-page.blp:131 msgid "_Search Online" msgstr "_Online suchen" #. Translators: '%d' = number of extensions that will be updated #: src/exm-installed-page.c:298 #, c-format msgid "%d extension will be updated on next login" msgid_plural "%d extensions will be updated on next login" msgstr[0] "%d Erweiterung wird bei der nächsten Anmeldung aktualisiert" msgstr[1] "%d Erweiterungen werden bei der nächsten Anmeldung aktualisiert" #: src/exm-rating.c:142 #, c-format msgid "%i Star" msgid_plural "%i Stars" msgstr[0] "%i Stern" msgstr[1] "%i Sterne" #. Translators: Button's tooltip to zoom out screenshots #: src/exm-screenshot-view.blp:37 msgid "Zoom Out" msgstr "Verkleinern" #. Translators: Button's tooltip to zoom in screenshots #: src/exm-screenshot-view.blp:51 msgid "Zoom In" msgstr "Vergrößern" #: src/exm-upgrade-assistant.blp:11 msgid "Upgrade Assistant" msgstr "Upgrade-Assistent" #: src/exm-upgrade-assistant.blp:66 msgid "_Check Compatibility" msgstr "_Kompatibilität überprüfen" #: src/exm-upgrade-assistant.blp:189 msgid "_Copy to Clipboard" msgstr "In die Zwischenablage _kopieren" #: src/exm-upgrade-assistant.c:188 #, c-format msgid "Checked %d/%d Extensions" msgstr "%d/%d Erweiterungen überprüft" #. Set percentage text #: src/exm-upgrade-assistant.c:207 #, c-format msgid "%d%% Compatible" msgstr "%d%% Kompatibel" #: src/exm-upgrade-assistant.c:223 #, c-format msgid "" "GNOME %s supports %d out of %d of the extensions currently " "installed on the system" msgstr "" "GNOME %s unterstützt %d von %d der derzeit auf dem System " "installierten Erweiterungen" #. Translators: Icon's tooltip when an extension is compatible #: src/exm-upgrade-assistant.c:503 msgid "A compatible version of the extension exists" msgstr "Eine kompatible Version der Erweiterung existiert" #. Translators: Icon's tooltip when an extension is not compatible #: src/exm-upgrade-assistant.c:510 msgid "No compatible version of the extension exists" msgstr "Keine kompatible Version der Erweiterung existiert" #. Translators: Icon's tooltip when an extension compatibility is unknown #: src/exm-upgrade-assistant.c:517 msgid "" "This extension is not hosted on extensions.gnome.org. Its compatibility " "cannot be determined." msgstr "" "Diese Erweiterung wird nicht auf extensions.gnome.org gehostet. Ihre " "Kompatibilität kann nicht bestimmt werden." #: src/exm-upgrade-assistant.c:608 #, c-format msgid "" "You are currently running GNOME %s. Select a version of GNOME below " "and check whether your extensions will continue to be available." msgstr "" "Sie verwenden derzeit GNOME %s. Wählen Sie unten eine GNOME-Version " "aus und prüfen Sie, ob Ihre Erweiterungen weiterhin verfügbar sein werden." #. Translators: Tooltip of the search icon in the header bar #: src/exm-window.blp:39 msgid "Search Installed Extensions" msgstr "Installierte Erweiterungen durchsuchen" #: src/exm-window.blp:48 msgid "Main Menu" msgstr "Hauptmenü" #: src/exm-window.blp:59 msgid "Search for installed extensions" msgstr "Nach installierten Erweiterungen suchen" #: src/exm-window.blp:71 msgctxt "Navigation" msgid "_Installed" msgstr "_Installiert" #: src/exm-window.blp:80 msgctxt "Navigation" msgid "_Browse" msgstr "_Suchen" #. Translators: the character preceded by "_" should not be the same #. as others in the same menu #: src/exm-window.blp:108 msgid "Sort _Enabled First" msgstr "_Aktivierte zuerst anzeigen" #: src/exm-window.blp:109 msgid "_Show Unsupported" msgstr "_Nicht unterstützte anzeigen" #: src/exm-window.blp:113 msgid "_Upgrade Assistant" msgstr "_Upgrade-Assistent" #: src/exm-window.blp:114 msgid "_Keyboard Shortcuts" msgstr "_Tastenkürzel" #: src/exm-window.blp:115 msgid "_About Extension Manager" msgstr "_Info zu Erweiterungs-Manager" #: src/exm-window.blp:120 msgid "Uninstall Extension?" msgstr "Erweiterung deinstallieren?" #: src/exm-window.blp:121 msgid "" "The extension's features and functionality will no longer be accessible. Are " "you sure you want to uninstall?" msgstr "" "Die Funktionen und Funktionalität der Erweiterung sind dann nicht mehr " "zugänglich. Sind Sie sicher, dass Sie sie deinstallieren möchten?" #: src/exm-window.blp:126 msgid "_No" msgstr "_Nein" #: src/exm-window.blp:127 msgid "_Yes" msgstr "_Ja" #: src/exm-window.blp:132 msgid "Unsupported Extension" msgstr "Nicht unterstützte Erweiterung" #: src/exm-window.blp:133 msgid "" "This extension does not support your GNOME Shell version. It may cause " "errors if installed." msgstr "" "Diese Erweiterung unterstützt Ihre GNOME-Shell-Version nicht. Sie kann bei " "der Installation Fehler verursachen." #: src/exm-window.blp:139 msgid "_Install Anyway" msgstr "_Trotzdem installieren" #: src/exm-window.blp:140 msgid "_Go Back" msgstr "_Zurückgehen" #: src/exm-window.c:348 msgid "_Details" msgstr "_Details" #: src/web/exm-request-handler.c:99 msgid "" "Check GNOME infrastructure status " "and try again later" msgstr "" "Prüfen Sie den GNOME-" "Infrastrukturstatus und versuchen Sie es später erneut" #: src/web/exm-request-handler.c:100 msgid "Check your network status and try again" msgstr "Prüfen Sie Ihren Netzwerkstatus und versuchen Sie es erneut" #~ msgid "Comments" #~ msgstr "Kommentare" #~ msgid "Loading Comments" #~ msgstr "Kommentare werden geladen" #~ msgid "User Reviews" #~ msgstr "Benutzerrezensionen" #~ msgid "No comments yet" #~ msgstr "Noch keine Kommentare" #~ msgid "" #~ "This extension could be activated in session modes such as the login " #~ "screen or the lock screen" #~ msgstr "" #~ "Diese Erweiterung kann in Sitzungsmodi wie dem Anmeldebildschirm oder dem " #~ "Sperrbildschirm aktiviert werden" #, c-format #~ msgid "%s by %s" #~ msgstr "%s von %s" #~ msgid "Updates Available" #~ msgstr "Updates verfügbar" #~ msgid "Supported" #~ msgstr "Unterstützt" #~ msgid "Unknown" #~ msgstr "Unbekannt" #~ msgid "A utility for managing GNOME Shell Extensions" #~ msgstr "Ein Programm zum Verwalten von GNOME-Shell-Erweiterungen" #, c-format #~ msgid "e.g. “%s”" #~ msgstr "z.B. »%s«" #~ msgid "This extension is incompatible with your current version of GNOME." #~ msgstr "" #~ "Diese Erweiterung ist inkompatibel mit ihrer aktuellen GNOME-Version." #~ msgid "An error occurred." #~ msgstr "Ein Fehler ist aufgetreten." extension-manager-0.6.3/po/el.po000066400000000000000000000721631477302130300165330ustar00rootroot00000000000000# LANGUAGE translations for extension-manager package. # Copyright (C) YEAR THE extension-manager'S COPYRIGHT HOLDER # This file is distributed under the same license as the extension-manager package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: extension-manager\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-03-06 16:36+0000\n" "PO-Revision-Date: 2024-03-16 18:50+0000\n" "Last-Translator: Dimitris Aspetakis \n" "Language-Team: Greek \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: Weblate 5.5-dev\n" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:2 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:6 #: src/exm-window.blp:7 msgid "Extension Manager" msgstr "Διαχειριστής Επεκτάσεων" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:11 msgid "Manage GNOME Shell Extensions" msgstr "Διαχείριση επεκτάσεων του γραφικού κελύφους GNOME" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #. Make sure to leave the original strings and add your translations afterwards, so that users can search both in English and your language. #: data/com.mattjakeman.ExtensionManager.desktop.in.in:14 msgid "extension;manager;shell;" msgstr "επέκταση;διαχειριστής;γραφικό κέλυφος;" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:7 msgid "Browse, install, and manage GNOME Shell Extensions" msgstr "" "Αναζήτηση, εγκατάσταση και διαχείριση των επεκτάσεων του γραφικού κελύφους " "GNOME" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:13 msgid "A utility for browsing and installing GNOME Shell Extensions." msgstr "" "Εργαλείο για την περιήγηση και την εγκατάσταση επεκτάσεων για το γραφικό " "κέλυφος GNOME." #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:14 msgid "Features:" msgstr "Χαρακτηριστικά:" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:16 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:26 msgid "Browse extensions.gnome.org right inside the app" msgstr "Περιηγηθείτε το extensions.gnome.org μέσα από την εφαρμογή" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:17 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:22 msgid "Manage the extensions you already have installed" msgstr "Κάντε διαχείριση των ήδη εγκατεστημένων επεκτάσεων σας" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:30 #, fuzzy #| msgid "Search for extensions" msgid "See all the details of your extensions" msgstr "Αναζητήστε επεκτάσεις" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:34 #, fuzzy #| msgid "This extension is incompatible with your current version of GNOME" msgid "Check your extensions compatibility with the next version of GNOME" msgstr "Αυτή η επέκταση είναι μη συμβατή με την τρέχουσα εκδοσή GNOME" #: src/exm-application.c:201 msgid "Browse, install, and manage GNOME Shell Extensions." msgstr "" "Αναζήτηση, εγκατάσταση και διαχείριση των επεκτάσεων του γραφικού κελύφους " "GNOME." #. Translators: Use 'Name email@domain.com' or 'Name https://website.example' (without single quotes). Do not delete existing names, write yours on a new line. #: src/exm-application.c:204 msgid "translator-credits" msgstr "Καραχάλιος-Στάγκας Αθανάσιος-Νεκτάριος <1xlzgeu2y@mozmail.com>" #: src/exm-browse-page.blp:16 #, fuzzy #| msgid "Search for extensions" msgid "Search for Extensions" msgstr "Αναζητήστε επεκτάσεις" #: src/exm-browse-page.blp:17 #, fuzzy #| msgid "" #| "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell " #| "Extensions." msgid "" "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell Extensions" msgstr "" "Βάλτε μια λέξη κλειδί για να ψάξετε στο 'extensions.gnome.org' για " "επεκτάσεις για το γραφικό κέλυφος GNOME." #: src/exm-browse-page.blp:47 msgid "Relevance" msgstr "Συνάφεια" #: src/exm-browse-page.blp:48 msgctxt "Sort search results" msgid "Downloads" msgstr "Λήψεις" #: src/exm-browse-page.blp:49 msgid "Recent" msgstr "Πρόσφατα" #: src/exm-browse-page.blp:50 src/exm-detail-view.blp:113 msgid "Name" msgstr "Όνομα" #: src/exm-browse-page.blp:57 msgid "Sort search results" msgstr "Ταξινόμηση αποτελεσμάτων αναζήτησης" #: src/exm-browse-page.blp:103 msgid "_Load More Results" msgstr "_Φόρτωση περισσότερων αποτελεσμάτων" #: src/exm-browse-page.blp:137 src/exm-installed-page.blp:123 msgid "No Results Found" msgstr "Δεν βρεθήκαν αποτελέσματα" #: src/exm-browse-page.blp:144 msgid "Try a different search" msgstr "" #: src/exm-browse-page.blp:178 src/exm-comment-dialog.blp:34 #: src/exm-detail-view.blp:49 src/exm-detail-view.blp:291 #: src/exm-upgrade-assistant.blp:100 msgid "Connection Error" msgstr "" #: src/exm-comment-dialog.blp:13 src/exm-detail-view.blp:248 #, fuzzy #| msgid "There are no comments." msgid "Reviews and Comments" msgstr "Δεν υπάρχουν σχόλια." #: src/exm-comment-dialog.blp:25 #, fuzzy #| msgid "Loading…" msgid "Loading" msgstr "Φορτώνει…" #: src/exm-comment-tile.blp:30 src/exm-detail-view.blp:127 msgid "Author" msgstr "Συγγραφέας" #: src/exm-detail-view.blp:40 msgid "Loading Details" msgstr "Φόρτωση Λεπτομερειών" #: src/exm-detail-view.blp:59 src/exm-window.c:347 msgid "An Error Occurred" msgstr "Προέκυψε σφάλμα" #: src/exm-detail-view.blp:60 #, fuzzy #| msgid "A newer version of this extension is available" msgid "No extension details available" msgstr "Μια νεότερη εκδοσή αυτής της επέκτασης είναι διαθέσιμη" #: src/exm-detail-view.blp:154 #, fuzzy #| msgid "Enlarge image" msgid "Enlarge Image" msgstr "Μεγέθυνση εικόνας" #: src/exm-detail-view.blp:172 src/exm-extension-row.blp:89 msgid "Description" msgstr "Περιγραφή" #: src/exm-detail-view.blp:195 msgid "Links" msgstr "Σύνδεσμοι" #: src/exm-detail-view.blp:203 msgid "Homepage" msgstr "Αρχική Σελίδα" #: src/exm-detail-view.blp:219 msgid "Donate" msgstr "" #: src/exm-detail-view.blp:228 msgid "View on Extensions" msgstr "Δείτε στης Επεκτάσεις" #: src/exm-detail-view.blp:271 msgid "Reviews and comments are disabled for this extension" msgstr "" #: src/exm-detail-view.blp:314 #, fuzzy #| msgid "There are no comments." msgid "There are no reviews or comments" msgstr "Δεν υπάρχουν σχόλια." #: src/exm-detail-view.blp:343 #, fuzzy #| msgid "_Show All Reviews" msgid "_Show All" msgstr "_Προβολή Όλων των Κριτικών" #. Translators: '%s' = extension name #: src/exm-detail-view.c:445 #, c-format msgid "%s Icon" msgstr "" #. Translators: '%s' = extension name #: src/exm-detail-view.c:478 #, c-format msgid "%s Screenshot" msgstr "" #: src/exm-error-dialog.blp:7 msgid "Error Report" msgstr "Αναφορά σφάλματος" #: src/exm-error-dialog.blp:22 #, fuzzy #| msgid "An unexpected error occurred in Extension Manager." msgid "An unexpected error occurred in Extension Manager" msgstr "Προέκυψε ένα απροσδόκητο σφάλμα στην εφαρμογή Διαχείριση Επεκτάσεων." #: src/exm-error-dialog.blp:36 #, fuzzy #| msgid "_Copy to Clipboard" msgid "Copy to Clipboard" msgstr "_Αντιγραφή στο Πρόχειρο" #: src/exm-error-dialog.blp:77 msgid "_New Issue" msgstr "_Νέο Θέμα" #. Success indicator #: src/exm-error-dialog.c:125 src/exm-upgrade-assistant.c:347 msgid "Copied" msgstr "Αντιγραμμένο" #: src/exm-error-dialog.c:173 msgid "Please open a new issue and attach the following information:" msgstr "" "Παρακαλούμε ανοίξτε ένα νέο θέμα και επισυνάψτε τις ακόλουθες πληροφορίες:" #. Translators: '%s' = Name of Distributor (e.g. "Packager123") #: src/exm-error-dialog.c:177 #, c-format msgid "" "You are using a third-party build of Extension Manager. Please contact the package distributor (%s) first before " "filing an issue. Be sure to attach the following information:" msgstr "" "Χρησιμοποιείτε ένα build τρίτων για την εφαρμογή Διαχειριστής Επεκτάσεων. " "Παρακαλούμε επικοινωνείστε με τον διανομέα του πακέτου " "(%s) πρώτα πριν υποβάλετε ένα θέμα. Σιγουρευτείτε πως θα επισυνάψετε " "τις ακόλουθες πληροφορίες:" #. Translators: Button's tooltip to open extension's preferences dialog #: src/exm-extension-row.blp:28 msgid "Open extension preferences" msgstr "Ανοίξτε τις προτιμήσεις επέκτασης" #. Translators: Icon's tooltip when an extension has an error #: src/exm-extension-row.blp:46 msgid "An error occurred while loading this extension" msgstr "Προέκυψε σφάλμα κατά την φόρτωση της επέκτασης" #. Translators: Icon's tooltip when an extension is incompatible #: src/exm-extension-row.blp:63 src/exm-install-button.c:117 msgid "This extension is incompatible with your current version of GNOME" msgstr "Αυτή η επέκταση είναι μη συμβατή με την τρέχουσα εκδοσή GNOME" #. Translators: Icon's tooltip when an extension update is available #: src/exm-extension-row.blp:80 msgid "A newer version of this extension is available" msgstr "Μια νεότερη εκδοσή αυτής της επέκτασης είναι διαθέσιμη" #: src/exm-extension-row.blp:98 src/exm-info-bar.blp:50 msgid "Version" msgstr "Έκδοση" #: src/exm-extension-row.blp:107 msgid "Session Modes" msgstr "" #: src/exm-extension-row.blp:137 msgid "Error" msgstr "Σφάλμα" #: src/exm-extension-row.blp:158 msgid "See Details" msgstr "Δείτε Λεπτομέρειες" #: src/exm-extension-row.blp:169 #, fuzzy #| msgid "Remove" msgid "Remove…" msgstr "Αφαίρεση" #: src/exm-extension-row.c:175 msgid "Unlock Dialog" msgstr "" #. Translators: GNOME Display Manager #: src/exm-extension-row.c:181 msgid "GDM" msgstr "" #. Translators: Label when an extension runs on both, login and lock screens #: src/exm-extension-row.c:189 msgid "" "This extension will run while the screen is locked and no user is logged in" msgstr "" #. Translators: Label when an extension runs on the lock screen #: src/exm-extension-row.c:194 msgid "This extension will run while the screen is locked" msgstr "" #. Translators: Label when an extension runs on the login screen #: src/exm-extension-row.c:199 #, fuzzy #| msgid "One extension will be updated on next login." #| msgid_plural "%d extensions will be updated on next login." msgid "This extension will run while no user is logged in" msgstr "Μια επέκταση θα αναβαθμιστεί την επόμενη φόρα που θα συνδεθείτε." #: src/exm-help-overlay.blp:11 msgctxt "shortcut window" msgid "General" msgstr "" #: src/exm-help-overlay.blp:14 #, fuzzy #| msgctxt "State" #| msgid "Installed" msgctxt "shortcut window" msgid "Show Installed Page" msgstr "Εγκατεστημένη" #: src/exm-help-overlay.blp:19 msgctxt "shortcut window" msgid "Show Browse Page" msgstr "" #: src/exm-help-overlay.blp:24 msgctxt "shortcut window" msgid "Toggle Search" msgstr "" #: src/exm-help-overlay.blp:29 msgctxt "shortcut window" msgid "Show Keyboard Shortcuts" msgstr "" #: src/exm-help-overlay.blp:34 msgctxt "shortcut window" msgid "Close Window" msgstr "" #: src/exm-help-overlay.blp:39 msgctxt "shortcut window" msgid "Quit" msgstr "" #: src/exm-help-overlay.blp:45 msgctxt "shortcut window" msgid "Screenshot View" msgstr "" #: src/exm-help-overlay.blp:48 src/exm-help-overlay.blp:63 #, fuzzy #| msgid "Zoom In" msgctxt "shortcut window" msgid "Zoom In" msgstr "Μεγέθυνση" #: src/exm-help-overlay.blp:53 src/exm-help-overlay.blp:68 #, fuzzy #| msgid "Zoom Out" msgctxt "shortcut window" msgid "Zoom Out" msgstr "Σμίκρυνση" #: src/exm-help-overlay.blp:58 msgctxt "shortcut window" msgid "Reset Zoom" msgstr "" #: src/exm-info-bar.blp:28 msgctxt "Number of downloads" msgid "Downloads" msgstr "Λήψεις" #: src/exm-info-bar.c:107 msgid "Unsupported" msgstr "Δεν Υποστηρίζεται" #: src/exm-install-button.c:127 #, fuzzy #| msgid "Install" msgid "Install…" msgstr "Εγκατάστασή" #: src/exm-install-button.c:132 #, fuzzy #| msgctxt "State" #| msgid "Installed" msgid "Installing" msgstr "Εγκατεστημένη" #: src/exm-install-button.c:136 msgctxt "State" msgid "Installed" msgstr "Εγκατεστημένη" #: src/exm-install-button.c:140 #, fuzzy #| msgid "Unsupported" msgid "Unsupported…" msgstr "Δεν Υποστηρίζεται" #: src/exm-installed-page.blp:16 #, fuzzy #| msgid "Log Out" msgid "_Log Out…" msgstr "Αποσύνδεση" #: src/exm-installed-page.blp:28 msgid "Use Extensions" msgstr "Χρήση επεκτάσεων" #: src/exm-installed-page.blp:29 #, fuzzy #| msgid "Extensions can cause performance and stability issues." msgid "Extensions can cause performance and stability issues" msgstr "" "Οι επεκτάσεις μπορεί να προκαλέσουν προβλήματα απόδοσης και σταθερότητας." #: src/exm-installed-page.blp:34 src/exm-upgrade-assistant.blp:133 msgid "User-Installed Extensions" msgstr "Εγκατεστημένες Επεκτάσεις Χρήστη" #: src/exm-installed-page.blp:51 src/exm-upgrade-assistant.blp:150 #, fuzzy #| msgid "There are no user extensions installed." msgid "No User Extensions Installed" msgstr "Δεν υπάρχουν εγκατεστημένες επεκτάσεις χρήστη." #: src/exm-installed-page.blp:55 msgid "Browse" msgstr "Περιήγηση" #: src/exm-installed-page.blp:69 src/exm-upgrade-assistant.blp:160 msgid "System Extensions" msgstr "Επεκτάσεις Συστήματος" #: src/exm-installed-page.blp:86 src/exm-upgrade-assistant.blp:177 #, fuzzy #| msgid "There are no system extensions installed." msgid "No System Extensions Installed" msgstr "Δεν υπάρχουν εγκατεστημένες επεκτάσεις συστήματος." #. Translators: Text announced by screen readers when interacting with the list of search results #: src/exm-installed-page.blp:111 #, fuzzy #| msgid "Sort search results" msgid "Search Results" msgstr "Ταξινόμηση αποτελεσμάτων αναζήτησης" #: src/exm-installed-page.blp:124 msgid "Try a different search or search online" msgstr "" #: src/exm-installed-page.blp:131 msgid "_Search Online" msgstr "" #. Translators: '%d' = number of extensions that will be updated #: src/exm-installed-page.c:298 #, fuzzy, c-format #| msgid "One extension will be updated on next login." #| msgid_plural "%d extensions will be updated on next login." msgid "%d extension will be updated on next login" msgid_plural "%d extensions will be updated on next login" msgstr[0] "Μια επέκταση θα αναβαθμιστεί την επόμενη φόρα που θα συνδεθείτε." msgstr[1] "%d επέκτασής θα αναβαθμιστούν την επόμενη φόρα που θα συνδεθείτε." #: src/exm-rating.c:142 #, c-format msgid "%i Star" msgid_plural "%i Stars" msgstr[0] "" msgstr[1] "" #. Translators: Button's tooltip to zoom out screenshots #: src/exm-screenshot-view.blp:37 msgid "Zoom Out" msgstr "Σμίκρυνση" #. Translators: Button's tooltip to zoom in screenshots #: src/exm-screenshot-view.blp:51 msgid "Zoom In" msgstr "Μεγέθυνση" #: src/exm-upgrade-assistant.blp:11 msgid "Upgrade Assistant" msgstr "Βοηθός αναβάθμισης" #: src/exm-upgrade-assistant.blp:66 msgid "_Check Compatibility" msgstr "_Έλεγχος Συμβατότητας" #: src/exm-upgrade-assistant.blp:189 msgid "_Copy to Clipboard" msgstr "_Αντιγραφή στο Πρόχειρο" #: src/exm-upgrade-assistant.c:188 #, c-format msgid "Checked %d/%d Extensions" msgstr "Ελέγχθηκαν %d/%d Επεκτάσεις" #. Set percentage text #: src/exm-upgrade-assistant.c:207 #, c-format msgid "%d%% Compatible" msgstr "%d%% Συμβατότητα" #: src/exm-upgrade-assistant.c:223 #, fuzzy, c-format #| msgid "" #| "GNOME %s supports %d out of %d of the extensions currently " #| "installed on the system." msgid "" "GNOME %s supports %d out of %d of the extensions currently " "installed on the system" msgstr "" "Τα GNOME %s υποστηρίζουν %d από τις %d επεκτάσεις που είναι " "εγκατεστημένες στο σύστημα." #. Translators: Icon's tooltip when an extension is compatible #: src/exm-upgrade-assistant.c:503 #, fuzzy #| msgid "A compatible version of the extension exists." msgid "A compatible version of the extension exists" msgstr "Υπάρχει συμβατή έκδοση της επέκτασης." #. Translators: Icon's tooltip when an extension is not compatible #: src/exm-upgrade-assistant.c:510 #, fuzzy #| msgid "No compatible version of the extension exists." msgid "No compatible version of the extension exists" msgstr "Δεν υπάρχει συμβατή έκδοση της επέκτασης." #. Translators: Icon's tooltip when an extension compatibility is unknown #: src/exm-upgrade-assistant.c:517 msgid "" "This extension is not hosted on extensions.gnome.org. Its compatibility " "cannot be determined." msgstr "" "Αυτή η επέκταση δεν φιλοξενείται στο extensions.gnome.org. Η συμβατότητά της " "δεν μπορεί να προσδιοριστεί." #: src/exm-upgrade-assistant.c:608 #, c-format msgid "" "You are currently running GNOME %s. Select a version of GNOME below " "and check whether your extensions will continue to be available." msgstr "" "Αυτή τη στιγμή εκτελείτε το GNOME %s. Επιλέξτε μια έκδοση του GNOME " "παρακάτω και ελέγξτε αν οι επεκτάσεις σας θα συνεχίσουν να είναι διαθέσιμες." #. Translators: Tooltip of the search icon in the header bar #: src/exm-window.blp:39 #, fuzzy #| msgid "User-Installed Extensions" msgid "Search Installed Extensions" msgstr "Εγκατεστημένες Επεκτάσεις Χρήστη" #: src/exm-window.blp:48 msgid "Main Menu" msgstr "Κυρίως Μενού" #: src/exm-window.blp:59 #, fuzzy #| msgid "Search for extensions" msgid "Search for installed extensions" msgstr "Αναζητήστε επεκτάσεις" #: src/exm-window.blp:71 msgctxt "Navigation" msgid "_Installed" msgstr "_Εγκατεστημένες" #: src/exm-window.blp:80 msgctxt "Navigation" msgid "_Browse" msgstr "_Περιήγηση" #. Translators: the character preceded by "_" should not be the same #. as others in the same menu #: src/exm-window.blp:108 msgid "Sort _Enabled First" msgstr "Ταξινόμηση Πρώτα _Ενεργοποιημένων Επεκτάσεων" #: src/exm-window.blp:109 msgid "_Show Unsupported" msgstr "_Εμφάνιση Μη-Υποστηριζόμενων" #: src/exm-window.blp:113 msgid "_Upgrade Assistant" msgstr "_Βοηθός Αναβάθμισης" #: src/exm-window.blp:114 msgid "_Keyboard Shortcuts" msgstr "" #: src/exm-window.blp:115 msgid "_About Extension Manager" msgstr "_Περί Διαχειριστή Επεκτάσεων" #: src/exm-window.blp:120 msgid "Uninstall Extension?" msgstr "Απεγκατάσταση Επέκτασης?" #: src/exm-window.blp:121 msgid "" "The extension's features and functionality will no longer be accessible. Are " "you sure you want to uninstall?" msgstr "" "Τα χαρακτηριστικά και η λειτουργικότητα της επέκτασης δε θα είναι πλέον " "διαθέσιμα. Είστε σίγουροι πως θέλετε να απεγκατασταθεί;" #: src/exm-window.blp:126 msgid "_No" msgstr "_Όχι" #: src/exm-window.blp:127 msgid "_Yes" msgstr "_Ναι" #: src/exm-window.blp:132 msgid "Unsupported Extension" msgstr "Μη-υποστηριζόμενη Επέκταση" #: src/exm-window.blp:133 msgid "" "This extension does not support your GNOME Shell version. It may cause " "errors if installed." msgstr "" "Αυτή η επέκταση δεν υποστηρίζεται από την τρέχουσα έκδοση GNOME του " "συστήματός σας. Μπορεί να προκαλέσει προβλήματα αν εγκατασταθεί." #: src/exm-window.blp:139 msgid "_Install Anyway" msgstr "_Εγκατάσταση Ούτως ή Άλλως" #: src/exm-window.blp:140 msgid "_Go Back" msgstr "_Επιστροφή" #: src/exm-window.c:348 #, fuzzy #| msgid "Details" msgid "_Details" msgstr "Λεπτομέρειες" #: src/web/exm-request-handler.c:99 msgid "" "Check GNOME infrastructure status " "and try again later" msgstr "" #: src/web/exm-request-handler.c:100 msgid "Check your network status and try again" msgstr "" #~ msgid "Comments" #~ msgstr "Σχόλια" #~ msgid "Loading Comments" #~ msgstr "Φόρτωση Σχολίων" #~ msgid "User Reviews" #~ msgstr "Κριτικές Χρηστών" #, fuzzy #~| msgid "Comments" #~ msgid "No comments yet" #~ msgstr "Σχόλια" #, fuzzy #~| msgid "Updates are available" #~ msgid "Updates Available" #~ msgstr "Διαθέσιμες Ενημερώσεις" #~ msgid "Supported" #~ msgstr "Υποστηρίζεται" #~ msgid "Unknown" #~ msgstr "Άγνωστο" #~ msgid "A utility for managing GNOME Shell Extensions" #~ msgstr "" #~ "Ένα εργαλείο για την διαχείριση των επεκτάσεων του γραφικού κελύφους GNOME" #, c-format #~ msgid "e.g. “%s”" #~ msgstr "π.χ. “%s”" #~ msgid "This extension is incompatible with your current version of GNOME." #~ msgstr "Αυτή η επέκταση είναι μη συμβατή με την τρέχουσα εκδοσή GNOME." #~ msgid "An error occurred." #~ msgstr "Προέκυψε σφάλμα." #~ msgid "Return to view" #~ msgstr "Επιστροφή στην προβολή" #~ msgid "@app_title@" #~ msgstr "@app_title@" #~ msgid "Fully adaptive mobile-friendly user interface" #~ msgstr "Πλήρως προσαρμόσιμη και φιλική προς τα κινητά διεπαφή χρήστη" #~ msgid "Paginated search results" #~ msgstr "Αποτελέσματα αναζήτησης σελιδοποιημένα" #~ msgid "Upgrade Assistant for checking extension compatibility" #~ msgstr "Βοηθός αναβαθμίσεων για τον έλεγχο της συμβατότητας των επεκτάσεων" #~ msgid "Unsupported extensions are hidden by default" #~ msgstr "Οι μη υποστηριζόμενες επεκτάσεις αποκρύπτονται από προεπιλογή" #~ msgid "Overhauled error and crash reporting" #~ msgstr "Αναθεωρημένη αναφορά σφαλμάτων και συντριβών" #~ msgid "Full-screen image viewer" #~ msgstr "Πρόγραμμα προβολής εικόνων πλήρους οθόνης" #~ msgid "Handles new gnome-extensions:// URI scheme" #~ msgstr "Χειρίζεται νέο σχήμα URI gnome-extensions://" #~ msgid "Randomised extension suggestions" #~ msgstr "Τυχαίες προτάσεις επεκτάσεων" #~ msgid "Performance and stability" #~ msgstr "Αποδοτικότητα και σταθερότητα" #~ msgid "Translation updates" #~ msgstr "Ενημερώσεις μεταφράσεων" #~ msgid "Various bug fixes" #~ msgstr "Διάφορες διορθώσεις σφαλμάτων" #~ msgid "Remove release notes dialog" #~ msgstr "Κατάργηση διαλόγου σημειώσεων Ενημέρωσης" #~ msgid "Fix special characters in installed extension listings" #~ msgstr "Διόρθωση ειδικών χαρακτήρων στις λίστες εγκατεστημένων επεκτάσεων" #~ msgid "The second feature update to extension-manager. Highlights include:" #~ msgstr "" #~ "Η δεύτερη ενημέρωση χαρακτηριστικών του Διαχειριστή Επεκτάσεων." #~ "Επισημασμένες περιλαμβάνοντα:" #~ msgid "View comments and reviews" #~ msgstr "Δείτε σχόλια και κριτικές" #~ msgid "Support for in-app updates" #~ msgstr "Υποστήριξη για ενημερώσεις μέσα από την εφαρμογή" #~ msgid "Better handling errors and out-of-date extensions" #~ msgstr "Καλλίτερη αντιμετώπιση σφαλμάτων και απαρχαιωμένων επεκτάσεων" #~ msgid "Allow installing 'unsupported' extensions" #~ msgstr "Δυνατότητα Εγκατάστασης μη \"υποστηριζόμενων\" επεκτάσεων" #~ msgid "Display release notes on first run" #~ msgstr "Εμφάνισε τοις σημείωσης εκδόσεις κατά την πρώτη εκκίνηση" #~ msgid "New app icon" #~ msgstr "Νέο εικονίδιο εφαρμογης" #~ msgid "Optionally sort extensions by enabled status" #~ msgstr "Προαιρετική ταξινόμηση επεκτάσεων κατά κατάσταση ενεργοποιήσεις" #~ msgid "Fix special characters in search results" #~ msgstr "Διόρθωση ειδικών χαρακτήρων στα αποτελέσματα αναζήτησής" #~ msgid "Fixes a crash that sometimes occurs while uninstalling an extension" #~ msgstr "" #~ "Διόρθωση σφάλματος που μερικές φόρες συμβαίνει κατά την απεγκατάσταση " #~ "επεκτάσεων" #~ msgid "The first feature update to extension-manager. Highlights include:" #~ msgstr "" #~ "Η πρώτη ενημέρωση χαρακτηριστικών του Διαχειριστή Επεκτάσεων." #~ "Επισημασμένες:" #~ msgid "Dark theme and support for overriding the system colour scheme" #~ msgstr "" #~ "Σκοτεινό θέμα και υποστήριξη παρέμβασης σχηματικού χρώματος συστήματος" #~ msgid "Shows screenshots in extension listings" #~ msgstr "Δείχνει στιγμιότυπα στην λίστα επεκτάσεων" #~ msgid "Shell version compatibility check" #~ msgstr "Έλεγχος συμβατότητας έκδοσης γραφικού κελύφους" #~ msgid "Localised into seven languages" #~ msgstr "Μεταφρασμένο σε εφτά γλωσσες" #~ msgid "Global extension on/off toggle" #~ msgstr "Καθολικός on/off διακόπτης επεκτάσεων" #~ msgid "Displays user and system extensions separately" #~ msgstr "Απεικονίζει επέκτασης χρήστη και συστήματος ξεχωριστά" #~ msgid "Extension Manager (Development)" #~ msgstr "Διαχειριστής Επεκτάσεων (Ανάπτυξη)" #~ msgid "Popularity" #~ msgstr "Δημοτικότητα" #~ msgid "Supported Versions" #~ msgstr "Υποστηριζόμενες Εκδόσεις" #~ msgctxt "Navigation" #~ msgid "Browse" #~ msgstr "Περιήγηση" #~ msgid "Theme" #~ msgstr "Θέμα" #~ msgid "Follow System" #~ msgstr "Συστήματος" #~ msgid "Light" #~ msgstr "Φωτεινό" #~ msgid "Dark" #~ msgstr "Σκοτεινό" #~ msgid "Are you sure you want to uninstall?" #~ msgstr "Είστε σίγουρος για την απεγκατάσταση ;" #~ msgid "" #~ "A very simple tool for browsing, downloading, and managing GNOME shell " #~ "extensions." #~ msgstr "" #~ "Ένα απλό εργαλείο για την περιήγηση λήψη και διαχείριση επεκτάσεων του " #~ "γραφικού κελύφους GNOME." #~ msgid "e.g. \"Blur my Shell\"" #~ msgstr "π.χ \"Blur my Shell\"" #~ msgid "What's New" #~ msgstr "Νέα" #~ msgid "View Release Notes" #~ msgstr "Δείτε της Σημειώσεις Ενημέρωσης" #, c-format #~ msgid "" #~ "This is your first time using Extension Manager %s.\n" #~ "Would you like to see the release notes?" #~ msgstr "" #~ "Αυτή είναι η πρώτη σας φόρα που χρησιμοποιείτε των Διαχειριστή " #~ "Επεκτάσεων %s.\n" #~ "Θα θέλατε να δείτε της σημειώσεις ενημερώσεις;" extension-manager-0.6.3/po/es.po000066400000000000000000000561721477302130300165440ustar00rootroot00000000000000# Spanish translations for extension-manager package. # Copyright (C) 2022 THE extension-manager'S COPYRIGHT HOLDER # This file is distributed under the same license as the extension-manager package. # Óscar Fernández Díaz , 2022-2023, 2024, 2025. msgid "" msgstr "" "Project-Id-Version: extension-manager\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-03-06 16:36+0000\n" "PO-Revision-Date: 2025-02-24 10:03+0000\n" "Last-Translator: Óscar Fernández Díaz \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: Weblate 5.10.1-dev\n" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:2 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:6 #: src/exm-window.blp:7 msgid "Extension Manager" msgstr "Gestor de extensiones" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:11 msgid "Manage GNOME Shell Extensions" msgstr "Gestionar extensiones de GNOME Shell" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #. Make sure to leave the original strings and add your translations afterwards, so that users can search both in English and your language. #: data/com.mattjakeman.ExtensionManager.desktop.in.in:14 msgid "extension;manager;shell;" msgstr "extension;manager;shell;" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:7 msgid "Browse, install, and manage GNOME Shell Extensions" msgstr "Explorar, instalar y gestionar extensiones de GNOME Shell" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:13 msgid "A utility for browsing and installing GNOME Shell Extensions." msgstr "Una utilidad para buscar e instalar extensiones de GNOME Shell." #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:14 msgid "Features:" msgstr "Características:" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:16 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:26 msgid "Browse extensions.gnome.org right inside the app" msgstr "Explore extensions.gnome.org dentro de la aplicación" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:17 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:22 msgid "Manage the extensions you already have installed" msgstr "Gestione las extensiones que ya tiene instaladas" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:30 msgid "See all the details of your extensions" msgstr "Vea todos los detalles de sus extensiones" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:34 msgid "Check your extensions compatibility with the next version of GNOME" msgstr "" "Compruebe la compatibilidad de sus extensiones con la próxima versión de " "GNOME" #: src/exm-application.c:201 msgid "Browse, install, and manage GNOME Shell Extensions." msgstr "Explorar, instalar y gestionar las extensiones de GNOME Shell." #. Translators: Use 'Name email@domain.com' or 'Name https://website.example' (without single quotes). Do not delete existing names, write yours on a new line. #: src/exm-application.c:204 msgid "translator-credits" msgstr "Óscar Fernández Díaz " #: src/exm-browse-page.blp:16 msgid "Search for Extensions" msgstr "Buscar extensiones" #: src/exm-browse-page.blp:17 msgid "" "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell Extensions" msgstr "" "Introduzca una palabra clave para buscar extensiones de GNOME Shell en " "'extensions.gnome.org'" #: src/exm-browse-page.blp:47 msgid "Relevance" msgstr "Relevancia" #: src/exm-browse-page.blp:48 msgctxt "Sort search results" msgid "Downloads" msgstr "Descargas" #: src/exm-browse-page.blp:49 msgid "Recent" msgstr "Recientes" #: src/exm-browse-page.blp:50 src/exm-detail-view.blp:113 msgid "Name" msgstr "Nombre" #: src/exm-browse-page.blp:57 msgid "Sort search results" msgstr "Ordenar los resultados de la búsqueda" #: src/exm-browse-page.blp:103 msgid "_Load More Results" msgstr "_Cargar más resultados" #: src/exm-browse-page.blp:137 src/exm-installed-page.blp:123 msgid "No Results Found" msgstr "No se encontraron resultados" #: src/exm-browse-page.blp:144 msgid "Try a different search" msgstr "Pruebe una búsqueda diferente" #: src/exm-browse-page.blp:178 src/exm-comment-dialog.blp:34 #: src/exm-detail-view.blp:49 src/exm-detail-view.blp:291 #: src/exm-upgrade-assistant.blp:100 msgid "Connection Error" msgstr "Error de conexión" #: src/exm-comment-dialog.blp:13 src/exm-detail-view.blp:248 msgid "Reviews and Comments" msgstr "Opiniones y comentarios" #: src/exm-comment-dialog.blp:25 msgid "Loading" msgstr "Cargando" #: src/exm-comment-tile.blp:30 src/exm-detail-view.blp:127 msgid "Author" msgstr "Autor" #: src/exm-detail-view.blp:40 msgid "Loading Details" msgstr "Cargando detalles" #: src/exm-detail-view.blp:59 src/exm-window.c:347 msgid "An Error Occurred" msgstr "Se ha producido un error" #: src/exm-detail-view.blp:60 msgid "No extension details available" msgstr "No hay detalles de la extensión disponibles" #: src/exm-detail-view.blp:154 msgid "Enlarge Image" msgstr "Ampliar la imagen" #: src/exm-detail-view.blp:172 src/exm-extension-row.blp:89 msgid "Description" msgstr "Descripción" #: src/exm-detail-view.blp:195 msgid "Links" msgstr "Enlaces" #: src/exm-detail-view.blp:203 msgid "Homepage" msgstr "Página de inicio" #: src/exm-detail-view.blp:219 msgid "Donate" msgstr "Donar" #: src/exm-detail-view.blp:228 msgid "View on Extensions" msgstr "Ver en Extensiones" #: src/exm-detail-view.blp:271 msgid "Reviews and comments are disabled for this extension" msgstr "Las opiniones y los comentarios están desactivados para esta extensión" #: src/exm-detail-view.blp:314 msgid "There are no reviews or comments" msgstr "No hay opiniones ni comentarios" #: src/exm-detail-view.blp:343 msgid "_Show All" msgstr "_Mostrar todos" #. Translators: '%s' = extension name #: src/exm-detail-view.c:445 #, c-format msgid "%s Icon" msgstr "Icono de %s" #. Translators: '%s' = extension name #: src/exm-detail-view.c:478 #, c-format msgid "%s Screenshot" msgstr "Captura de pantalla de %s" #: src/exm-error-dialog.blp:7 msgid "Error Report" msgstr "Informe de error" #: src/exm-error-dialog.blp:22 msgid "An unexpected error occurred in Extension Manager" msgstr "Se ha producido un error inesperado en Gestor de extensiones" #: src/exm-error-dialog.blp:36 msgid "Copy to Clipboard" msgstr "Copiar al portapapeles" #: src/exm-error-dialog.blp:77 msgid "_New Issue" msgstr "Incidencia _nueva" #. Success indicator #: src/exm-error-dialog.c:125 src/exm-upgrade-assistant.c:347 msgid "Copied" msgstr "Copiado" #: src/exm-error-dialog.c:173 msgid "Please open a new issue and attach the following information:" msgstr "" "Por favor, abra una incidencia nueva y adjunte la siguiente información:" #. Translators: '%s' = Name of Distributor (e.g. "Packager123") #: src/exm-error-dialog.c:177 #, c-format msgid "" "You are using a third-party build of Extension Manager. Please contact the package distributor (%s) first before " "filing an issue. Be sure to attach the following information:" msgstr "" "Está usando una compilación de Gestor de extensiones de terceros. Por favor, " "antes de abrir una incidencia, contacte con (%s), " "distribuidor del paquete, primero. Asegúrese de adjuntar la siguiente " "información:" #. Translators: Button's tooltip to open extension's preferences dialog #: src/exm-extension-row.blp:28 msgid "Open extension preferences" msgstr "Abrir las preferencias de la extensión" #. Translators: Icon's tooltip when an extension has an error #: src/exm-extension-row.blp:46 msgid "An error occurred while loading this extension" msgstr "Se ha producido un error al cargar esta extensión" #. Translators: Icon's tooltip when an extension is incompatible #: src/exm-extension-row.blp:63 src/exm-install-button.c:117 msgid "This extension is incompatible with your current version of GNOME" msgstr "Esta extensión es incompatible con su versión actual de GNOME" #. Translators: Icon's tooltip when an extension update is available #: src/exm-extension-row.blp:80 msgid "A newer version of this extension is available" msgstr "Existe una versión más reciente de esta extensión" #: src/exm-extension-row.blp:98 src/exm-info-bar.blp:50 msgid "Version" msgstr "Versión" #: src/exm-extension-row.blp:107 msgid "Session Modes" msgstr "Modos de sesión" #: src/exm-extension-row.blp:137 msgid "Error" msgstr "Error" #: src/exm-extension-row.blp:158 msgid "See Details" msgstr "Ver detalles" #: src/exm-extension-row.blp:169 msgid "Remove…" msgstr "Quitar…" #: src/exm-extension-row.c:175 msgid "Unlock Dialog" msgstr "Diálogo de desbloqueo" #. Translators: GNOME Display Manager #: src/exm-extension-row.c:181 msgid "GDM" msgstr "GDM" #. Translators: Label when an extension runs on both, login and lock screens #: src/exm-extension-row.c:189 msgid "" "This extension will run while the screen is locked and no user is logged in" msgstr "" "Esta extensión se ejecutará mientras la pantalla esté bloqueada y no haya " "ningún usuario conectado" #. Translators: Label when an extension runs on the lock screen #: src/exm-extension-row.c:194 msgid "This extension will run while the screen is locked" msgstr "Esta extensión se ejecutará mientras la pantalla esté bloqueada" #. Translators: Label when an extension runs on the login screen #: src/exm-extension-row.c:199 msgid "This extension will run while no user is logged in" msgstr "Esta extensión se ejecutará mientras no haya ningún usuario conectado" #: src/exm-help-overlay.blp:11 msgctxt "shortcut window" msgid "General" msgstr "General" #: src/exm-help-overlay.blp:14 msgctxt "shortcut window" msgid "Show Installed Page" msgstr "Mostrar página Instaladas" #: src/exm-help-overlay.blp:19 msgctxt "shortcut window" msgid "Show Browse Page" msgstr "Mostrar página Explorar" #: src/exm-help-overlay.blp:24 msgctxt "shortcut window" msgid "Toggle Search" msgstr "Conmutar búsqueda" #: src/exm-help-overlay.blp:29 msgctxt "shortcut window" msgid "Show Keyboard Shortcuts" msgstr "Mostrar Atajos del teclado" #: src/exm-help-overlay.blp:34 msgctxt "shortcut window" msgid "Close Window" msgstr "Cerrar ventana" #: src/exm-help-overlay.blp:39 msgctxt "shortcut window" msgid "Quit" msgstr "Salir" #: src/exm-help-overlay.blp:45 msgctxt "shortcut window" msgid "Screenshot View" msgstr "Vista de captura de pantalla" #: src/exm-help-overlay.blp:48 src/exm-help-overlay.blp:63 msgctxt "shortcut window" msgid "Zoom In" msgstr "Ampliar" #: src/exm-help-overlay.blp:53 src/exm-help-overlay.blp:68 msgctxt "shortcut window" msgid "Zoom Out" msgstr "Reducir" #: src/exm-help-overlay.blp:58 msgctxt "shortcut window" msgid "Reset Zoom" msgstr "Restablecer ampliación" #: src/exm-info-bar.blp:28 msgctxt "Number of downloads" msgid "Downloads" msgstr "Descargas" #: src/exm-info-bar.c:107 msgid "Unsupported" msgstr "No soportada" #: src/exm-install-button.c:127 msgid "Install…" msgstr "Instalar…" #: src/exm-install-button.c:132 msgid "Installing" msgstr "Instalando" #: src/exm-install-button.c:136 msgctxt "State" msgid "Installed" msgstr "Instalada" #: src/exm-install-button.c:140 msgid "Unsupported…" msgstr "No soportada…" #: src/exm-installed-page.blp:16 msgid "_Log Out…" msgstr "_Cerrar sesión…" #: src/exm-installed-page.blp:28 msgid "Use Extensions" msgstr "Usar extensiones" #: src/exm-installed-page.blp:29 msgid "Extensions can cause performance and stability issues" msgstr "Las extensiones pueden causar problemas de rendimiento y estabilidad" #: src/exm-installed-page.blp:34 src/exm-upgrade-assistant.blp:133 msgid "User-Installed Extensions" msgstr "Extensiones instaladas por el usuario" #: src/exm-installed-page.blp:51 src/exm-upgrade-assistant.blp:150 msgid "No User Extensions Installed" msgstr "No hay extensiones de usuario instaladas" #: src/exm-installed-page.blp:55 msgid "Browse" msgstr "Explorar" #: src/exm-installed-page.blp:69 src/exm-upgrade-assistant.blp:160 msgid "System Extensions" msgstr "Extensiones del sistema" #: src/exm-installed-page.blp:86 src/exm-upgrade-assistant.blp:177 msgid "No System Extensions Installed" msgstr "No hay extensiones del sistema instaladas" #. Translators: Text announced by screen readers when interacting with the list of search results #: src/exm-installed-page.blp:111 msgid "Search Results" msgstr "Resultados de la búsqueda" #: src/exm-installed-page.blp:124 msgid "Try a different search or search online" msgstr "Pruebe una búsqueda diferente o busque en línea" #: src/exm-installed-page.blp:131 msgid "_Search Online" msgstr "_Buscar en línea" #. Translators: '%d' = number of extensions that will be updated #: src/exm-installed-page.c:298 #, c-format msgid "%d extension will be updated on next login" msgid_plural "%d extensions will be updated on next login" msgstr[0] "%d extensión se actualizará en el próximo inicio de sesión" msgstr[1] "%d extensiones se actualizarán en el próximo inicio de sesión" #: src/exm-rating.c:142 #, c-format msgid "%i Star" msgid_plural "%i Stars" msgstr[0] "%i estrella" msgstr[1] "%i estrellas" #. Translators: Button's tooltip to zoom out screenshots #: src/exm-screenshot-view.blp:37 msgid "Zoom Out" msgstr "Reducir" #. Translators: Button's tooltip to zoom in screenshots #: src/exm-screenshot-view.blp:51 msgid "Zoom In" msgstr "Ampliar" #: src/exm-upgrade-assistant.blp:11 msgid "Upgrade Assistant" msgstr "Asistente de actualización" #: src/exm-upgrade-assistant.blp:66 msgid "_Check Compatibility" msgstr "_Comprobar compatibilidad" #: src/exm-upgrade-assistant.blp:189 msgid "_Copy to Clipboard" msgstr "_Copiar al portapapeles" #: src/exm-upgrade-assistant.c:188 #, c-format msgid "Checked %d/%d Extensions" msgstr "Comprobadas %d/%d extensiones" #. Set percentage text #: src/exm-upgrade-assistant.c:207 #, c-format msgid "%d%% Compatible" msgstr "%d%% compatible" #: src/exm-upgrade-assistant.c:223 #, c-format msgid "" "GNOME %s supports %d out of %d of the extensions currently " "installed on the system" msgstr "" "GNOME %s soporta %d de %d de las extensiones actualmente " "instaladas en el sistema" #. Translators: Icon's tooltip when an extension is compatible #: src/exm-upgrade-assistant.c:503 msgid "A compatible version of the extension exists" msgstr "Existe una versión compatible de la extensión" #. Translators: Icon's tooltip when an extension is not compatible #: src/exm-upgrade-assistant.c:510 msgid "No compatible version of the extension exists" msgstr "No existe ninguna versión compatible de la extensión" #. Translators: Icon's tooltip when an extension compatibility is unknown #: src/exm-upgrade-assistant.c:517 msgid "" "This extension is not hosted on extensions.gnome.org. Its compatibility " "cannot be determined." msgstr "" "Esta extensión no está alojada en extensions.gnome.org. No se puede " "determinar su compatibilidad." #: src/exm-upgrade-assistant.c:608 #, c-format msgid "" "You are currently running GNOME %s. Select a version of GNOME below " "and check whether your extensions will continue to be available." msgstr "" "Actualmente está ejecutando GNOME %s. Seleccione una versión de GNOME " "a continuación y compruebe si sus extensiones seguirán estando disponibles." #. Translators: Tooltip of the search icon in the header bar #: src/exm-window.blp:39 msgid "Search Installed Extensions" msgstr "Buscar extensiones instaladas" #: src/exm-window.blp:48 msgid "Main Menu" msgstr "Menú principal" #: src/exm-window.blp:59 msgid "Search for installed extensions" msgstr "Buscar extensiones instaladas" #: src/exm-window.blp:71 msgctxt "Navigation" msgid "_Installed" msgstr "_Instaladas" #: src/exm-window.blp:80 msgctxt "Navigation" msgid "_Browse" msgstr "_Explorar" #. Translators: the character preceded by "_" should not be the same #. as others in the same menu #: src/exm-window.blp:108 msgid "Sort _Enabled First" msgstr "_Ordenar por activadas" #: src/exm-window.blp:109 msgid "_Show Unsupported" msgstr "Mostrar no _soportadas" #: src/exm-window.blp:113 msgid "_Upgrade Assistant" msgstr "Asistente de actuali_zación" #: src/exm-window.blp:114 msgid "_Keyboard Shortcuts" msgstr "Atajos del _teclado" #: src/exm-window.blp:115 msgid "_About Extension Manager" msgstr "_Acerca de Gestor de extensiones" #: src/exm-window.blp:120 msgid "Uninstall Extension?" msgstr "¿Desinstalar la extensión?" #: src/exm-window.blp:121 msgid "" "The extension's features and functionality will no longer be accessible. Are " "you sure you want to uninstall?" msgstr "" "Las características y funcionalidades de la extensión dejarán de ser " "accesibles. ¿Está seguro de que desea desinstalarla?" #: src/exm-window.blp:126 msgid "_No" msgstr "_No" #: src/exm-window.blp:127 msgid "_Yes" msgstr "_Sí" #: src/exm-window.blp:132 msgid "Unsupported Extension" msgstr "Extensión no soportada" #: src/exm-window.blp:133 msgid "" "This extension does not support your GNOME Shell version. It may cause " "errors if installed." msgstr "" "Esta extensión no soporta su versión de GNOME Shell. Puede causar errores si " "se instala." #: src/exm-window.blp:139 msgid "_Install Anyway" msgstr "_Instalar de todos modos" #: src/exm-window.blp:140 msgid "_Go Back" msgstr "_Volver" #: src/exm-window.c:348 msgid "_Details" msgstr "_Detalles" #: src/web/exm-request-handler.c:99 msgid "" "Check GNOME infrastructure status " "and try again later" msgstr "" "Compruebe el estado de la " "infraestructura de GNOME y pruebe de nuevo más tarde" #: src/web/exm-request-handler.c:100 msgid "Check your network status and try again" msgstr "Compruebe el estado de su red e inténtelo de nuevo" #~ msgid "Comments" #~ msgstr "Comentarios" #~ msgid "Loading Comments" #~ msgstr "Cargando comentarios" #~ msgid "User Reviews" #~ msgstr "Opiniones de usuarios" #~ msgid "No comments yet" #~ msgstr "No hay comentarios" #~ msgid "" #~ "This extension could be activated in session modes such as the login " #~ "screen or the lock screen" #~ msgstr "" #~ "Esta extensión podría activarse en modos de sesión como la pantalla de " #~ "inicio de sesión o la de bloqueo" #, c-format #~ msgid "%s by %s" #~ msgstr "%s por %s" #~ msgid "Updates Available" #~ msgstr "Actualizaciones disponibles" #~ msgid "Supported" #~ msgstr "Soportada" #~ msgid "Unknown" #~ msgstr "Desconocido" #~ msgid "A utility for managing GNOME Shell Extensions" #~ msgstr "Una utilidad para gestionar las extensiones de GNOME Shell" #, c-format #~ msgid "e.g. “%s”" #~ msgstr "ej. “%s”" #~ msgid "This extension is incompatible with your current version of GNOME." #~ msgstr "Esta extensión es incompatible con su versión actual de GNOME." #~ msgid "An error occurred." #~ msgstr "Se ha producido un error." #~ msgid "Return to view" #~ msgstr "Volver a la vista" #~ msgid "@app_title@" #~ msgstr "@app_title@" #~ msgid "Extensions" #~ msgstr "Extensiones" #~ msgid "Shell" #~ msgstr "Shell" #~ msgid "Translation updates" #~ msgstr "Actualización de las traducciones" #~ msgid "Upgrade Assistant scroll fix" #~ msgstr "Corrección del desplazamiento del Asistente de actualización" #~ msgid "Pixel perfect app icon" #~ msgstr "Icono de la aplicación perfectamente pixelado" #~ msgid "Official snap support" #~ msgstr "Soporte oficial de snap" #~ msgid "Improved error log generation" #~ msgstr "Mejora de la generación de registros de errores" #~ msgid "Fully adaptive mobile-friendly user interface" #~ msgstr "Interfaz de usuario adaptable a dispositivos móviles" #~ msgid "Paginated search results" #~ msgstr "Resultados de búsqueda paginados" #~ msgid "Upgrade Assistant for checking extension compatibility" #~ msgstr "" #~ "Asistente de actualización para comprobar la compatibilidad de las " #~ "extensiones" #~ msgid "Unsupported extensions are hidden by default" #~ msgstr "Las extensiones no soportadas se ocultan de forma predeterminada" #~ msgid "Overhauled error and crash reporting" #~ msgstr "Mejora de los informes de errores y fallos" #~ msgid "Full-screen image viewer" #~ msgstr "Visor de imágenes a pantalla completa" #~ msgid "Handles new gnome-extensions:// URI scheme" #~ msgstr "Gestiona el nuevo esquema URI gnome-extensions://" #~ msgid "Randomised extension suggestions" #~ msgstr "Sugerencias de extensiones aleatoria" #~ msgid "Performance and stability" #~ msgstr "Rendimiento y estabilidad" #~ msgid "Various bug fixes" #~ msgstr "Varias correcciones de errores" #~ msgid "Remove release notes dialog" #~ msgstr "Eliminado el diálogo de notas de la versión" #~ msgid "Fix special characters in installed extension listings" #~ msgstr "" #~ "Corregidos los caracteres especiales en los listados de extensiones " #~ "instaladas" #~ msgid "The second feature update to extension-manager. Highlights include:" #~ msgstr "" #~ "La segunda actualización de las funciones del Gestor de extensiones. Lo " #~ "más destacado es:" #~ msgid "View comments and reviews" #~ msgstr "Ver comentarios y opiniones" #~ msgid "Support for in-app updates" #~ msgstr "Soporte para las actualizaciones en la aplicación" #~ msgid "Better handling errors and out-of-date extensions" #~ msgstr "Mejor gestión de los errores y de las extensiones obsoletas" #~ msgid "Allow installing 'unsupported' extensions" #~ msgstr "Permitir la instalación de extensiones \"no soportadas\"." #~ msgid "Display release notes on first run" #~ msgstr "Mostrar las notas de la versión en la primera ejecución" #~ msgid "New app icon" #~ msgstr "Nuevo icono de la aplicación" #~ msgid "Optionally sort extensions by enabled status" #~ msgstr "Opcionalmente, ordenar las extensiones por su estado de activación" #~ msgid "Fix special characters in search results" #~ msgstr "Corregidos los caracteres especiales en los resultados de búsqueda" #~ msgid "Fixes a crash that sometimes occurs while uninstalling an extension" #~ msgstr "" #~ "Corrige un fallo que a veces se produce al desinstalar una extensión" #~ msgid "The first feature update to extension-manager. Highlights include:" #~ msgstr "" #~ "La primera actualización de las características del Gestor de " #~ "extensiones. Lo más destacado es:" #~ msgid "Dark theme and support for overriding the system colour scheme" #~ msgstr "Tema oscuro y soporte para anular el esquema de colores del sistema" #~ msgid "Shows screenshots in extension listings" #~ msgstr "Muestra capturas de pantalla en los listados de extensiones" #~ msgid "Shell version compatibility check" #~ msgstr "Comprobación de la compatibilidad de la versión de Shell" #~ msgid "Localised into seven languages" #~ msgstr "Traducida a siete idiomas" #~ msgid "Global extension on/off toggle" #~ msgstr "Conmutador global de extensiones" #~ msgid "Displays user and system extensions separately" #~ msgstr "Muestra las extensiones del usuario y del sistema por separado" #~ msgid "Popularity" #~ msgstr "Popularidad" #~ msgid "Supported Versions" #~ msgstr "Versiones soportadas" #~ msgid "Extension Manager (Development)" #~ msgstr "Gestor de extensiones (Desarrollo)" extension-manager-0.6.3/po/et.po000066400000000000000000000533411477302130300165400ustar00rootroot00000000000000# Estonian translations for extension-manager package. # Copyright (C) YEAR THE extension-manager'S COPYRIGHT HOLDER # This file is distributed under the same license as the extension-manager package. # Henri , 2022. # Indrek Haav , 2024, 2025. # Henri Aunin , 2025. msgid "" msgstr "" "Project-Id-Version: extension-manager\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-03-06 16:36+0000\n" "PO-Revision-Date: 2025-03-17 14:50+0000\n" "Last-Translator: Indrek Haav \n" "Language-Team: Estonian \n" "Language: et\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: Weblate 5.11-dev\n" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:2 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:6 #: src/exm-window.blp:7 msgid "Extension Manager" msgstr "Laiendushaldur" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:11 msgid "Manage GNOME Shell Extensions" msgstr "Halda GNOME töölaua laiendusi" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #. Make sure to leave the original strings and add your translations afterwards, so that users can search both in English and your language. #: data/com.mattjakeman.ExtensionManager.desktop.in.in:14 msgid "extension;manager;shell;" msgstr "extension;manager;shell;laiendus;haldur;kest;töölaud;" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:7 msgid "Browse, install, and manage GNOME Shell Extensions" msgstr "Sirvi, paigalda ja halda GNOME töölaua laiendusi" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:13 msgid "A utility for browsing and installing GNOME Shell Extensions." msgstr "Tööriist GNOME töölaua laienduste sirvimiseks ja paigaldamiseks." #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:14 msgid "Features:" msgstr "Funktsioonid:" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:16 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:26 msgid "Browse extensions.gnome.org right inside the app" msgstr "Sirvi extensions.gnome.org-i otse rakenduse seest" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:17 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:22 msgid "Manage the extensions you already have installed" msgstr "Halda juba paigaldatud laiendusi" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:30 msgid "See all the details of your extensions" msgstr "Vaata oma laienduste kõiki üksikasju" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:34 msgid "Check your extensions compatibility with the next version of GNOME" msgstr "Kontrolli oma laienduste ühilduvust järgmise GNOME versiooniga" #: src/exm-application.c:201 msgid "Browse, install, and manage GNOME Shell Extensions." msgstr "Sirvi, paigalda ja halda GNOME töölaua laiendusi." #. Translators: Use 'Name email@domain.com' or 'Name https://website.example' (without single quotes). Do not delete existing names, write yours on a new line. #: src/exm-application.c:204 msgid "translator-credits" msgstr "" "Henri \n" "Indrek Haav " #: src/exm-browse-page.blp:16 msgid "Search for Extensions" msgstr "Otsi laiendusi" #: src/exm-browse-page.blp:17 msgid "" "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell Extensions" msgstr "Sisesta märksõna, et \"extensions.gnome.org\" lehelt laiendusi otsida" #: src/exm-browse-page.blp:47 msgid "Relevance" msgstr "Asjakohasus" #: src/exm-browse-page.blp:48 msgctxt "Sort search results" msgid "Downloads" msgstr "Allalaadimiste arv" #: src/exm-browse-page.blp:49 msgid "Recent" msgstr "Hiljutised" #: src/exm-browse-page.blp:50 src/exm-detail-view.blp:113 msgid "Name" msgstr "Nimi" #: src/exm-browse-page.blp:57 msgid "Sort search results" msgstr "Otsinguvastuste sorteerimine" #: src/exm-browse-page.blp:103 msgid "_Load More Results" msgstr "_Laadi rohkem tulemusi" #: src/exm-browse-page.blp:137 src/exm-installed-page.blp:123 msgid "No Results Found" msgstr "Tulemusi ei leitud" #: src/exm-browse-page.blp:144 msgid "Try a different search" msgstr "Proovi teistsugust otsingut" #: src/exm-browse-page.blp:178 src/exm-comment-dialog.blp:34 #: src/exm-detail-view.blp:49 src/exm-detail-view.blp:291 #: src/exm-upgrade-assistant.blp:100 msgid "Connection Error" msgstr "Ühenduse viga" #: src/exm-comment-dialog.blp:13 src/exm-detail-view.blp:248 msgid "Reviews and Comments" msgstr "Ülevaated ja kommentaarid" #: src/exm-comment-dialog.blp:25 msgid "Loading" msgstr "Laadimine" #: src/exm-comment-tile.blp:30 src/exm-detail-view.blp:127 msgid "Author" msgstr "Autor" #: src/exm-detail-view.blp:40 msgid "Loading Details" msgstr "Üksikasjade laadimine" #: src/exm-detail-view.blp:59 src/exm-window.c:347 msgid "An Error Occurred" msgstr "Tekkis viga" #: src/exm-detail-view.blp:60 msgid "No extension details available" msgstr "Laienduse üksikasjad pole saadaval" #: src/exm-detail-view.blp:154 msgid "Enlarge Image" msgstr "Suurenda pilt" #: src/exm-detail-view.blp:172 src/exm-extension-row.blp:89 msgid "Description" msgstr "Kirjeldus" #: src/exm-detail-view.blp:195 msgid "Links" msgstr "Lingid" #: src/exm-detail-view.blp:203 msgid "Homepage" msgstr "Koduleht" #: src/exm-detail-view.blp:219 msgid "Donate" msgstr "Anneta" #: src/exm-detail-view.blp:228 msgid "View on Extensions" msgstr "Vaata veebileheküljel" #: src/exm-detail-view.blp:271 msgid "Reviews and comments are disabled for this extension" msgstr "Selle laienduse ülevaated ja kommentaarid on keelatud" #: src/exm-detail-view.blp:314 msgid "There are no reviews or comments" msgstr "Ülevaateid ja kommentaare pole" #: src/exm-detail-view.blp:343 msgid "_Show All" msgstr "_Näita kõiki" #. Translators: '%s' = extension name #: src/exm-detail-view.c:445 #, c-format msgid "%s Icon" msgstr "%s ikoon" #. Translators: '%s' = extension name #: src/exm-detail-view.c:478 #, c-format msgid "%s Screenshot" msgstr "%s ekraanipilt" #: src/exm-error-dialog.blp:7 msgid "Error Report" msgstr "Vearaport" #: src/exm-error-dialog.blp:22 msgid "An unexpected error occurred in Extension Manager" msgstr "Laiendushalduris tekkis ootamatu viga" #: src/exm-error-dialog.blp:36 msgid "Copy to Clipboard" msgstr "Kopeeri lõikelauale" #: src/exm-error-dialog.blp:77 msgid "_New Issue" msgstr "_Uus teema" #. Success indicator #: src/exm-error-dialog.c:125 src/exm-upgrade-assistant.c:347 msgid "Copied" msgstr "Kopeeritud" #: src/exm-error-dialog.c:173 msgid "Please open a new issue and attach the following information:" msgstr "Palun ava uus teema ja lisa sinna alljärgnev informatsioon:" #. Translators: '%s' = Name of Distributor (e.g. "Packager123") #: src/exm-error-dialog.c:177 #, c-format msgid "" "You are using a third-party build of Extension Manager. Please contact the package distributor (%s) first before " "filing an issue. Be sure to attach the following information:" msgstr "" "Kasutad Laiendushalduri mitteametlikku versiooni. Enne probleemist teatamist " "palun võta ühendust paketi levitajaga (%s). " "Lisa kindlasti alljärgnev informatsioon:" #. Translators: Button's tooltip to open extension's preferences dialog #: src/exm-extension-row.blp:28 msgid "Open extension preferences" msgstr "Ava laienduse eelistused" #. Translators: Icon's tooltip when an extension has an error #: src/exm-extension-row.blp:46 msgid "An error occurred while loading this extension" msgstr "Laienduse laadimisel tekkis viga" #. Translators: Icon's tooltip when an extension is incompatible #: src/exm-extension-row.blp:63 src/exm-install-button.c:117 msgid "This extension is incompatible with your current version of GNOME" msgstr "Laiendus ei ühildu sinu praeguse GNOME versiooniga" #. Translators: Icon's tooltip when an extension update is available #: src/exm-extension-row.blp:80 msgid "A newer version of this extension is available" msgstr "Uus laienduse versioon on saadaval" #: src/exm-extension-row.blp:98 src/exm-info-bar.blp:50 msgid "Version" msgstr "Versioon" #: src/exm-extension-row.blp:107 msgid "Session Modes" msgstr "Sessiooni režiimid" #: src/exm-extension-row.blp:137 msgid "Error" msgstr "Viga" #: src/exm-extension-row.blp:158 msgid "See Details" msgstr "Kuva üksikasjad" #: src/exm-extension-row.blp:169 msgid "Remove…" msgstr "Eemalda…" #: src/exm-extension-row.c:175 msgid "Unlock Dialog" msgstr "Lukustusdialoog" #. Translators: GNOME Display Manager #: src/exm-extension-row.c:181 msgid "GDM" msgstr "GDM" #. Translators: Label when an extension runs on both, login and lock screens #: src/exm-extension-row.c:189 msgid "" "This extension will run while the screen is locked and no user is logged in" msgstr "" "See laiendus käivitub, kui ekraan on lukustatud ja sisselogitud kasutajaid " "pole" #. Translators: Label when an extension runs on the lock screen #: src/exm-extension-row.c:194 msgid "This extension will run while the screen is locked" msgstr "See laiendus käivitub, kui ekraan on lukustatud" #. Translators: Label when an extension runs on the login screen #: src/exm-extension-row.c:199 msgid "This extension will run while no user is logged in" msgstr "See laiendus käivitub, kui sisselogitud kasutajaid pole" #: src/exm-help-overlay.blp:11 msgctxt "shortcut window" msgid "General" msgstr "Üldine" #: src/exm-help-overlay.blp:14 msgctxt "shortcut window" msgid "Show Installed Page" msgstr "Kuva paigaldatud lehte" #: src/exm-help-overlay.blp:19 msgctxt "shortcut window" msgid "Show Browse Page" msgstr "Kuva sirvimise lehte" #: src/exm-help-overlay.blp:24 msgctxt "shortcut window" msgid "Toggle Search" msgstr "Kuva/peida otsing" #: src/exm-help-overlay.blp:29 msgctxt "shortcut window" msgid "Show Keyboard Shortcuts" msgstr "Näita kiirklahve" #: src/exm-help-overlay.blp:34 msgctxt "shortcut window" msgid "Close Window" msgstr "Sulge aken" #: src/exm-help-overlay.blp:39 msgctxt "shortcut window" msgid "Quit" msgstr "Välju" #: src/exm-help-overlay.blp:45 msgctxt "shortcut window" msgid "Screenshot View" msgstr "Ekraanipildi vaade" #: src/exm-help-overlay.blp:48 src/exm-help-overlay.blp:63 msgctxt "shortcut window" msgid "Zoom In" msgstr "Suumi sisse" #: src/exm-help-overlay.blp:53 src/exm-help-overlay.blp:68 msgctxt "shortcut window" msgid "Zoom Out" msgstr "Suumi välja" #: src/exm-help-overlay.blp:58 msgctxt "shortcut window" msgid "Reset Zoom" msgstr "Lähtesta suum" #: src/exm-info-bar.blp:28 msgctxt "Number of downloads" msgid "Downloads" msgstr "Allalaadimisi" #: src/exm-info-bar.c:107 msgid "Unsupported" msgstr "Mittetoetatud" #: src/exm-install-button.c:127 msgid "Install…" msgstr "Paigalda…" #: src/exm-install-button.c:132 msgid "Installing" msgstr "Paigaldamine" #: src/exm-install-button.c:136 msgctxt "State" msgid "Installed" msgstr "Paigaldatud" #: src/exm-install-button.c:140 msgid "Unsupported…" msgstr "Mittetoetatud…" #: src/exm-installed-page.blp:16 msgid "_Log Out…" msgstr "_Logi välja…" #: src/exm-installed-page.blp:28 msgid "Use Extensions" msgstr "Kasuta laiendusi" #: src/exm-installed-page.blp:29 msgid "Extensions can cause performance and stability issues" msgstr "Laiendused võivad tekitada jõudluse ja stabiilsuse probleeme" #: src/exm-installed-page.blp:34 src/exm-upgrade-assistant.blp:133 msgid "User-Installed Extensions" msgstr "Kasutaja paigaldatud laiendused" #: src/exm-installed-page.blp:51 src/exm-upgrade-assistant.blp:150 msgid "No User Extensions Installed" msgstr "Kasutaja laiendused puuduvad" #: src/exm-installed-page.blp:55 msgid "Browse" msgstr "Sirvi" #: src/exm-installed-page.blp:69 src/exm-upgrade-assistant.blp:160 msgid "System Extensions" msgstr "Süsteemilaiendused" #: src/exm-installed-page.blp:86 src/exm-upgrade-assistant.blp:177 msgid "No System Extensions Installed" msgstr "Süsteemilaiendused puuduvad" #. Translators: Text announced by screen readers when interacting with the list of search results #: src/exm-installed-page.blp:111 msgid "Search Results" msgstr "Otsingutulemused" #: src/exm-installed-page.blp:124 msgid "Try a different search or search online" msgstr "Proovi teistsugust otsingut või otsi internetist" #: src/exm-installed-page.blp:131 msgid "_Search Online" msgstr "_Otsi internetist" #. Translators: '%d' = number of extensions that will be updated #: src/exm-installed-page.c:298 #, c-format msgid "%d extension will be updated on next login" msgid_plural "%d extensions will be updated on next login" msgstr[0] "%d laiendus uuendatakse järgmisel sisselogimisel" msgstr[1] "%d laiendust uuendatakse järgmisel sisselogimisel" #: src/exm-rating.c:142 #, c-format msgid "%i Star" msgid_plural "%i Stars" msgstr[0] "%i tärn" msgstr[1] "%i tärni" #. Translators: Button's tooltip to zoom out screenshots #: src/exm-screenshot-view.blp:37 msgid "Zoom Out" msgstr "Suumi välja" #. Translators: Button's tooltip to zoom in screenshots #: src/exm-screenshot-view.blp:51 msgid "Zoom In" msgstr "Suumi sisse" #: src/exm-upgrade-assistant.blp:11 msgid "Upgrade Assistant" msgstr "Uuenduste abiline" #: src/exm-upgrade-assistant.blp:66 msgid "_Check Compatibility" msgstr "_Kontrolli ühilduvust" #: src/exm-upgrade-assistant.blp:189 msgid "_Copy to Clipboard" msgstr "_Kopeeri lõikelauale" #: src/exm-upgrade-assistant.c:188 #, c-format msgid "Checked %d/%d Extensions" msgstr "Kontrollitud %d/%d laiendust" #. Set percentage text #: src/exm-upgrade-assistant.c:207 #, c-format msgid "%d%% Compatible" msgstr "%d%% ühilduv" #: src/exm-upgrade-assistant.c:223 #, c-format msgid "" "GNOME %s supports %d out of %d of the extensions currently " "installed on the system" msgstr "GNOME %s toetab %d %d-st hetkel paigaldatud laiendusest" #. Translators: Icon's tooltip when an extension is compatible #: src/exm-upgrade-assistant.c:503 msgid "A compatible version of the extension exists" msgstr "Laiendusest on saadaval ühilduv versioon" #. Translators: Icon's tooltip when an extension is not compatible #: src/exm-upgrade-assistant.c:510 msgid "No compatible version of the extension exists" msgstr "Laiendusest ei ole saadaval ühilduvat versiooni" #. Translators: Icon's tooltip when an extension compatibility is unknown #: src/exm-upgrade-assistant.c:517 msgid "" "This extension is not hosted on extensions.gnome.org. Its compatibility " "cannot be determined." msgstr "" "See laiendus ei ole extension.gnome.org-i lehel üleval. Selle ühilduvust ei " "ole võimalik tuvastada." #: src/exm-upgrade-assistant.c:608 #, c-format msgid "" "You are currently running GNOME %s. Select a version of GNOME below " "and check whether your extensions will continue to be available." msgstr "" "Kasutad praegu GNOME %s. Vali üks GNOME'i versioonidest ja kontrolli, " "kas sinu laiendused sellega jätkuvalt ühilduvad." #. Translators: Tooltip of the search icon in the header bar #: src/exm-window.blp:39 msgid "Search Installed Extensions" msgstr "Otsi paigaldatud laiendusi" #: src/exm-window.blp:48 msgid "Main Menu" msgstr "Peamenüü" #: src/exm-window.blp:59 msgid "Search for installed extensions" msgstr "Otsi paigaldatud laiendusi" #: src/exm-window.blp:71 msgctxt "Navigation" msgid "_Installed" msgstr "_Paigaldatud" #: src/exm-window.blp:80 msgctxt "Navigation" msgid "_Browse" msgstr "_Sirvi" #. Translators: the character preceded by "_" should not be the same #. as others in the same menu #: src/exm-window.blp:108 msgid "Sort _Enabled First" msgstr "Näita _lubatud laiendused eespool" #: src/exm-window.blp:109 msgid "_Show Unsupported" msgstr "_Näita toetamata laiendusi" #: src/exm-window.blp:113 msgid "_Upgrade Assistant" msgstr "_Uuenduste abiline" #: src/exm-window.blp:114 msgid "_Keyboard Shortcuts" msgstr "_Kiirklahvid" #: src/exm-window.blp:115 msgid "_About Extension Manager" msgstr "_Rakenduse teave" #: src/exm-window.blp:120 msgid "Uninstall Extension?" msgstr "Eemalda laiendus?" #: src/exm-window.blp:121 msgid "" "The extension's features and functionality will no longer be accessible. Are " "you sure you want to uninstall?" msgstr "" "Laienduse funktsioonid ei ole edaspidi enam saadaval. Kas oled kindel, et " "soovid selle eemaldada?" #: src/exm-window.blp:126 msgid "_No" msgstr "_Ei" #: src/exm-window.blp:127 msgid "_Yes" msgstr "_Jah" #: src/exm-window.blp:132 msgid "Unsupported Extension" msgstr "Mittetoetatud laiendus" #: src/exm-window.blp:133 msgid "" "This extension does not support your GNOME Shell version. It may cause " "errors if installed." msgstr "" "See laiendus ei toeta sinu GNOME töölaua versiooni. Kui see paigaldada, võib " "see vigu põhjustada." #: src/exm-window.blp:139 msgid "_Install Anyway" msgstr "_Paigalda sellegipoolest" #: src/exm-window.blp:140 msgid "_Go Back" msgstr "_Tagasi" #: src/exm-window.c:348 msgid "_Details" msgstr "_Üksikasjad" #: src/web/exm-request-handler.c:99 msgid "" "Check GNOME infrastructure status " "and try again later" msgstr "" "Kontrolli GNOME infrastruktuuri " "staatust ja proovi hiljem uuesti" #: src/web/exm-request-handler.c:100 msgid "Check your network status and try again" msgstr "Kontrolli oma võrguühendust ja proovi uuesti" #~ msgid "Comments" #~ msgstr "Kommentaarid" #~ msgid "User Reviews" #~ msgstr "Kasutajate arvustused" #~ msgid "No comments yet" #~ msgstr "Kommentaare pole" #~ msgid "" #~ "This extension could be activated in session modes such as the login " #~ "screen or the lock screen" #~ msgstr "" #~ "See laiendus võib saada aktiveeritud sessioonirežiimides nagu " #~ "sisselogimise või lukustuskuva" #, c-format #~ msgid "%s by %s" #~ msgstr "%s, autor: %s" #~ msgid "Updates Available" #~ msgstr "Uuendused on saadaval" #~ msgid "Supported" #~ msgstr "Toetatud" #~ msgid "Unknown" #~ msgstr "Teadmata" #~ msgid "A utility for managing GNOME Shell Extensions" #~ msgstr "GNOME töölaua laienduste haldamiseks tööriist" #, c-format #~ msgid "e.g. “%s”" #~ msgstr "nt „%s”" #~ msgid "This extension is incompatible with your current version of GNOME." #~ msgstr "Laiendus ei ühildu sinu praeguse GNOME versiooniga." #~ msgid "An error occurred." #~ msgstr "Tekkis viga." #~ msgid "Return to view" #~ msgstr "Tagasi" #~ msgid "@app_title@" #~ msgstr "Laiendushaldur" #~ msgid "Translation updates" #~ msgstr "Tõlkeuuendused" #~ msgid "Various bug fixes" #~ msgstr "Veaparandused" #~ msgid "Performance and stability" #~ msgstr "Stabiilsuse ning jõudluse laiendused" #~ msgid "Remove release notes dialog" #~ msgstr "Uuenduste logi eemaldatud" #~ msgid "Fix special characters in installed extension listings" #~ msgstr "Erilise tähe parandused paigaldatud laienduse loetelus" #~ msgid "The second feature update to extension-manager. Highlights include:" #~ msgstr "Teine suur uuendus extension-manager'ile. Peamised uuendused:" #~ msgid "View comments and reviews" #~ msgstr "Vaata kommentaare ning arvustusi" #~ msgid "Support for in-app updates" #~ msgstr "Rakenduse sisese uuenduse tugi" #~ msgid "Better handling errors and out-of-date extensions" #~ msgstr "Vea ning vananenud laienduste parandused" #~ msgid "Allow installing 'unsupported' extensions" #~ msgstr "Lubatud „toetamata“ laienduste paigaldamine" #~ msgid "Display release notes on first run" #~ msgstr "Näita uuenduste logi esimesel käivitamisel" #~ msgid "New app icon" #~ msgstr "Uus rakenduse ikoon" #~ msgid "Optionally sort extensions by enabled status" #~ msgstr "Valikuliselt sorteeri laiendused lubatud staatusega" #~ msgid "Fix special characters in search results" #~ msgstr "Erilise tähe parandused otsinguvastustes" #~ msgid "Fixes a crash that sometimes occurs while uninstalling an extension" #~ msgstr "Laienduse eemaldamisel krahh parandatud" #~ msgid "The first feature update to extension-manager. Highlights include:" #~ msgstr "Esimene suur uuendus extension-manager'ile. Peamised uuendused:" #~ msgid "Dark theme and support for overriding the system colour scheme" #~ msgstr "Tume teema ning valik ignoreerida süsteemi vaikeseadet" #~ msgid "Shows screenshots in extension listings" #~ msgstr "Kuvatõmmise näitamine laienduste sirvijas" #~ msgid "Shell version compatibility check" #~ msgstr "Töölaua versiooni ühilduvuskontroll" #~ msgid "Localised into seven languages" #~ msgstr "Tõlgitud 7 keelde" #~ msgid "Global extension on/off toggle" #~ msgstr "Globaalne laienduste sisse/välja lüliti" #~ msgid "Displays user and system extensions separately" #~ msgstr "Kasutaja ja süsteemi laienduste eraldi näitamine" #~ msgid "Extension Manager (Development)" #~ msgstr "Laiendushaldur (Arendajale)" #~ msgid "Popularity" #~ msgstr "Populaarsus" #~ msgid "Supported Versions" #~ msgstr "Toetatud versioonid" #~ msgctxt "Navigation" #~ msgid "Browse" #~ msgstr "Sirvi" #~ msgid "Theme" #~ msgstr "Teema" #~ msgid "Follow System" #~ msgstr "Süsteemi välimus" #~ msgid "Light" #~ msgstr "Hele teema" #~ msgid "Dark" #~ msgstr "Tume teema" #~ msgid "Are you sure you want to uninstall?" #~ msgstr "Kas oled kindel, et tahad eemaldada laienduse?" #~ msgid "" #~ "A very simple tool for browsing, downloading, and managing GNOME shell " #~ "extensions." #~ msgstr "" #~ "Lihtne tööriist GNOME töölaua laienduste sirvimiseks, paigaldamiseks ning " #~ "haldamiseks." #~ msgid "e.g. \"Blur my Shell\"" #~ msgstr "näiteks „Blur my Shell“" #~ msgid "What's New" #~ msgstr "Mis on uut" #~ msgid "View Release Notes" #~ msgstr "Vaata uuenduste logi" #, fuzzy, c-format #~ msgid "" #~ "This is your first time using Extension Manager %s.\n" #~ "Would you like to see the release notes?" #~ msgstr "" #~ "See on sinu esimene kord kasutades Laiendushaldurit %s.\n" #~ "Kas soovid vaadata mis on uut?" extension-manager-0.6.3/po/extension-manager.pot000066400000000000000000000327631477302130300217450ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the extension-manager package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: extension-manager\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-03-06 16:36+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:2 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:6 #: src/exm-window.blp:7 msgid "Extension Manager" msgstr "" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:11 msgid "Manage GNOME Shell Extensions" msgstr "" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #. Make sure to leave the original strings and add your translations afterwards, so that users can search both in English and your language. #: data/com.mattjakeman.ExtensionManager.desktop.in.in:14 msgid "extension;manager;shell;" msgstr "" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:7 msgid "Browse, install, and manage GNOME Shell Extensions" msgstr "" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:13 msgid "A utility for browsing and installing GNOME Shell Extensions." msgstr "" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:14 msgid "Features:" msgstr "" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:16 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:26 msgid "Browse extensions.gnome.org right inside the app" msgstr "" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:17 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:22 msgid "Manage the extensions you already have installed" msgstr "" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:30 msgid "See all the details of your extensions" msgstr "" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:34 msgid "Check your extensions compatibility with the next version of GNOME" msgstr "" #: src/exm-application.c:201 msgid "Browse, install, and manage GNOME Shell Extensions." msgstr "" #. Translators: Use 'Name email@domain.com' or 'Name https://website.example' (without single quotes). Do not delete existing names, write yours on a new line. #: src/exm-application.c:204 msgid "translator-credits" msgstr "" #: src/exm-browse-page.blp:16 msgid "Search for Extensions" msgstr "" #: src/exm-browse-page.blp:17 msgid "" "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell Extensions" msgstr "" #: src/exm-browse-page.blp:47 msgid "Relevance" msgstr "" #: src/exm-browse-page.blp:48 msgctxt "Sort search results" msgid "Downloads" msgstr "" #: src/exm-browse-page.blp:49 msgid "Recent" msgstr "" #: src/exm-browse-page.blp:50 src/exm-detail-view.blp:113 msgid "Name" msgstr "" #: src/exm-browse-page.blp:57 msgid "Sort search results" msgstr "" #: src/exm-browse-page.blp:103 msgid "_Load More Results" msgstr "" #: src/exm-browse-page.blp:137 src/exm-installed-page.blp:123 msgid "No Results Found" msgstr "" #: src/exm-browse-page.blp:144 msgid "Try a different search" msgstr "" #: src/exm-browse-page.blp:178 src/exm-comment-dialog.blp:34 #: src/exm-detail-view.blp:49 src/exm-detail-view.blp:291 #: src/exm-upgrade-assistant.blp:100 msgid "Connection Error" msgstr "" #: src/exm-comment-dialog.blp:13 src/exm-detail-view.blp:248 msgid "Reviews and Comments" msgstr "" #: src/exm-comment-dialog.blp:25 msgid "Loading" msgstr "" #: src/exm-comment-tile.blp:30 src/exm-detail-view.blp:127 msgid "Author" msgstr "" #: src/exm-detail-view.blp:40 msgid "Loading Details" msgstr "" #: src/exm-detail-view.blp:59 src/exm-window.c:347 msgid "An Error Occurred" msgstr "" #: src/exm-detail-view.blp:60 msgid "No extension details available" msgstr "" #: src/exm-detail-view.blp:154 msgid "Enlarge Image" msgstr "" #: src/exm-detail-view.blp:172 src/exm-extension-row.blp:89 msgid "Description" msgstr "" #: src/exm-detail-view.blp:195 msgid "Links" msgstr "" #: src/exm-detail-view.blp:203 msgid "Homepage" msgstr "" #: src/exm-detail-view.blp:219 msgid "Donate" msgstr "" #: src/exm-detail-view.blp:228 msgid "View on Extensions" msgstr "" #: src/exm-detail-view.blp:271 msgid "Reviews and comments are disabled for this extension" msgstr "" #: src/exm-detail-view.blp:314 msgid "There are no reviews or comments" msgstr "" #: src/exm-detail-view.blp:343 msgid "_Show All" msgstr "" #. Translators: '%s' = extension name #: src/exm-detail-view.c:445 #, c-format msgid "%s Icon" msgstr "" #. Translators: '%s' = extension name #: src/exm-detail-view.c:478 #, c-format msgid "%s Screenshot" msgstr "" #: src/exm-error-dialog.blp:7 msgid "Error Report" msgstr "" #: src/exm-error-dialog.blp:22 msgid "An unexpected error occurred in Extension Manager" msgstr "" #: src/exm-error-dialog.blp:36 msgid "Copy to Clipboard" msgstr "" #: src/exm-error-dialog.blp:77 msgid "_New Issue" msgstr "" #. Success indicator #: src/exm-error-dialog.c:125 src/exm-upgrade-assistant.c:347 msgid "Copied" msgstr "" #: src/exm-error-dialog.c:173 msgid "Please open a new issue and attach the following information:" msgstr "" #. Translators: '%s' = Name of Distributor (e.g. "Packager123") #: src/exm-error-dialog.c:177 #, c-format msgid "" "You are using a third-party build of Extension Manager. Please contact the package distributor (%s) first before " "filing an issue. Be sure to attach the following information:" msgstr "" #. Translators: Button's tooltip to open extension's preferences dialog #: src/exm-extension-row.blp:28 msgid "Open extension preferences" msgstr "" #. Translators: Icon's tooltip when an extension has an error #: src/exm-extension-row.blp:46 msgid "An error occurred while loading this extension" msgstr "" #. Translators: Icon's tooltip when an extension is incompatible #: src/exm-extension-row.blp:63 src/exm-install-button.c:117 msgid "This extension is incompatible with your current version of GNOME" msgstr "" #. Translators: Icon's tooltip when an extension update is available #: src/exm-extension-row.blp:80 msgid "A newer version of this extension is available" msgstr "" #: src/exm-extension-row.blp:98 src/exm-info-bar.blp:50 msgid "Version" msgstr "" #: src/exm-extension-row.blp:107 msgid "Session Modes" msgstr "" #: src/exm-extension-row.blp:137 msgid "Error" msgstr "" #: src/exm-extension-row.blp:158 msgid "See Details" msgstr "" #: src/exm-extension-row.blp:169 msgid "Remove…" msgstr "" #: src/exm-extension-row.c:175 msgid "Unlock Dialog" msgstr "" #. Translators: GNOME Display Manager #: src/exm-extension-row.c:181 msgid "GDM" msgstr "" #. Translators: Label when an extension runs on both, login and lock screens #: src/exm-extension-row.c:189 msgid "" "This extension will run while the screen is locked and no user is logged in" msgstr "" #. Translators: Label when an extension runs on the lock screen #: src/exm-extension-row.c:194 msgid "This extension will run while the screen is locked" msgstr "" #. Translators: Label when an extension runs on the login screen #: src/exm-extension-row.c:199 msgid "This extension will run while no user is logged in" msgstr "" #: src/exm-help-overlay.blp:11 msgctxt "shortcut window" msgid "General" msgstr "" #: src/exm-help-overlay.blp:14 msgctxt "shortcut window" msgid "Show Installed Page" msgstr "" #: src/exm-help-overlay.blp:19 msgctxt "shortcut window" msgid "Show Browse Page" msgstr "" #: src/exm-help-overlay.blp:24 msgctxt "shortcut window" msgid "Toggle Search" msgstr "" #: src/exm-help-overlay.blp:29 msgctxt "shortcut window" msgid "Show Keyboard Shortcuts" msgstr "" #: src/exm-help-overlay.blp:34 msgctxt "shortcut window" msgid "Close Window" msgstr "" #: src/exm-help-overlay.blp:39 msgctxt "shortcut window" msgid "Quit" msgstr "" #: src/exm-help-overlay.blp:45 msgctxt "shortcut window" msgid "Screenshot View" msgstr "" #: src/exm-help-overlay.blp:48 src/exm-help-overlay.blp:63 msgctxt "shortcut window" msgid "Zoom In" msgstr "" #: src/exm-help-overlay.blp:53 src/exm-help-overlay.blp:68 msgctxt "shortcut window" msgid "Zoom Out" msgstr "" #: src/exm-help-overlay.blp:58 msgctxt "shortcut window" msgid "Reset Zoom" msgstr "" #: src/exm-info-bar.blp:28 msgctxt "Number of downloads" msgid "Downloads" msgstr "" #: src/exm-info-bar.c:107 msgid "Unsupported" msgstr "" #: src/exm-install-button.c:127 msgid "Install…" msgstr "" #: src/exm-install-button.c:132 msgid "Installing" msgstr "" #: src/exm-install-button.c:136 msgctxt "State" msgid "Installed" msgstr "" #: src/exm-install-button.c:140 msgid "Unsupported…" msgstr "" #: src/exm-installed-page.blp:16 msgid "_Log Out…" msgstr "" #: src/exm-installed-page.blp:28 msgid "Use Extensions" msgstr "" #: src/exm-installed-page.blp:29 msgid "Extensions can cause performance and stability issues" msgstr "" #: src/exm-installed-page.blp:34 src/exm-upgrade-assistant.blp:133 msgid "User-Installed Extensions" msgstr "" #: src/exm-installed-page.blp:51 src/exm-upgrade-assistant.blp:150 msgid "No User Extensions Installed" msgstr "" #: src/exm-installed-page.blp:55 msgid "Browse" msgstr "" #: src/exm-installed-page.blp:69 src/exm-upgrade-assistant.blp:160 msgid "System Extensions" msgstr "" #: src/exm-installed-page.blp:86 src/exm-upgrade-assistant.blp:177 msgid "No System Extensions Installed" msgstr "" #. Translators: Text announced by screen readers when interacting with the list of search results #: src/exm-installed-page.blp:111 msgid "Search Results" msgstr "" #: src/exm-installed-page.blp:124 msgid "Try a different search or search online" msgstr "" #: src/exm-installed-page.blp:131 msgid "_Search Online" msgstr "" #. Translators: '%d' = number of extensions that will be updated #: src/exm-installed-page.c:298 #, c-format msgid "%d extension will be updated on next login" msgid_plural "%d extensions will be updated on next login" msgstr[0] "" msgstr[1] "" #: src/exm-rating.c:142 #, c-format msgid "%i Star" msgid_plural "%i Stars" msgstr[0] "" msgstr[1] "" #. Translators: Button's tooltip to zoom out screenshots #: src/exm-screenshot-view.blp:37 msgid "Zoom Out" msgstr "" #. Translators: Button's tooltip to zoom in screenshots #: src/exm-screenshot-view.blp:51 msgid "Zoom In" msgstr "" #: src/exm-upgrade-assistant.blp:11 msgid "Upgrade Assistant" msgstr "" #: src/exm-upgrade-assistant.blp:66 msgid "_Check Compatibility" msgstr "" #: src/exm-upgrade-assistant.blp:189 msgid "_Copy to Clipboard" msgstr "" #: src/exm-upgrade-assistant.c:188 #, c-format msgid "Checked %d/%d Extensions" msgstr "" #. Set percentage text #: src/exm-upgrade-assistant.c:207 #, c-format msgid "%d%% Compatible" msgstr "" #: src/exm-upgrade-assistant.c:223 #, c-format msgid "" "GNOME %s supports %d out of %d of the extensions currently " "installed on the system" msgstr "" #. Translators: Icon's tooltip when an extension is compatible #: src/exm-upgrade-assistant.c:503 msgid "A compatible version of the extension exists" msgstr "" #. Translators: Icon's tooltip when an extension is not compatible #: src/exm-upgrade-assistant.c:510 msgid "No compatible version of the extension exists" msgstr "" #. Translators: Icon's tooltip when an extension compatibility is unknown #: src/exm-upgrade-assistant.c:517 msgid "" "This extension is not hosted on extensions.gnome.org. Its compatibility " "cannot be determined." msgstr "" #: src/exm-upgrade-assistant.c:608 #, c-format msgid "" "You are currently running GNOME %s. Select a version of GNOME below " "and check whether your extensions will continue to be available." msgstr "" #. Translators: Tooltip of the search icon in the header bar #: src/exm-window.blp:39 msgid "Search Installed Extensions" msgstr "" #: src/exm-window.blp:48 msgid "Main Menu" msgstr "" #: src/exm-window.blp:59 msgid "Search for installed extensions" msgstr "" #: src/exm-window.blp:71 msgctxt "Navigation" msgid "_Installed" msgstr "" #: src/exm-window.blp:80 msgctxt "Navigation" msgid "_Browse" msgstr "" #. Translators: the character preceded by "_" should not be the same #. as others in the same menu #: src/exm-window.blp:108 msgid "Sort _Enabled First" msgstr "" #: src/exm-window.blp:109 msgid "_Show Unsupported" msgstr "" #: src/exm-window.blp:113 msgid "_Upgrade Assistant" msgstr "" #: src/exm-window.blp:114 msgid "_Keyboard Shortcuts" msgstr "" #: src/exm-window.blp:115 msgid "_About Extension Manager" msgstr "" #: src/exm-window.blp:120 msgid "Uninstall Extension?" msgstr "" #: src/exm-window.blp:121 msgid "" "The extension's features and functionality will no longer be accessible. Are " "you sure you want to uninstall?" msgstr "" #: src/exm-window.blp:126 msgid "_No" msgstr "" #: src/exm-window.blp:127 msgid "_Yes" msgstr "" #: src/exm-window.blp:132 msgid "Unsupported Extension" msgstr "" #: src/exm-window.blp:133 msgid "" "This extension does not support your GNOME Shell version. It may cause " "errors if installed." msgstr "" #: src/exm-window.blp:139 msgid "_Install Anyway" msgstr "" #: src/exm-window.blp:140 msgid "_Go Back" msgstr "" #: src/exm-window.c:348 msgid "_Details" msgstr "" #: src/web/exm-request-handler.c:99 msgid "" "Check GNOME infrastructure status " "and try again later" msgstr "" #: src/web/exm-request-handler.c:100 msgid "Check your network status and try again" msgstr "" extension-manager-0.6.3/po/fa.po000066400000000000000000000643711477302130300165230ustar00rootroot00000000000000# LANGUAGE translations for extension-manager package. # Copyright (C) YEAR THE extension-manager'S COPYRIGHT HOLDER # This file is distributed under the same license as the extension-manager package. # nima fanni asl , 2022. # Mobin , 2022. # seyed eshagh moghim shahidani , 2022. # msgid "" msgstr "" "Project-Id-Version: extension-manager\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-03-06 16:36+0000\n" "PO-Revision-Date: 2022-10-17 13:19+0330\n" "Last-Translator: eshagh \n" "Language-Team: https://matrix.to/#/#persian_translation:tchncs.de\n" "Language: fa\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==0 || n==1);\n" "X-Generator: Poedit 3.0.1\n" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:2 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:6 #: src/exm-window.blp:7 msgid "Extension Manager" msgstr "مدیر افزونه‌ها" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:11 #, fuzzy #| msgid "A utility for managing GNOME Shell Extensions" msgid "Manage GNOME Shell Extensions" msgstr "یک ابزار برای مدیریت افزونه‌های گنوم" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #. Make sure to leave the original strings and add your translations afterwards, so that users can search both in English and your language. #: data/com.mattjakeman.ExtensionManager.desktop.in.in:14 #, fuzzy #| msgid "Extension Manager" msgid "extension;manager;shell;" msgstr "مدیر افزونه‌ها" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:7 #, fuzzy #| msgid "Browse, install, and manage GNOME Shell Extensions." msgid "Browse, install, and manage GNOME Shell Extensions" msgstr "مرور، نصب و مدیریت افزونه‌های گنوم." #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:13 msgid "A utility for browsing and installing GNOME Shell Extensions." msgstr "ابزاری برای مرور و نصب افزونه‌های گنوم." #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:14 msgid "Features:" msgstr "قابلیت‌ها:" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:16 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:26 msgid "Browse extensions.gnome.org right inside the app" msgstr "مرور افزونه‌ها از extensions.gnome.org در خود برنامه" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:17 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:22 msgid "Manage the extensions you already have installed" msgstr "مدیریت افزونه‌های نصب شده" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:30 #, fuzzy #| msgid "Search for extensions" msgid "See all the details of your extensions" msgstr "جست‌وجو برای افزونه‌ها" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:34 #, fuzzy #| msgid "This extension is incompatible with your current version of GNOME" msgid "Check your extensions compatibility with the next version of GNOME" msgstr "این افزونه با نگارش کنونی پوستهٔ گنوم شما سازگار نیست" #: src/exm-application.c:201 msgid "Browse, install, and manage GNOME Shell Extensions." msgstr "مرور، نصب و مدیریت افزونه‌های گنوم." #. Translators: Use 'Name email@domain.com' or 'Name https://website.example' (without single quotes). Do not delete existing names, write yours on a new line. #: src/exm-application.c:204 msgid "translator-credits" msgstr "" "نیما قنی اصل \n" "مبین آیدین فر \n" "سید اسحاق مقیم شهیدانی " #: src/exm-browse-page.blp:16 #, fuzzy #| msgid "Search for extensions" msgid "Search for Extensions" msgstr "جست‌وجو برای افزونه‌ها" #: src/exm-browse-page.blp:17 #, fuzzy #| msgid "" #| "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell " #| "Extensions." msgid "" "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell Extensions" msgstr "" "یک کلیدواژه برای جست‌وجوی افزونه‌های گنوم در «extensions.gnome.org» وارد کنید." #: src/exm-browse-page.blp:47 msgid "Relevance" msgstr "" #: src/exm-browse-page.blp:48 #, fuzzy #| msgid "Downloads" msgctxt "Sort search results" msgid "Downloads" msgstr "بارگیری" #: src/exm-browse-page.blp:49 msgid "Recent" msgstr "تازه" #: src/exm-browse-page.blp:50 src/exm-detail-view.blp:113 msgid "Name" msgstr "نام" #: src/exm-browse-page.blp:57 msgid "Sort search results" msgstr "مرتب‌سازی نتایج جست‌وجو" #: src/exm-browse-page.blp:103 #, fuzzy #| msgid "Load More Results" msgid "_Load More Results" msgstr "بار کردن نتایج بیشتر" #: src/exm-browse-page.blp:137 src/exm-installed-page.blp:123 msgid "No Results Found" msgstr "هیچ نتیجه‌ای یافت نشد" #: src/exm-browse-page.blp:144 msgid "Try a different search" msgstr "" #: src/exm-browse-page.blp:178 src/exm-comment-dialog.blp:34 #: src/exm-detail-view.blp:49 src/exm-detail-view.blp:291 #: src/exm-upgrade-assistant.blp:100 msgid "Connection Error" msgstr "" #: src/exm-comment-dialog.blp:13 src/exm-detail-view.blp:248 #, fuzzy #| msgid "Comments" msgid "Reviews and Comments" msgstr "بازبینی‌ها" #: src/exm-comment-dialog.blp:25 #, fuzzy #| msgid "Loading…" msgid "Loading" msgstr "در حال بار کردن…" #: src/exm-comment-tile.blp:30 src/exm-detail-view.blp:127 msgid "Author" msgstr "" #: src/exm-detail-view.blp:40 #, fuzzy #| msgid "Details" msgid "Loading Details" msgstr "جزییات" #: src/exm-detail-view.blp:59 src/exm-window.c:347 msgid "An Error Occurred" msgstr "مشکلی رخ داد" #: src/exm-detail-view.blp:60 #, fuzzy #| msgid "A newer version of this extension is available" msgid "No extension details available" msgstr "نگارش جدیدی از این افزونه موجود است" #: src/exm-detail-view.blp:154 #, fuzzy #| msgid "Enlarge image" msgid "Enlarge Image" msgstr "بزرگ کردن تصویر" #: src/exm-detail-view.blp:172 src/exm-extension-row.blp:89 msgid "Description" msgstr "توضیحات" #: src/exm-detail-view.blp:195 msgid "Links" msgstr "" #: src/exm-detail-view.blp:203 #, fuzzy #| msgid "Project Homepage" msgid "Homepage" msgstr "صفحه اصلی پروژه" #: src/exm-detail-view.blp:219 msgid "Donate" msgstr "" #: src/exm-detail-view.blp:228 msgid "View on Extensions" msgstr "دیدن در افزونه‌ها" #: src/exm-detail-view.blp:271 msgid "Reviews and comments are disabled for this extension" msgstr "" #: src/exm-detail-view.blp:314 msgid "There are no reviews or comments" msgstr "" #: src/exm-detail-view.blp:343 #, fuzzy #| msgid "Show All Reviews" msgid "_Show All" msgstr "نمایش همهٔ بازبینی‌ها" #. Translators: '%s' = extension name #: src/exm-detail-view.c:445 #, c-format msgid "%s Icon" msgstr "" #. Translators: '%s' = extension name #: src/exm-detail-view.c:478 #, c-format msgid "%s Screenshot" msgstr "" #: src/exm-error-dialog.blp:7 msgid "Error Report" msgstr "گزارش مشکل" #: src/exm-error-dialog.blp:22 #, fuzzy #| msgid "" #| "An unexpected error occurred in Extension Manager. Please open a new " #| "issue and attach the following information:" msgid "An unexpected error occurred in Extension Manager" msgstr "" "یک خطای غیرمنتظره در مدیر افزونه‌ها رخ داد. لطفاً یک اشکال جدید باز کنید و " "اطلاعات زیر را پیوست کنید:" #: src/exm-error-dialog.blp:36 #, fuzzy #| msgid "Copy to Clipboard" msgid "Copy to Clipboard" msgstr "رونوشت به تخته‌گیره" #: src/exm-error-dialog.blp:77 #, fuzzy #| msgid "New Issue" msgid "_New Issue" msgstr "اشکال جدید" #. Success indicator #: src/exm-error-dialog.c:125 src/exm-upgrade-assistant.c:347 msgid "Copied" msgstr "رونوشت شد" #: src/exm-error-dialog.c:173 #, fuzzy #| msgid "" #| "An unexpected error occurred in Extension Manager. Please open a new " #| "issue and attach the following information:" msgid "Please open a new issue and attach the following information:" msgstr "" "یک خطای غیرمنتظره در مدیر افزونه‌ها رخ داد. لطفاً یک اشکال جدید باز کنید و " "اطلاعات زیر را پیوست کنید:" #. Translators: '%s' = Name of Distributor (e.g. "Packager123") #: src/exm-error-dialog.c:177 #, c-format msgid "" "You are using a third-party build of Extension Manager. Please contact the package distributor (%s) first before " "filing an issue. Be sure to attach the following information:" msgstr "" #. Translators: Button's tooltip to open extension's preferences dialog #: src/exm-extension-row.blp:28 msgid "Open extension preferences" msgstr "گشودن ترجیحات افزونه" #. Translators: Icon's tooltip when an extension has an error #: src/exm-extension-row.blp:46 msgid "An error occurred while loading this extension" msgstr "مشکلی در بار کردن افزونه رخ داد" #. Translators: Icon's tooltip when an extension is incompatible #: src/exm-extension-row.blp:63 src/exm-install-button.c:117 msgid "This extension is incompatible with your current version of GNOME" msgstr "این افزونه با نگارش کنونی پوستهٔ گنوم شما سازگار نیست" #. Translators: Icon's tooltip when an extension update is available #: src/exm-extension-row.blp:80 msgid "A newer version of this extension is available" msgstr "نگارش جدیدی از این افزونه موجود است" #: src/exm-extension-row.blp:98 src/exm-info-bar.blp:50 msgid "Version" msgstr "نگارش" #: src/exm-extension-row.blp:107 msgid "Session Modes" msgstr "" #: src/exm-extension-row.blp:137 msgid "Error" msgstr "خطا" #: src/exm-extension-row.blp:158 msgid "See Details" msgstr "دیدن جزییات" #: src/exm-extension-row.blp:169 #, fuzzy #| msgid "Remove" msgid "Remove…" msgstr "برداشتن" #: src/exm-extension-row.c:175 msgid "Unlock Dialog" msgstr "" #. Translators: GNOME Display Manager #: src/exm-extension-row.c:181 msgid "GDM" msgstr "" #. Translators: Label when an extension runs on both, login and lock screens #: src/exm-extension-row.c:189 msgid "" "This extension will run while the screen is locked and no user is logged in" msgstr "" #. Translators: Label when an extension runs on the lock screen #: src/exm-extension-row.c:194 msgid "This extension will run while the screen is locked" msgstr "" #. Translators: Label when an extension runs on the login screen #: src/exm-extension-row.c:199 #, fuzzy #| msgid "One extension will be updated on next login." #| msgid_plural "%d extensions will be updated on next login." msgid "This extension will run while no user is logged in" msgstr "تعداد %Id افزونه در ورود بعدی به‌روز رسانی خواهند شد." #: src/exm-help-overlay.blp:11 msgctxt "shortcut window" msgid "General" msgstr "" #: src/exm-help-overlay.blp:14 #, fuzzy #| msgctxt "State" #| msgid "Installed" msgctxt "shortcut window" msgid "Show Installed Page" msgstr "نصب شده" #: src/exm-help-overlay.blp:19 msgctxt "shortcut window" msgid "Show Browse Page" msgstr "" #: src/exm-help-overlay.blp:24 msgctxt "shortcut window" msgid "Toggle Search" msgstr "" #: src/exm-help-overlay.blp:29 msgctxt "shortcut window" msgid "Show Keyboard Shortcuts" msgstr "" #: src/exm-help-overlay.blp:34 msgctxt "shortcut window" msgid "Close Window" msgstr "" #: src/exm-help-overlay.blp:39 msgctxt "shortcut window" msgid "Quit" msgstr "" #: src/exm-help-overlay.blp:45 msgctxt "shortcut window" msgid "Screenshot View" msgstr "" #: src/exm-help-overlay.blp:48 src/exm-help-overlay.blp:63 #, fuzzy #| msgid "Zoom In" msgctxt "shortcut window" msgid "Zoom In" msgstr "بزرگ‌نمایی" #: src/exm-help-overlay.blp:53 src/exm-help-overlay.blp:68 #, fuzzy #| msgid "Zoom Out" msgctxt "shortcut window" msgid "Zoom Out" msgstr "کوچک‌نمایی" #: src/exm-help-overlay.blp:58 msgctxt "shortcut window" msgid "Reset Zoom" msgstr "" #: src/exm-info-bar.blp:28 #, fuzzy #| msgid "Downloads" msgctxt "Number of downloads" msgid "Downloads" msgstr "بارگیری" #: src/exm-info-bar.c:107 msgid "Unsupported" msgstr "پشتیبانی نشده" #: src/exm-install-button.c:127 #, fuzzy #| msgid "Install" msgid "Install…" msgstr "نصب" #: src/exm-install-button.c:132 #, fuzzy #| msgctxt "State" #| msgid "Installed" msgid "Installing" msgstr "نصب شده" #: src/exm-install-button.c:136 msgctxt "State" msgid "Installed" msgstr "نصب شده" #: src/exm-install-button.c:140 #, fuzzy #| msgid "Unsupported" msgid "Unsupported…" msgstr "پشتیبانی نشده" #: src/exm-installed-page.blp:16 #, fuzzy #| msgid "Log Out" msgid "_Log Out…" msgstr "خروج" #: src/exm-installed-page.blp:28 msgid "Use Extensions" msgstr "استفاده از افزونه‌ها" #: src/exm-installed-page.blp:29 #, fuzzy #| msgid "Extensions can cause performance and stability issues." msgid "Extensions can cause performance and stability issues" msgstr "افزونه‌ها می‌توانند باعث مشکلات عملکرد و پایداری شوند." #: src/exm-installed-page.blp:34 src/exm-upgrade-assistant.blp:133 msgid "User-Installed Extensions" msgstr "افزونه‌های نصب شده توسط کاربر" #: src/exm-installed-page.blp:51 src/exm-upgrade-assistant.blp:150 #, fuzzy #| msgid "There are no user extensions installed." msgid "No User Extensions Installed" msgstr "هیچ افزونه‌ای توسط کاربر نصب نشده است." #: src/exm-installed-page.blp:55 msgid "Browse" msgstr "مرور" #: src/exm-installed-page.blp:69 src/exm-upgrade-assistant.blp:160 msgid "System Extensions" msgstr "افزونه‌های سامانه" #: src/exm-installed-page.blp:86 src/exm-upgrade-assistant.blp:177 #, fuzzy #| msgid "There are no system extensions installed." msgid "No System Extensions Installed" msgstr "هیچ افزونه‌ای توسط سامانه نصب نشده است." #. Translators: Text announced by screen readers when interacting with the list of search results #: src/exm-installed-page.blp:111 #, fuzzy #| msgid "Sort search results" msgid "Search Results" msgstr "مرتب‌سازی نتایج جست‌وجو" #: src/exm-installed-page.blp:124 msgid "Try a different search or search online" msgstr "" #: src/exm-installed-page.blp:131 msgid "_Search Online" msgstr "" #. Translators: '%d' = number of extensions that will be updated #: src/exm-installed-page.c:298 #, fuzzy, c-format #| msgid "One extension will be updated on next login." #| msgid_plural "%d extensions will be updated on next login." msgid "%d extension will be updated on next login" msgid_plural "%d extensions will be updated on next login" msgstr[0] "تعداد %Id افزونه در ورود بعدی به‌روز رسانی خواهند شد." msgstr[1] "یک افزونه در ورود بعدی به‌روز رسانی خواهد شد." #: src/exm-rating.c:142 #, c-format msgid "%i Star" msgid_plural "%i Stars" msgstr[0] "" msgstr[1] "" #. Translators: Button's tooltip to zoom out screenshots #: src/exm-screenshot-view.blp:37 msgid "Zoom Out" msgstr "کوچک‌نمایی" #. Translators: Button's tooltip to zoom in screenshots #: src/exm-screenshot-view.blp:51 msgid "Zoom In" msgstr "بزرگ‌نمایی" #: src/exm-upgrade-assistant.blp:11 msgid "Upgrade Assistant" msgstr "دستیار ارتقاء" #: src/exm-upgrade-assistant.blp:66 #, fuzzy #| msgid "Check Compatibility" msgid "_Check Compatibility" msgstr "بررسی سازگاری" #: src/exm-upgrade-assistant.blp:189 #, fuzzy #| msgid "Copy to Clipboard" msgid "_Copy to Clipboard" msgstr "رونوشت به تخته‌گیره" #: src/exm-upgrade-assistant.c:188 #, fuzzy, c-format #| msgid "Search for extensions" msgid "Checked %d/%d Extensions" msgstr "جست‌وجو برای افزونه‌ها" #. Set percentage text #: src/exm-upgrade-assistant.c:207 #, c-format msgid "%d%% Compatible" msgstr "" #: src/exm-upgrade-assistant.c:223 #, fuzzy, c-format #| msgid "" #| "GNOME %s supports %d out of %d of the extensions currently " #| "installed on the system." msgid "" "GNOME %s supports %d out of %d of the extensions currently " "installed on the system" msgstr "" "گنوم %s تعداد %d عدد از %d عدد افزونهٔ نصب شده در سامانه را " "پشتیبانی می‌کند." #. Translators: Icon's tooltip when an extension is compatible #: src/exm-upgrade-assistant.c:503 #, fuzzy #| msgid "A compatible version of the extension exists." msgid "A compatible version of the extension exists" msgstr "یک نگارش سازگار از این افزونه موجود است." #. Translators: Icon's tooltip when an extension is not compatible #: src/exm-upgrade-assistant.c:510 #, fuzzy #| msgid "No compatible version of the extension exists." msgid "No compatible version of the extension exists" msgstr "هیچ نگارش سازگاری از این افزونه موجود نیست." #. Translators: Icon's tooltip when an extension compatibility is unknown #: src/exm-upgrade-assistant.c:517 msgid "" "This extension is not hosted on extensions.gnome.org. Its compatibility " "cannot be determined." msgstr "" "این افزونه در extensions.gnome.org میزبانی نمی‌شود. سازگاری آن را نمی‌توان " "تعیین کرد." #: src/exm-upgrade-assistant.c:608 #, c-format msgid "" "You are currently running GNOME %s. Select a version of GNOME below " "and check whether your extensions will continue to be available." msgstr "" "شما هم‌اکنون گنوم %s را اجرا می‌کنید. یکی از نگارش‌های گنوم را در زیر " "برگزینید و بررسی کنید که آیا افزونه‌هایتان همچنان در دسترس خواهند بود." #. Translators: Tooltip of the search icon in the header bar #: src/exm-window.blp:39 #, fuzzy #| msgid "User-Installed Extensions" msgid "Search Installed Extensions" msgstr "افزونه‌های نصب شده توسط کاربر" #: src/exm-window.blp:48 msgid "Main Menu" msgstr "" #: src/exm-window.blp:59 #, fuzzy #| msgid "Search for extensions" msgid "Search for installed extensions" msgstr "جست‌وجو برای افزونه‌ها" #: src/exm-window.blp:71 #, fuzzy #| msgctxt "Navigation" #| msgid "Installed" msgctxt "Navigation" msgid "_Installed" msgstr "نصب شده" #: src/exm-window.blp:80 #, fuzzy #| msgid "Browse" msgctxt "Navigation" msgid "_Browse" msgstr "مرور" #. Translators: the character preceded by "_" should not be the same #. as others in the same menu #: src/exm-window.blp:108 #, fuzzy #| msgid "Sort Enabled First" msgid "Sort _Enabled First" msgstr "مرتب‌سازی افزونه‌های فعّال در ابتدا" #: src/exm-window.blp:109 #, fuzzy #| msgid "Show Unsupported" msgid "_Show Unsupported" msgstr "نمایش پشتیبانی نشده‌ها" #: src/exm-window.blp:113 #, fuzzy #| msgid "Upgrade Assistant" msgid "_Upgrade Assistant" msgstr "دستیار ارتقاء" #: src/exm-window.blp:114 msgid "_Keyboard Shortcuts" msgstr "" #: src/exm-window.blp:115 #, fuzzy #| msgid "About Extension Manager" msgid "_About Extension Manager" msgstr "دربارهٔ مدیر افزونه‌ها" #: src/exm-window.blp:120 #, fuzzy #| msgid "User-Installed Extensions" msgid "Uninstall Extension?" msgstr "افزونه‌های نصب شده توسط کاربر" #: src/exm-window.blp:121 msgid "" "The extension's features and functionality will no longer be accessible. Are " "you sure you want to uninstall?" msgstr "" #: src/exm-window.blp:126 msgid "_No" msgstr "" #: src/exm-window.blp:127 msgid "_Yes" msgstr "" #: src/exm-window.blp:132 #, fuzzy #| msgid "Use Extensions" msgid "Unsupported Extension" msgstr "استفاده از افزونه‌ها" #: src/exm-window.blp:133 #, fuzzy #| msgid "" #| "This extension does not support your GNOME Shell version.\n" #| "Would you like to install anyway?" msgid "" "This extension does not support your GNOME Shell version. It may cause " "errors if installed." msgstr "" "این افزونه با نگارش کنونی پوستهٔ گنوم شما سازگار نیست.\n" "به هر حال نصب شود؟" #: src/exm-window.blp:139 #, fuzzy #| msgid "Install" msgid "_Install Anyway" msgstr "نصب" #: src/exm-window.blp:140 msgid "_Go Back" msgstr "" #: src/exm-window.c:348 #, fuzzy #| msgid "Details" msgid "_Details" msgstr "جزییات" #: src/web/exm-request-handler.c:99 msgid "" "Check GNOME infrastructure status " "and try again later" msgstr "" #: src/web/exm-request-handler.c:100 msgid "Check your network status and try again" msgstr "" #~ msgid "Comments" #~ msgstr "بازبینی‌ها" #~ msgid "User Reviews" #~ msgstr "بازبینی‌های کاربران" #, fuzzy #~| msgid "Comments" #~ msgid "No comments yet" #~ msgstr "بازبینی‌ها" #, fuzzy #~| msgid "Updates are available" #~ msgid "Updates Available" #~ msgstr "به‌روز رسانی‌ها موجود هستند" #~ msgid "Supported" #~ msgstr "پشتیبانی شده" #~ msgid "Unknown" #~ msgstr "نامعلوم" #~ msgid "A utility for managing GNOME Shell Extensions" #~ msgstr "یک ابزار برای مدیریت افزونه‌های گنوم" #, c-format #~ msgid "e.g. “%s”" #~ msgstr "برای مثال «%s»" #~ msgid "This extension is incompatible with your current version of GNOME." #~ msgstr "این افزونه با نگارش کنونی پوستهٔ گنوم شما سازگار نیست." #~ msgid "An error occurred." #~ msgstr "خطایی رخ داد." #~ msgid "Return to view" #~ msgstr "بازگشت به نمایش" #~ msgid "@app_title@" #~ msgstr "مدیر افزونه‌ها" #~ msgid "Translation updates" #~ msgstr "به‌روز رسانی‌های ترجمه" #~ msgid "Various bug fixes" #~ msgstr "رفع اشکال‌های مختلف" #~ msgid "Performance and stability" #~ msgstr "عملکرد و پایداری" #~ msgid "Remove release notes dialog" #~ msgstr "برداشتن گفت‌وگوی یادداشت‌های انتشار" #~ msgid "Fix special characters in installed extension listings" #~ msgstr "تصحیح نویسه‌های خاص در فهرست افزونه‌های نصب شده" #~ msgid "The second feature update to extension-manager. Highlights include:" #~ msgstr "دومین به‌روز رسانی ویژگی به مدیر افزونه‌ها. نکات برجسته عبارتند از:" #~ msgid "View comments and reviews" #~ msgstr "دیدن نظرات" #~ msgid "Support for in-app updates" #~ msgstr "پشتیبانی از بروزرسانی درون برنامه‌ای" #~ msgid "Better handling errors and out-of-date extensions" #~ msgstr "مدیریت بهتر خطاها و افزونه‌های منسوخ" #~ msgid "Allow installing 'unsupported' extensions" #~ msgstr "اجازه به نصب افزونه‌های «پشتیبانی نشده»" #~ msgid "Display release notes on first run" #~ msgstr "نمایش یادداشت‌های انتشار در اولین اجرا" #~ msgid "New app icon" #~ msgstr "نقشک جدید برنامه" #~ msgid "Optionally sort extensions by enabled status" #~ msgstr "مرتب‌سازی افزونه‌ها بر اساس فعّال بودن" #~ msgid "Fix special characters in search results" #~ msgstr "تصحیح نویسه‌های خاص در نتایج جست‌و‌جو" #~ msgid "Fixes a crash that sometimes occurs while uninstalling an extension" #~ msgstr "برطرف کردن خرابی‌های که بعد از حذف برخی افزونه‌ها رخ می‌دهد" #~ msgid "The first feature update to extension-manager. Highlights include:" #~ msgstr "اولین به‌روز رسانی ویژگی به مدیر افزونه‌ها. نکات برجسته عبارتند از:" #~ msgid "Dark theme and support for overriding the system colour scheme" #~ msgstr "تم تیره و پشتیبانی از نادیده گرفتن طرح رنگ سامانه" #~ msgid "Shows screenshots in extension listings" #~ msgstr "نمایش نماگرفت‌ها در صفحه افزونه‌ها" #~ msgid "Shell version compatibility check" #~ msgstr "بررسی سازگاری با نگارش پوستهٔ گنوم" #~ msgid "Localised into seven languages" #~ msgstr "ترجمه شدن به هفت زبان" #~ msgid "Global extension on/off toggle" #~ msgstr "روشن یا خاموش کردن سراسری افزونه" #~ msgid "Displays user and system extensions separately" #~ msgstr "نمایش افزونه‌های کاربر و سامانه به صورت جداگانه" #~ msgid "Extension Manager (Development)" #~ msgstr "مدیر افزونه‌ها (در حال توسعه)" #~ msgid "Popularity" #~ msgstr "محبوبیت" #~ msgid "Supported Versions" #~ msgstr "نگارش‌های پشتیبانی شده" #~ msgctxt "Navigation" #~ msgid "Browse" #~ msgstr "مرور" #~ msgid "Theme" #~ msgstr "زمینه" #~ msgid "Follow System" #~ msgstr "پیروی از زمینهٔ سامانه" #~ msgid "Light" #~ msgstr "روشن" #~ msgid "Dark" #~ msgstr "تاریک" #~ msgid "Are you sure you want to uninstall?" #~ msgstr "آیا مطمئنید که می‌خواهید حذفش کنید؟" #~ msgid "" #~ "A very simple tool for browsing, downloading, and managing GNOME shell " #~ "extensions." #~ msgstr "یک ابزار خیلی ساده برای مرور، بارگیری و مدیریت افزونه‌های گنوم." #~ msgid "e.g. \"Blur my Shell\"" #~ msgstr "مثلا: «Persian calendar»" #~ msgid "What's New" #~ msgstr "چه چیزی تازه است" #~ msgid "View Release Notes" #~ msgstr "دیدن یادداشت‌های انتشار" #, c-format #~ msgid "" #~ "This is your first time using Extension Manager %s.\n" #~ "Would you like to see the release notes?" #~ msgstr "" #~ "این اولین بار است که دارید از مدیر افزونه ها %s استفاده می‌کنید.\n" #~ "آیا می‌خواهید یادداشت‌های انتشار را ببینید؟" extension-manager-0.6.3/po/fi.po000066400000000000000000000440041477302130300165220ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the extension-manager package. # Jiri Grönroos , 2024, 2025. # Ricky Tigg , 2024, 2025. # Óscar Fernández Díaz , 2025. msgid "" msgstr "" "Project-Id-Version: extension-manager\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-03-06 16:36+0000\n" "PO-Revision-Date: 2025-03-13 05:26+0000\n" "Last-Translator: Jiri Grönroos \n" "Language-Team: Finnish \n" "Language: fi\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: Weblate 5.10.3-dev\n" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:2 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:6 #: src/exm-window.blp:7 msgid "Extension Manager" msgstr "Laajennusten hallinta" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:11 msgid "Manage GNOME Shell Extensions" msgstr "Hallitse Gnome Shell -laajenuksia" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #. Make sure to leave the original strings and add your translations afterwards, so that users can search both in English and your language. #: data/com.mattjakeman.ExtensionManager.desktop.in.in:14 msgid "extension;manager;shell;" msgstr "extension;manager;shell;laajennus;lisäosa;" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:7 msgid "Browse, install, and manage GNOME Shell Extensions" msgstr "Selaa, asenna ja hallitse Gnome Shell -laajennuksia" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:13 msgid "A utility for browsing and installing GNOME Shell Extensions." msgstr "Apuohjelma Gnome Shell -laajennusten selaamiseen ja asentamiseen." #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:14 msgid "Features:" msgstr "Ominaisuudet:" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:16 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:26 msgid "Browse extensions.gnome.org right inside the app" msgstr "Selaa extensions.gnome.org-palvelun sisältöä sovelluksesta" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:17 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:22 msgid "Manage the extensions you already have installed" msgstr "Hallitse jo asennettuja laajennuksia" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:30 msgid "See all the details of your extensions" msgstr "Näe kaikki laajennusten yksityiskohdat" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:34 msgid "Check your extensions compatibility with the next version of GNOME" msgstr "Tarkista laajennustesi yhteensopivuus seuraavan Gnome-version kanssa" #: src/exm-application.c:201 msgid "Browse, install, and manage GNOME Shell Extensions." msgstr "Selaa, asenna ja hallitse Gnome Shell -laajennuksia." #. Translators: Use 'Name email@domain.com' or 'Name https://website.example' (without single quotes). Do not delete existing names, write yours on a new line. #: src/exm-application.c:204 msgid "translator-credits" msgstr "Jiri Grönroos" #: src/exm-browse-page.blp:16 msgid "Search for Extensions" msgstr "Etsi laajennuksia" #: src/exm-browse-page.blp:17 msgid "" "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell Extensions" msgstr "" "Anna hakuehto, jolla Gnome Shell -laajennuksia etsitään\"extensions.gnome." "org\"-sivustolta" #: src/exm-browse-page.blp:47 msgid "Relevance" msgstr "Merkitys" #: src/exm-browse-page.blp:48 msgctxt "Sort search results" msgid "Downloads" msgstr "Lataukset" #: src/exm-browse-page.blp:49 msgid "Recent" msgstr "Viimeisimmät" #: src/exm-browse-page.blp:50 src/exm-detail-view.blp:113 msgid "Name" msgstr "Nimi" #: src/exm-browse-page.blp:57 msgid "Sort search results" msgstr "Järjestä hakutulokset" #: src/exm-browse-page.blp:103 msgid "_Load More Results" msgstr "_Lataa lisää tuloksia" #: src/exm-browse-page.blp:137 src/exm-installed-page.blp:123 msgid "No Results Found" msgstr "Tuloksia ei löytynyt" #: src/exm-browse-page.blp:144 msgid "Try a different search" msgstr "Kokeile eri hakuehtoja" #: src/exm-browse-page.blp:178 src/exm-comment-dialog.blp:34 #: src/exm-detail-view.blp:49 src/exm-detail-view.blp:291 #: src/exm-upgrade-assistant.blp:100 msgid "Connection Error" msgstr "Yhteysvirhe" #: src/exm-comment-dialog.blp:13 src/exm-detail-view.blp:248 msgid "Reviews and Comments" msgstr "Arviot ja kommentit" #: src/exm-comment-dialog.blp:25 msgid "Loading" msgstr "Ladataan" #: src/exm-comment-tile.blp:30 src/exm-detail-view.blp:127 msgid "Author" msgstr "Tekijä" #: src/exm-detail-view.blp:40 msgid "Loading Details" msgstr "Ladataan tietoja" #: src/exm-detail-view.blp:59 src/exm-window.c:347 msgid "An Error Occurred" msgstr "Tapahtui virhe" #: src/exm-detail-view.blp:60 msgid "No extension details available" msgstr "Laajennuksen tietoja ei ole saatavilla" #: src/exm-detail-view.blp:154 msgid "Enlarge Image" msgstr "Suurenna kuva" #: src/exm-detail-view.blp:172 src/exm-extension-row.blp:89 msgid "Description" msgstr "Kuvaus" #: src/exm-detail-view.blp:195 msgid "Links" msgstr "Linkit" #: src/exm-detail-view.blp:203 msgid "Homepage" msgstr "Verkkosivu" #: src/exm-detail-view.blp:219 msgid "Donate" msgstr "Lahjoita" #: src/exm-detail-view.blp:228 msgid "View on Extensions" msgstr "Näytä sivustolla" #: src/exm-detail-view.blp:271 msgid "Reviews and comments are disabled for this extension" msgstr "Arviot ja kommentit eivät ole käytössä tämän laajennuksen kohdalla" #: src/exm-detail-view.blp:314 msgid "There are no reviews or comments" msgstr "Ei arvioita tai kommentteja" #: src/exm-detail-view.blp:343 msgid "_Show All" msgstr "_Näytä kaikki" #. Translators: '%s' = extension name #: src/exm-detail-view.c:445 #, c-format msgid "%s Icon" msgstr "Laajennuksen %s kuvake" #. Translators: '%s' = extension name #: src/exm-detail-view.c:478 #, c-format msgid "%s Screenshot" msgstr "Laajennuksen %s kuvakaappaus" #: src/exm-error-dialog.blp:7 msgid "Error Report" msgstr "Virheraportti" #: src/exm-error-dialog.blp:22 msgid "An unexpected error occurred in Extension Manager" msgstr "Laajennusten hallinta -sovelluksessa tapahtui odottamaton virhe" #: src/exm-error-dialog.blp:36 msgid "Copy to Clipboard" msgstr "Kopioi leikepöydälle" #: src/exm-error-dialog.blp:77 msgid "_New Issue" msgstr "_Uusi vikatiketti" #. Success indicator #: src/exm-error-dialog.c:125 src/exm-upgrade-assistant.c:347 msgid "Copied" msgstr "Kopioitu" #: src/exm-error-dialog.c:173 msgid "Please open a new issue and attach the following information:" msgstr "Avaa uusi vikatiketti ja liitä seuraavat tiedot:" #. Translators: '%s' = Name of Distributor (e.g. "Packager123") #: src/exm-error-dialog.c:177 #, c-format msgid "" "You are using a third-party build of Extension Manager. Please contact the package distributor (%s) first before " "filing an issue. Be sure to attach the following information:" msgstr "" "Käytät kolmannen osapuolen Extension Managerin koontiversiota. ota ensin yhteyttä paketin jakelijaan (%s) ennen kuin " "ilmoitat ongelmasta. Muista liittää mukaan seuraavat tiedot:" #. Translators: Button's tooltip to open extension's preferences dialog #: src/exm-extension-row.blp:28 msgid "Open extension preferences" msgstr "Avaa laajennuksen asetukset" #. Translators: Icon's tooltip when an extension has an error #: src/exm-extension-row.blp:46 msgid "An error occurred while loading this extension" msgstr "Tätä laajenusta ladatessa tapahtui virhe" #. Translators: Icon's tooltip when an extension is incompatible #: src/exm-extension-row.blp:63 src/exm-install-button.c:117 msgid "This extension is incompatible with your current version of GNOME" msgstr "Tämä laajennus ei ole yhteensopiva käyttämäsi Gnome-version kanssa" #. Translators: Icon's tooltip when an extension update is available #: src/exm-extension-row.blp:80 msgid "A newer version of this extension is available" msgstr "Uudempi versio tästä laajennuksesta on saatavilla" #: src/exm-extension-row.blp:98 src/exm-info-bar.blp:50 msgid "Version" msgstr "Versio" #: src/exm-extension-row.blp:107 msgid "Session Modes" msgstr "Istuntotilat" #: src/exm-extension-row.blp:137 msgid "Error" msgstr "Virhe" #: src/exm-extension-row.blp:158 msgid "See Details" msgstr "Näytä tiedot" #: src/exm-extension-row.blp:169 msgid "Remove…" msgstr "Poista…" #: src/exm-extension-row.c:175 msgid "Unlock Dialog" msgstr "Lukituksen avauksen ikkuna" #. Translators: GNOME Display Manager #: src/exm-extension-row.c:181 msgid "GDM" msgstr "GDM" #. Translators: Label when an extension runs on both, login and lock screens #: src/exm-extension-row.c:189 msgid "" "This extension will run while the screen is locked and no user is logged in" msgstr "" "Tämä laajennus pysyy käynnissä, kun näyttö on lukittu ja yksikään käyttäjä " "ei ole sisäänkirjautunut" #. Translators: Label when an extension runs on the lock screen #: src/exm-extension-row.c:194 msgid "This extension will run while the screen is locked" msgstr "Tämä laajennus pysyy käynnissä, kun näyttö on lukittu" #. Translators: Label when an extension runs on the login screen #: src/exm-extension-row.c:199 msgid "This extension will run while no user is logged in" msgstr "" "Tämä laajennus pysyy käynnissä vaikka yksikään käyttäjä ei olisi " "sisäänkirjautunut" #: src/exm-help-overlay.blp:11 msgctxt "shortcut window" msgid "General" msgstr "Yleiset" #: src/exm-help-overlay.blp:14 msgctxt "shortcut window" msgid "Show Installed Page" msgstr "Näytä Asennettu-sivu" #: src/exm-help-overlay.blp:19 msgctxt "shortcut window" msgid "Show Browse Page" msgstr "Näytä Selaa-sivu" #: src/exm-help-overlay.blp:24 msgctxt "shortcut window" msgid "Toggle Search" msgstr "Haku päällä/pois" #: src/exm-help-overlay.blp:29 msgctxt "shortcut window" msgid "Show Keyboard Shortcuts" msgstr "Näytä pikanäppäimet" #: src/exm-help-overlay.blp:34 msgctxt "shortcut window" msgid "Close Window" msgstr "Sulje ikkuna" #: src/exm-help-overlay.blp:39 msgctxt "shortcut window" msgid "Quit" msgstr "Lopeta" #: src/exm-help-overlay.blp:45 msgctxt "shortcut window" msgid "Screenshot View" msgstr "Kuvakaappauksen näkymä" #: src/exm-help-overlay.blp:48 src/exm-help-overlay.blp:63 msgctxt "shortcut window" msgid "Zoom In" msgstr "Lähennä" #: src/exm-help-overlay.blp:53 src/exm-help-overlay.blp:68 msgctxt "shortcut window" msgid "Zoom Out" msgstr "Loitonna" #: src/exm-help-overlay.blp:58 msgctxt "shortcut window" msgid "Reset Zoom" msgstr "Palauta koko" #: src/exm-info-bar.blp:28 msgctxt "Number of downloads" msgid "Downloads" msgstr "Lataukset" #: src/exm-info-bar.c:107 msgid "Unsupported" msgstr "Ei tuettu" #: src/exm-install-button.c:127 msgid "Install…" msgstr "Asenna…" #: src/exm-install-button.c:132 msgid "Installing" msgstr "Asennetaan" #: src/exm-install-button.c:136 msgctxt "State" msgid "Installed" msgstr "Asennettu" #: src/exm-install-button.c:140 msgid "Unsupported…" msgstr "Ei tuettu…" #: src/exm-installed-page.blp:16 msgid "_Log Out…" msgstr "_Kirjaudu ulos…" #: src/exm-installed-page.blp:28 msgid "Use Extensions" msgstr "Käytä laajennuksia" #: src/exm-installed-page.blp:29 msgid "Extensions can cause performance and stability issues" msgstr "Laajennukset voivat aiheuttaa suorituskyky- ja vakausongelmia" #: src/exm-installed-page.blp:34 src/exm-upgrade-assistant.blp:133 msgid "User-Installed Extensions" msgstr "Käyttäjän asentamat laajennukset" #: src/exm-installed-page.blp:51 src/exm-upgrade-assistant.blp:150 msgid "No User Extensions Installed" msgstr "EI käyttäjän asentamia laajennuksia" #: src/exm-installed-page.blp:55 msgid "Browse" msgstr "Selaa" #: src/exm-installed-page.blp:69 src/exm-upgrade-assistant.blp:160 msgid "System Extensions" msgstr "Järjestelmän laajennukset" #: src/exm-installed-page.blp:86 src/exm-upgrade-assistant.blp:177 msgid "No System Extensions Installed" msgstr "Ei järjestelmän asetamia laajennuksia" #. Translators: Text announced by screen readers when interacting with the list of search results #: src/exm-installed-page.blp:111 msgid "Search Results" msgstr "Hakutulokset" #: src/exm-installed-page.blp:124 msgid "Try a different search or search online" msgstr "Kokeile eri hakuehtoja tai etsi verkosta" #: src/exm-installed-page.blp:131 msgid "_Search Online" msgstr "_Etsi verkosta" #. Translators: '%d' = number of extensions that will be updated #: src/exm-installed-page.c:298 #, c-format msgid "%d extension will be updated on next login" msgid_plural "%d extensions will be updated on next login" msgstr[0] "%d laajennus päivitetään seuraavan sisäänkirjautumisen yhteydessä" msgstr[1] "%d laajennusta päivitetään seuraavan sisäänkirjautumisen yhteydessä" #: src/exm-rating.c:142 #, c-format msgid "%i Star" msgid_plural "%i Stars" msgstr[0] "%i tähti" msgstr[1] "%i tähteä" #. Translators: Button's tooltip to zoom out screenshots #: src/exm-screenshot-view.blp:37 msgid "Zoom Out" msgstr "Loitonna" #. Translators: Button's tooltip to zoom in screenshots #: src/exm-screenshot-view.blp:51 msgid "Zoom In" msgstr "Lähennä" #: src/exm-upgrade-assistant.blp:11 msgid "Upgrade Assistant" msgstr "Päivitysavustaja" #: src/exm-upgrade-assistant.blp:66 msgid "_Check Compatibility" msgstr "_Tarkista yhteensopivuus" #: src/exm-upgrade-assistant.blp:189 msgid "_Copy to Clipboard" msgstr "_Kopioi leikepöydälle" #: src/exm-upgrade-assistant.c:188 #, c-format msgid "Checked %d/%d Extensions" msgstr "Tarkistettu %d/%d laajennusta" #. Set percentage text #: src/exm-upgrade-assistant.c:207 #, c-format msgid "%d%% Compatible" msgstr "%d %% yhteensopiva" #: src/exm-upgrade-assistant.c:223 #, c-format msgid "" "GNOME %s supports %d out of %d of the extensions currently " "installed on the system" msgstr "" "Gnome %s tukee %d/%d järjestelmään tällä hetkellä asennettuna " "olevaa laajennusta" #. Translators: Icon's tooltip when an extension is compatible #: src/exm-upgrade-assistant.c:503 msgid "A compatible version of the extension exists" msgstr "Yhteensopiva versio laajennuksesta on olemassa" #. Translators: Icon's tooltip when an extension is not compatible #: src/exm-upgrade-assistant.c:510 msgid "No compatible version of the extension exists" msgstr "Laajennuksesta ei ole yhteensopivaa versiota" #. Translators: Icon's tooltip when an extension compatibility is unknown #: src/exm-upgrade-assistant.c:517 msgid "" "This extension is not hosted on extensions.gnome.org. Its compatibility " "cannot be determined." msgstr "" "Tämä laajennus ei ole sivustolta extensions.gnome.org. Sen yhteensopivuutta " "ei voi määrittää." #: src/exm-upgrade-assistant.c:608 #, c-format msgid "" "You are currently running GNOME %s. Select a version of GNOME below " "and check whether your extensions will continue to be available." msgstr "" "Käytössäsi on Gnome %s. Valitse Gnomen versio alapuolelta ja " "tarkista, ovatko laajennukset käytettävissä." #. Translators: Tooltip of the search icon in the header bar #: src/exm-window.blp:39 msgid "Search Installed Extensions" msgstr "Etsi asennettuja laajennuksia" #: src/exm-window.blp:48 msgid "Main Menu" msgstr "Päävalikko" #: src/exm-window.blp:59 msgid "Search for installed extensions" msgstr "Hae asennetut laajennukset" #: src/exm-window.blp:71 msgctxt "Navigation" msgid "_Installed" msgstr "_Asennettu" #: src/exm-window.blp:80 msgctxt "Navigation" msgid "_Browse" msgstr "_Selaa" #. Translators: the character preceded by "_" should not be the same #. as others in the same menu #: src/exm-window.blp:108 msgid "Sort _Enabled First" msgstr "_Järjestä käytössä olevat ensin" #: src/exm-window.blp:109 msgid "_Show Unsupported" msgstr "_Näytä ilman tukea olevat" #: src/exm-window.blp:113 msgid "_Upgrade Assistant" msgstr "_Päivitysavustaja" #: src/exm-window.blp:114 msgid "_Keyboard Shortcuts" msgstr "_Pikanäppäimet" #: src/exm-window.blp:115 msgid "_About Extension Manager" msgstr "_Tietoja - Laajennusten hallinta" #: src/exm-window.blp:120 msgid "Uninstall Extension?" msgstr "Poistetaanko laajennus?" #: src/exm-window.blp:121 msgid "" "The extension's features and functionality will no longer be accessible. Are " "you sure you want to uninstall?" msgstr "" "Laajennuksen ominaisuudet ja toiminnallisuudet eivät ole enää käytettävissä. " "Haluatko varmasti poistaa laajennuksen?" #: src/exm-window.blp:126 msgid "_No" msgstr "_Ei" #: src/exm-window.blp:127 msgid "_Yes" msgstr "_Kyllä" #: src/exm-window.blp:132 msgid "Unsupported Extension" msgstr "Laajennus ei ole tuettu" #: src/exm-window.blp:133 msgid "" "This extension does not support your GNOME Shell version. It may cause " "errors if installed." msgstr "" "Tämä laajennus ei tue käyttämääsi Gnome Shell -versiota. Se saattaa " "aiheuttaa ongelmia, jos se asennetaan." #: src/exm-window.blp:139 msgid "_Install Anyway" msgstr "_Asenna silti" #: src/exm-window.blp:140 msgid "_Go Back" msgstr "_Takaisin" #: src/exm-window.c:348 msgid "_Details" msgstr "_Tiedot" #: src/web/exm-request-handler.c:99 msgid "" "Check GNOME infrastructure status " "and try again later" msgstr "" "Tarkista Gnomen infrastruktuurin tila ja yritä uudelleen" #: src/web/exm-request-handler.c:100 msgid "Check your network status and try again" msgstr "Tarkista verkkoyhteyden tila ja yritä uudelleen" #~ msgid "Comments" #~ msgstr "Kommentit" #~ msgid "User Reviews" #~ msgstr "Käyttäjäarvostelut" #~ msgid "No comments yet" #~ msgstr "Ei kommentteja vielä" #~ msgid "" #~ "This extension could be activated in session modes such as the login " #~ "screen or the lock screen" #~ msgstr "" #~ "Tämä laajennus voidaan aktivoida istuntotiloissa, kuten " #~ "sisäänkirjautumisnäytössä tai lukitusnäytössä" #, c-format #~ msgid "%s by %s" #~ msgstr "%s tekijältä %s" extension-manager-0.6.3/po/fr.po000066400000000000000000000624711477302130300165430ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the extension-manager package. # Irénée THIRION , 2022-2023. # Vincent Chatelain , 2024, 2025. msgid "" msgstr "" "Project-Id-Version: extension-manager\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-03-06 16:36+0000\n" "PO-Revision-Date: 2025-03-01 18:46+0000\n" "Last-Translator: Vincent Chatelain \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: Weblate 5.10.3-dev\n" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:2 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:6 #: src/exm-window.blp:7 msgid "Extension Manager" msgstr "Gestionnaire d’extensions" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:11 msgid "Manage GNOME Shell Extensions" msgstr "Gérez les extensions du Shell GNOME" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #. Make sure to leave the original strings and add your translations afterwards, so that users can search both in English and your language. #: data/com.mattjakeman.ExtensionManager.desktop.in.in:14 msgid "extension;manager;shell;" msgstr "extension;manager;shell;" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:7 msgid "Browse, install, and manage GNOME Shell Extensions" msgstr "Parcourez, installez et gérez les extensions GNOME Shell" # fdsf #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:13 msgid "A utility for browsing and installing GNOME Shell Extensions." msgstr "Un outil pour parcourir et installer les extensions GNOME Shell." #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:14 msgid "Features:" msgstr "Caractéristiques :" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:16 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:26 msgid "Browse extensions.gnome.org right inside the app" msgstr "Utilisez directement extensions.gnome.org dans l’application" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:17 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:22 msgid "Manage the extensions you already have installed" msgstr "Gérez les extensions que vous avez déjà installées" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:30 msgid "See all the details of your extensions" msgstr "Affichez tous les détails de vos extensions" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:34 msgid "Check your extensions compatibility with the next version of GNOME" msgstr "" "Vérifiez la compatibilité de vos extensions la prochaine version de GNOME" #: src/exm-application.c:201 msgid "Browse, install, and manage GNOME Shell Extensions." msgstr "Parcourez, installez et gérez les extensions GNOME Shell." #. Translators: Use 'Name email@domain.com' or 'Name https://website.example' (without single quotes). Do not delete existing names, write yours on a new line. #: src/exm-application.c:204 msgid "translator-credits" msgstr "" "PaxtonGround\n" "Geoffrey Coulaud \n" "Irénée Thirion \n" "Marceau Hernandez \n" "Vincent Chatelain " #: src/exm-browse-page.blp:16 msgid "Search for Extensions" msgstr "Recherche d’extensions" #: src/exm-browse-page.blp:17 msgid "" "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell Extensions" msgstr "" "Saisissez un mot-clé pour rechercher les extensions de GNOME Shell sur le " "site 'extensions.gnome.org'" #: src/exm-browse-page.blp:47 msgid "Relevance" msgstr "Pertinence" #: src/exm-browse-page.blp:48 msgctxt "Sort search results" msgid "Downloads" msgstr "Téléchargements" #: src/exm-browse-page.blp:49 msgid "Recent" msgstr "Récent" #: src/exm-browse-page.blp:50 src/exm-detail-view.blp:113 msgid "Name" msgstr "Nom" #: src/exm-browse-page.blp:57 msgid "Sort search results" msgstr "Tri des résultats de recherche" #: src/exm-browse-page.blp:103 msgid "_Load More Results" msgstr "_Charger plus de résultats" #: src/exm-browse-page.blp:137 src/exm-installed-page.blp:123 msgid "No Results Found" msgstr "Aucun résultat trouvé" #: src/exm-browse-page.blp:144 msgid "Try a different search" msgstr "Essayer une recherche différente" #: src/exm-browse-page.blp:178 src/exm-comment-dialog.blp:34 #: src/exm-detail-view.blp:49 src/exm-detail-view.blp:291 #: src/exm-upgrade-assistant.blp:100 msgid "Connection Error" msgstr "Erreur de connexion" #: src/exm-comment-dialog.blp:13 src/exm-detail-view.blp:248 msgid "Reviews and Comments" msgstr "Notes et commentaires" #: src/exm-comment-dialog.blp:25 msgid "Loading" msgstr "Chargement" #: src/exm-comment-tile.blp:30 src/exm-detail-view.blp:127 msgid "Author" msgstr "Auteur" #: src/exm-detail-view.blp:40 msgid "Loading Details" msgstr "Chargement des détails" #: src/exm-detail-view.blp:59 src/exm-window.c:347 msgid "An Error Occurred" msgstr "Une erreur s’est produite" #: src/exm-detail-view.blp:60 msgid "No extension details available" msgstr "Aucun détail disponible pour l’extension" #: src/exm-detail-view.blp:154 msgid "Enlarge Image" msgstr "Agrandir l’image" #: src/exm-detail-view.blp:172 src/exm-extension-row.blp:89 msgid "Description" msgstr "Description" #: src/exm-detail-view.blp:195 msgid "Links" msgstr "Liens" #: src/exm-detail-view.blp:203 msgid "Homepage" msgstr "Page d’accueil" #: src/exm-detail-view.blp:219 msgid "Donate" msgstr "Donner" #: src/exm-detail-view.blp:228 msgid "View on Extensions" msgstr "Voir sur Extensions" #: src/exm-detail-view.blp:271 msgid "Reviews and comments are disabled for this extension" msgstr "Les notes et commentaires sont désactivés pour cette extension" #: src/exm-detail-view.blp:314 msgid "There are no reviews or comments" msgstr "Aucune note ou commentaire" #: src/exm-detail-view.blp:343 msgid "_Show All" msgstr "_Tout afficher" #. Translators: '%s' = extension name #: src/exm-detail-view.c:445 #, c-format msgid "%s Icon" msgstr "Icône de %s" #. Translators: '%s' = extension name #: src/exm-detail-view.c:478 #, c-format msgid "%s Screenshot" msgstr "Capture d’écran de %s" #: src/exm-error-dialog.blp:7 msgid "Error Report" msgstr "Signalement d’erreur" #: src/exm-error-dialog.blp:22 msgid "An unexpected error occurred in Extension Manager" msgstr "Une erreur inattendue s’est produite dans Gestionnaire d’Extensions" #: src/exm-error-dialog.blp:36 msgid "Copy to Clipboard" msgstr "Copier vers le presse-papiers" #: src/exm-error-dialog.blp:77 msgid "_New Issue" msgstr "_Nouveau problème" #. Success indicator #: src/exm-error-dialog.c:125 src/exm-upgrade-assistant.c:347 msgid "Copied" msgstr "Copié" #: src/exm-error-dialog.c:173 msgid "Please open a new issue and attach the following information:" msgstr "" "Merci de signaler un nouveau problème et d’y joindre les informations " "suivantes :" #. Translators: '%s' = Name of Distributor (e.g. "Packager123") #: src/exm-error-dialog.c:177 #, c-format msgid "" "You are using a third-party build of Extension Manager. Please contact the package distributor (%s) first before " "filing an issue. Be sure to attach the following information:" msgstr "" "Vous utilisez une version tierce du Gestionnaire d’Extensions. Veuillez " "d’abord contacter le distributeur du paquet (%s) avant " " de signaler tout problème. Veillez à joindre les informations " "suivantes :" #. Translators: Button's tooltip to open extension's preferences dialog #: src/exm-extension-row.blp:28 msgid "Open extension preferences" msgstr "Ouvrir les paramètres de l’extension" #. Translators: Icon's tooltip when an extension has an error #: src/exm-extension-row.blp:46 msgid "An error occurred while loading this extension" msgstr "Une erreur s’est produite durant le chargement de cette extension" #. Translators: Icon's tooltip when an extension is incompatible #: src/exm-extension-row.blp:63 src/exm-install-button.c:117 msgid "This extension is incompatible with your current version of GNOME" msgstr "Cette extension est incompatible avec votre version actuelle de GNOME" #. Translators: Icon's tooltip when an extension update is available #: src/exm-extension-row.blp:80 msgid "A newer version of this extension is available" msgstr "Une nouvelle version de cette extension est disponible" #: src/exm-extension-row.blp:98 src/exm-info-bar.blp:50 msgid "Version" msgstr "Version" #: src/exm-extension-row.blp:107 msgid "Session Modes" msgstr "Modes de session" #: src/exm-extension-row.blp:137 msgid "Error" msgstr "Erreur" #: src/exm-extension-row.blp:158 msgid "See Details" msgstr "Voir les détails" #: src/exm-extension-row.blp:169 msgid "Remove…" msgstr "Supprimer…" #: src/exm-extension-row.c:175 msgid "Unlock Dialog" msgstr "Déverrouiller la fenêtre de dialogue" #. Translators: GNOME Display Manager #: src/exm-extension-row.c:181 msgid "GDM" msgstr "Gestionnaire de fenêtres de GNOME (GDM)" #. Translators: Label when an extension runs on both, login and lock screens #: src/exm-extension-row.c:189 msgid "" "This extension will run while the screen is locked and no user is logged in" msgstr "" "Cette extension fonctionnera lorsque l’écran est verrouillé et qu’aucun " "utilisateur n’est connecté" #. Translators: Label when an extension runs on the lock screen #: src/exm-extension-row.c:194 msgid "This extension will run while the screen is locked" msgstr "Cette extension fonctionnera lorsque l’écran est verrouillé" #. Translators: Label when an extension runs on the login screen #: src/exm-extension-row.c:199 msgid "This extension will run while no user is logged in" msgstr "Cette extension fonctionnera lorsqu’aucun utilisateur n’est connecté" #: src/exm-help-overlay.blp:11 msgctxt "shortcut window" msgid "General" msgstr "Général" #: src/exm-help-overlay.blp:14 msgctxt "shortcut window" msgid "Show Installed Page" msgstr "Afficher la page « Installées »" #: src/exm-help-overlay.blp:19 msgctxt "shortcut window" msgid "Show Browse Page" msgstr "Afficher la page « Parcourir »" #: src/exm-help-overlay.blp:24 msgctxt "shortcut window" msgid "Toggle Search" msgstr "Basculer la recherche" #: src/exm-help-overlay.blp:29 msgctxt "shortcut window" msgid "Show Keyboard Shortcuts" msgstr "Afficher les raccourcis clavier" #: src/exm-help-overlay.blp:34 msgctxt "shortcut window" msgid "Close Window" msgstr "Fermer la fenêtre" #: src/exm-help-overlay.blp:39 msgctxt "shortcut window" msgid "Quit" msgstr "Quitter" #: src/exm-help-overlay.blp:45 msgctxt "shortcut window" msgid "Screenshot View" msgstr "Vue de capture d’écran" #: src/exm-help-overlay.blp:48 src/exm-help-overlay.blp:63 msgctxt "shortcut window" msgid "Zoom In" msgstr "Zoomer" #: src/exm-help-overlay.blp:53 src/exm-help-overlay.blp:68 msgctxt "shortcut window" msgid "Zoom Out" msgstr "Dézoomer" #: src/exm-help-overlay.blp:58 msgctxt "shortcut window" msgid "Reset Zoom" msgstr "Réinitialiser le zoom" #: src/exm-info-bar.blp:28 msgctxt "Number of downloads" msgid "Downloads" msgstr "Téléchargements" #: src/exm-info-bar.c:107 msgid "Unsupported" msgstr "Non prise en charge" #: src/exm-install-button.c:127 msgid "Install…" msgstr "Installer…" #: src/exm-install-button.c:132 msgid "Installing" msgstr "Installation" #: src/exm-install-button.c:136 msgctxt "State" msgid "Installed" msgstr "Installée" #: src/exm-install-button.c:140 msgid "Unsupported…" msgstr "Non prise en charge…" #: src/exm-installed-page.blp:16 msgid "_Log Out…" msgstr "Se _déconnecter…" #: src/exm-installed-page.blp:28 msgid "Use Extensions" msgstr "Activer les extensions" #: src/exm-installed-page.blp:29 msgid "Extensions can cause performance and stability issues" msgstr "" "Les extensions peuvent causer des problèmes de performance et de stabilité" #: src/exm-installed-page.blp:34 src/exm-upgrade-assistant.blp:133 msgid "User-Installed Extensions" msgstr "Installées par l’utilisateur" #: src/exm-installed-page.blp:51 src/exm-upgrade-assistant.blp:150 msgid "No User Extensions Installed" msgstr "Aucune extension manuellement installée" #: src/exm-installed-page.blp:55 msgid "Browse" msgstr "Parcourir" #: src/exm-installed-page.blp:69 src/exm-upgrade-assistant.blp:160 msgid "System Extensions" msgstr "Extensions intégrées" #: src/exm-installed-page.blp:86 src/exm-upgrade-assistant.blp:177 msgid "No System Extensions Installed" msgstr "Aucune extension intégrée installée" #. Translators: Text announced by screen readers when interacting with the list of search results #: src/exm-installed-page.blp:111 msgid "Search Results" msgstr "Résultats de recherche" #: src/exm-installed-page.blp:124 msgid "Try a different search or search online" msgstr "Essayez une recherche différente ou cherchez en ligne" #: src/exm-installed-page.blp:131 msgid "_Search Online" msgstr "_Chercher en ligne" #. Translators: '%d' = number of extensions that will be updated #: src/exm-installed-page.c:298 #, c-format msgid "%d extension will be updated on next login" msgid_plural "%d extensions will be updated on next login" msgstr[0] "%d extension sera mise à jour à la prochaine connexion" msgstr[1] "%d extensions seront mises à jour à la prochaine connexion" #: src/exm-rating.c:142 #, c-format msgid "%i Star" msgid_plural "%i Stars" msgstr[0] "%i étoile" msgstr[1] "%i étoiles" #. Translators: Button's tooltip to zoom out screenshots #: src/exm-screenshot-view.blp:37 msgid "Zoom Out" msgstr "Dézoomer" #. Translators: Button's tooltip to zoom in screenshots #: src/exm-screenshot-view.blp:51 msgid "Zoom In" msgstr "Zoomer" #: src/exm-upgrade-assistant.blp:11 msgid "Upgrade Assistant" msgstr "Assistant de mise à jour" #: src/exm-upgrade-assistant.blp:66 msgid "_Check Compatibility" msgstr "_Vérifier la compatibilité" #: src/exm-upgrade-assistant.blp:189 msgid "_Copy to Clipboard" msgstr "_Copier vers le presse-papiers" #: src/exm-upgrade-assistant.c:188 #, c-format msgid "Checked %d/%d Extensions" msgstr "%d/%d extensions vérifiées" #. Set percentage text #: src/exm-upgrade-assistant.c:207 #, c-format msgid "%d%% Compatible" msgstr "%d%% compatible(s)" #: src/exm-upgrade-assistant.c:223 #, c-format msgid "" "GNOME %s supports %d out of %d of the extensions currently " "installed on the system" msgstr "" "GNOME %s prend en charge %d des %d extensions actuellement " "installées sur le système" #. Translators: Icon's tooltip when an extension is compatible #: src/exm-upgrade-assistant.c:503 msgid "A compatible version of the extension exists" msgstr "Une version compatible de cette extension existe" #. Translators: Icon's tooltip when an extension is not compatible #: src/exm-upgrade-assistant.c:510 msgid "No compatible version of the extension exists" msgstr "Aucune version compatible de cette extension n’existe" #. Translators: Icon's tooltip when an extension compatibility is unknown #: src/exm-upgrade-assistant.c:517 msgid "" "This extension is not hosted on extensions.gnome.org. Its compatibility " "cannot be determined." msgstr "" "Cette extension n’est pas hébergée sur extensions.gnome.org. De ce fait, sa " "compatibilité ne peut pas être déterminée." #: src/exm-upgrade-assistant.c:608 #, c-format msgid "" "You are currently running GNOME %s. Select a version of GNOME below " "and check whether your extensions will continue to be available." msgstr "" "Vous utilisez actuellement GNOME %s. Sélectionnez une version de " "GNOME ci-dessous et vérifiez si vos extensions seront toujours disponibles." #. Translators: Tooltip of the search icon in the header bar #: src/exm-window.blp:39 msgid "Search Installed Extensions" msgstr "Rechercher des extensions installées" #: src/exm-window.blp:48 msgid "Main Menu" msgstr "Menu principal" #: src/exm-window.blp:59 msgid "Search for installed extensions" msgstr "Recherche d’extensions installées" #: src/exm-window.blp:71 msgctxt "Navigation" msgid "_Installed" msgstr "_Installées" #: src/exm-window.blp:80 msgctxt "Navigation" msgid "_Browse" msgstr "_Parcourir" #. Translators: the character preceded by "_" should not be the same #. as others in the same menu #: src/exm-window.blp:108 msgid "Sort _Enabled First" msgstr "Extensions activées en premier" #: src/exm-window.blp:109 msgid "_Show Unsupported" msgstr "Afficher les extensions non prises en charge" #: src/exm-window.blp:113 msgid "_Upgrade Assistant" msgstr "_Assistant de mise à jour" #: src/exm-window.blp:114 msgid "_Keyboard Shortcuts" msgstr "_Raccourcis clavier" #: src/exm-window.blp:115 msgid "_About Extension Manager" msgstr "À _propos du Gestionnaire d’extensions" #: src/exm-window.blp:120 msgid "Uninstall Extension?" msgstr "Désinstaller l’extension ?" #: src/exm-window.blp:121 msgid "" "The extension's features and functionality will no longer be accessible. Are " "you sure you want to uninstall?" msgstr "" "Les fonctionnalités de cette extension ne seront plus accessibles. Êtes-vous " "sûr de vouloir la désinstaller ?" #: src/exm-window.blp:126 msgid "_No" msgstr "_Non" #: src/exm-window.blp:127 msgid "_Yes" msgstr "_Oui" #: src/exm-window.blp:132 msgid "Unsupported Extension" msgstr "Extension non prise en charge" #: src/exm-window.blp:133 msgid "" "This extension does not support your GNOME Shell version. It may cause " "errors if installed." msgstr "" "Cette extension ne prend pas en charge votre version de GNOME Shell. Son " "installation pourrait produire des erreurs." #: src/exm-window.blp:139 msgid "_Install Anyway" msgstr "_Installer quand même" #: src/exm-window.blp:140 msgid "_Go Back" msgstr "_Annuler" #: src/exm-window.c:348 msgid "_Details" msgstr "_Détails" #: src/web/exm-request-handler.c:99 msgid "" "Check GNOME infrastructure status " "and try again later" msgstr "" "Vérifier le statut de l’infrastructure " "GNOME et réessayer plus tard" #: src/web/exm-request-handler.c:100 msgid "Check your network status and try again" msgstr "Vérifiez l’état de votre réseau et réessayez" #~ msgid "Comments" #~ msgstr "Commentaires" #~ msgid "Loading Comments" #~ msgstr "Chargement des commentaires" #~ msgid "User Reviews" #~ msgstr "Avis des utilisateurs" #~ msgid "No comments yet" #~ msgstr "Aucun commentaire pour l’instant" #~ msgid "" #~ "This extension could be activated in session modes such as the login " #~ "screen or the lock screen" #~ msgstr "" #~ "Cette extension pourrait être activée dans des modes de session comme " #~ "l’écran de connexion ou l’écran de verrouillage" #, c-format #~ msgid "%s by %s" #~ msgstr "%s par %s" #, fuzzy #~| msgid "Updates are available" #~ msgid "Updates Available" #~ msgstr "Des mises à jour sont disponibles" #~ msgid "Supported" #~ msgstr "Pris en charge" #~ msgid "Unknown" #~ msgstr "Inconnu" #~ msgid "A utility for managing GNOME Shell Extensions" #~ msgstr "Un outil pour gérer les extensions GNOME Shell" #, c-format #~ msgid "e.g. “%s”" #~ msgstr "par ex. « %s »" #~ msgid "This extension is incompatible with your current version of GNOME." #~ msgstr "" #~ "Cette extension est incompatible avec votre version actuelle de GNOME." #~ msgid "An error occurred." #~ msgstr "Une erreur s’est produite." #~ msgid "Return to view" #~ msgstr "Retourner à l’aperçu" #~ msgid "@app_title@" #~ msgstr "@app_title@" #~ msgid "HOTFIX: Fix broken 'recent' and 'popularity' search filters" #~ msgstr "" #~ "CORRECTIF : les filtres 'récent' et 'popularité' fonctionnent à nouveau" #~ msgid "Various stability and correctness fixes" #~ msgstr "Diverses améliorations de stabilité et de fiabilité" #~ msgid "Translation updates" #~ msgstr "Mise à jour des traductions" #~ msgid "Upgrade Assistant scroll fix" #~ msgstr "Correction du défilement de l’assistant de mise à jour" #~ msgid "Pixel perfect app icon" #~ msgstr "Icône d’application peaufinée au pixel près" #~ msgid "Official snap support" #~ msgstr "Prise en charge officielle du format snap" #~ msgid "Improved error log generation" #~ msgstr "Génération de journaux de débogage améliorée" #~ msgid "Fully adaptive mobile-friendly user interface" #~ msgstr "Interface utilisateur entièrement adaptable au format mobile" #~ msgid "Paginated search results" #~ msgstr "Résultats de recherche paginés" #~ msgid "Upgrade Assistant for checking extension compatibility" #~ msgstr "" #~ "Assistant de mise à jour pour vérifier la compatibilité des extensions" #~ msgid "Unsupported extensions are hidden by default" #~ msgstr "Les extensions non prises en charge sont masquées par défaut" #~ msgid "Overhauled error and crash reporting" #~ msgstr "Signalement de plantages et d’erreurs retravaillé" #~ msgid "Full-screen image viewer" #~ msgstr "Visionneur d’images en plein écran" #~ msgid "Handles new gnome-extensions:// URI scheme" #~ msgstr "Gestion du nouveau schéma URI gnome-extensions://" #~ msgid "Randomised extension suggestions" #~ msgstr "Suggestions d’extensions randomisées" #~ msgid "Performance and stability" #~ msgstr "Performance et stabilité" #~ msgid "Various bug fixes" #~ msgstr "Diverses corrections de bogues" #~ msgid "Remove release notes dialog" #~ msgstr "Suppression de la fenêtre de dialogue des notes de version" #~ msgid "Fix special characters in installed extension listings" #~ msgstr "" #~ "Correction des caractères spéciaux dans la liste des extensions installées" #~ msgid "The second feature update to extension-manager. Highlights include:" #~ msgstr "" #~ "Seconde mise à jour des fonctionnalités de Gestionnaire d’extensions. " #~ "Points forts :" #~ msgid "View comments and reviews" #~ msgstr "Afficher les commentaires et avis" #~ msgid "Support for in-app updates" #~ msgstr "Prise en charge des mises à jour dans l’application" #~ msgid "Better handling errors and out-of-date extensions" #~ msgstr "Meilleure gestion des erreurs et des extensions obsolètes" #~ msgid "Allow installing 'unsupported' extensions" #~ msgstr "Permettre d’installer des extensions 'non supportées'" #~ msgid "Display release notes on first run" #~ msgstr "Affichage des notes de version au premier lancement" #~ msgid "New app icon" #~ msgstr "Nouvelle icône d’application" #~ msgid "Optionally sort extensions by enabled status" #~ msgstr "Trier optionnellement les extensions par leur état d’activation" #~ msgid "Fix special characters in search results" #~ msgstr "Correction des caractères spéciaux dans les résultats de recherche" #~ msgid "Fixes a crash that sometimes occurs while uninstalling an extension" #~ msgstr "" #~ "Correction d’un plantage se produisant parfois lors de la désinstallation " #~ "d’une extension" #~ msgid "The first feature update to extension-manager. Highlights include:" #~ msgstr "" #~ "Première mise à jour des fonctionnalités de Gestionnaire d’extensions. " #~ "Points forts :" #~ msgid "Dark theme and support for overriding the system colour scheme" #~ msgstr "Thème sombre et prise en charge du Mode Automatique" #~ msgid "Shows screenshots in extension listings" #~ msgstr "Affichage de captures d’écran dans les fiches d’extensions" #~ msgid "Shell version compatibility check" #~ msgstr "Vérification de la compatibilité avec votre versions du shell" #~ msgid "Localised into seven languages" #~ msgstr "Traduction en sept langues" #~ msgid "Global extension on/off toggle" #~ msgstr "Activation / désactivation de Gestionnaire d’extensions" #~ msgid "Displays user and system extensions separately" #~ msgstr "Séparation des extensions installées manuellement et intégrées" #~ msgid "Popularity" #~ msgstr "Popularité" #~ msgid "Extension Manager (Development)" #~ msgstr "Gestionnaire d’extensions (Développement)" #~ msgid "Supported Versions" #~ msgstr "Versions supportées" #~ msgctxt "Navigation" #~ msgid "Browse" #~ msgstr "Parcourir" #~ msgid "Are you sure you want to uninstall?" #~ msgstr "Êtes-vous sûr de vouloir désinstaller ?" #~ msgid "Theme" #~ msgstr "Thème" #~ msgid "Follow System" #~ msgstr "Automatique" #~ msgid "Light" #~ msgstr "Clair" #~ msgid "Dark" #~ msgstr "Foncé" #~ msgid "" #~ "A very simple tool for browsing, downloading, and managing GNOME shell " #~ "extensions." #~ msgstr "" #~ "Un outil pour parcourir, installer et gérer simplement les extensions " #~ "GNOME Shell." #~ msgid "e.g. \"Blur my Shell\"" #~ msgstr "Par exemple, « Blur my Shell »" #~ msgid "What's New" #~ msgstr "Quoi de neuf" #~ msgid "View Release Notes" #~ msgstr "Voir les notes de version" #, c-format #~ msgid "" #~ "This is your first time using Extension Manager %s.\n" #~ "Would you like to see the release notes?" #~ msgstr "" #~ "C’est votre première utilisation deGestionnaire d’extensions %s.\n" #~ "Voulez-vous voir les notes de version ?" #~ msgid "Matthew Jakeman" #~ msgstr "Matthew Jakeman" #~ msgid "Colour Scheme Preference" #~ msgstr "Préférence de couleurs" #~ msgid "" #~ "Whether to follow the system colour scheme or force either light or dark " #~ "mode." #~ msgstr "Mode automatique ou forcer le Thème clair/foncé." extension-manager-0.6.3/po/ga.po000066400000000000000000000453651477302130300165260ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the extension-manager package. # Aindriú Mac Giolla Eoin , 2024, 2025. msgid "" msgstr "" "Project-Id-Version: extension-manager\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-03-06 16:36+0000\n" "PO-Revision-Date: 2025-02-27 20:23+0000\n" "Last-Translator: Aindriú Mac Giolla Eoin \n" "Language-Team: Irish \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=5; plural=n==1 ? 0 : n==2 ? 1 : (n>2 && n<7) ? 2 :" "(n>6 && n<11) ? 3 : 4;\n" "X-Generator: Weblate 5.10.2-rc\n" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:2 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:6 #: src/exm-window.blp:7 msgid "Extension Manager" msgstr "Extension Manager" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:11 msgid "Manage GNOME Shell Extensions" msgstr "Bainistigh GNOME Shell Extensions" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #. Make sure to leave the original strings and add your translations afterwards, so that users can search both in English and your language. #: data/com.mattjakeman.ExtensionManager.desktop.in.in:14 msgid "extension;manager;shell;" msgstr "síneadh; bainisteoir; bhlaosc;" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:7 msgid "Browse, install, and manage GNOME Shell Extensions" msgstr "" "Brabhsáil, suiteáil, agus bainistiú a dhéanamh ar shíneadh sliogáin gnome" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:13 msgid "A utility for browsing and installing GNOME Shell Extensions." msgstr "Fóntais chun síntí bhlaosc gnome a bhrabhsáil agus a shuiteáil." #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:14 msgid "Features:" msgstr "Gnéithe:" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:16 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:26 msgid "Browse extensions.gnome.org right inside the app" msgstr "Brabhsáil Extensions.gnome.org ar dheis taobh istigh den aip" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:17 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:22 msgid "Manage the extensions you already have installed" msgstr "Bainistigh na síntí atá suiteáilte agat cheana féin" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:30 msgid "See all the details of your extensions" msgstr "Féach sonraí uile do shíntí" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:34 msgid "Check your extensions compatibility with the next version of GNOME" msgstr "Seiceáil do chomhoiriúnacht síntí leis an gcéad leagan eile de GNOME" #: src/exm-application.c:201 msgid "Browse, install, and manage GNOME Shell Extensions." msgstr "" "Brabhsáil, suiteáil, agus bainistiú a dhéanamh ar shíneadh sliogáin GNOME." #. Translators: Use 'Name email@domain.com' or 'Name https://website.example' (without single quotes). Do not delete existing names, write yours on a new line. #: src/exm-application.c:204 msgid "translator-credits" msgstr "Aistritheoir-creidmheasanna" #: src/exm-browse-page.blp:16 msgid "Search for Extensions" msgstr "Cuardaigh síntí" #: src/exm-browse-page.blp:17 msgid "" "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell Extensions" msgstr "" "Iontráil eochairfhocal chun 'Extensions.gnome.org' a chuardach le haghaidh " "síntí bhlaosc gnome" #: src/exm-browse-page.blp:47 msgid "Relevance" msgstr "Tábhacht" #: src/exm-browse-page.blp:48 msgctxt "Sort search results" msgid "Downloads" msgstr "Íoslódáil" #: src/exm-browse-page.blp:49 msgid "Recent" msgstr "Le déanaí" #: src/exm-browse-page.blp:50 src/exm-detail-view.blp:113 msgid "Name" msgstr "Ainmnigh" #: src/exm-browse-page.blp:57 msgid "Sort search results" msgstr "Torthaí cuardaigh a shórtáil" #: src/exm-browse-page.blp:103 msgid "_Load More Results" msgstr "_ Déan níos mó torthaí" #: src/exm-browse-page.blp:137 src/exm-installed-page.blp:123 msgid "No Results Found" msgstr "Níor aimsíodh aon torthaí" #: src/exm-browse-page.blp:144 msgid "Try a different search" msgstr "Bain triail as cuardach eile" #: src/exm-browse-page.blp:178 src/exm-comment-dialog.blp:34 #: src/exm-detail-view.blp:49 src/exm-detail-view.blp:291 #: src/exm-upgrade-assistant.blp:100 msgid "Connection Error" msgstr "Earráid Ceangail" #: src/exm-comment-dialog.blp:13 src/exm-detail-view.blp:248 msgid "Reviews and Comments" msgstr "Léirmheasanna agus Tuairimí" #: src/exm-comment-dialog.blp:25 msgid "Loading" msgstr "Ag lódáil" #: src/exm-comment-tile.blp:30 src/exm-detail-view.blp:127 msgid "Author" msgstr "Údar" #: src/exm-detail-view.blp:40 msgid "Loading Details" msgstr "Sonraí luchtaithe" #: src/exm-detail-view.blp:59 src/exm-window.c:347 msgid "An Error Occurred" msgstr "Tharla earráid" #: src/exm-detail-view.blp:60 msgid "No extension details available" msgstr "Níl aon sonraí sínte ar fáil" #: src/exm-detail-view.blp:154 msgid "Enlarge Image" msgstr "Íomhá a mhéadú" #: src/exm-detail-view.blp:172 src/exm-extension-row.blp:89 msgid "Description" msgstr "Cur síos" #: src/exm-detail-view.blp:195 msgid "Links" msgstr "Naisc" #: src/exm-detail-view.blp:203 msgid "Homepage" msgstr "Leathanach baile" #: src/exm-detail-view.blp:219 msgid "Donate" msgstr "Síntigh" #: src/exm-detail-view.blp:228 msgid "View on Extensions" msgstr "Féach ar shíntí" #: src/exm-detail-view.blp:271 msgid "Reviews and comments are disabled for this extension" msgstr "Tá léirmheasanna agus nótaí tráchta díchumasaithe don bhreiseán seo" #: src/exm-detail-view.blp:314 msgid "There are no reviews or comments" msgstr "Níl aon léirmheasanna nó tuairimí" #: src/exm-detail-view.blp:343 msgid "_Show All" msgstr "_Taispeáin Uile" #. Translators: '%s' = extension name #: src/exm-detail-view.c:445 #, c-format msgid "%s Icon" msgstr "%s deilbhín" #. Translators: '%s' = extension name #: src/exm-detail-view.c:478 #, c-format msgid "%s Screenshot" msgstr "%s Scáileán" #: src/exm-error-dialog.blp:7 msgid "Error Report" msgstr "Tuarascáil Earráide" #: src/exm-error-dialog.blp:22 msgid "An unexpected error occurred in Extension Manager" msgstr "Tharla earráid gan choinne i mBainisteoir Síneadh" #: src/exm-error-dialog.blp:36 msgid "Copy to Clipboard" msgstr "Cóipeáil chuig an nGearrthaisce" #: src/exm-error-dialog.blp:77 msgid "_New Issue" msgstr "_Saincheist Nua" #. Success indicator #: src/exm-error-dialog.c:125 src/exm-upgrade-assistant.c:347 msgid "Copied" msgstr "Cóipeáil" #: src/exm-error-dialog.c:173 msgid "Please open a new issue and attach the following information:" msgstr "" "Oscail saincheist nua le do thoil agus ceangail an fhaisnéis seo a leanas:" #. Translators: '%s' = Name of Distributor (e.g. "Packager123") #: src/exm-error-dialog.c:177 #, c-format msgid "" "You are using a third-party build of Extension Manager. Please contact the package distributor (%s) first before " "filing an issue. Be sure to attach the following information:" msgstr "" "Tá tú ag baint úsáide as Bainisteoir Tógála Tríú Páirtí Síneadh. Le do thoil " " Déan teagmháil leis an dáileoir pacáiste (%s) first sula ndéanann tú saincheist a chomhdú. Bí cinnte an fhaisnéis seo a " "leanas a cheangal:" #. Translators: Button's tooltip to open extension's preferences dialog #: src/exm-extension-row.blp:28 msgid "Open extension preferences" msgstr "Roghanna síneadh oscailte" #. Translators: Icon's tooltip when an extension has an error #: src/exm-extension-row.blp:46 msgid "An error occurred while loading this extension" msgstr "Tharla earráid agus an síneadh seo á luchtú" #. Translators: Icon's tooltip when an extension is incompatible #: src/exm-extension-row.blp:63 src/exm-install-button.c:117 msgid "This extension is incompatible with your current version of GNOME" msgstr "Tá an síneadh seo neamh -chomhoiriúnach le do leagan reatha de gnome" #. Translators: Icon's tooltip when an extension update is available #: src/exm-extension-row.blp:80 msgid "A newer version of this extension is available" msgstr "Tá leagan níos nuaí den síneadh seo ar fáil" #: src/exm-extension-row.blp:98 src/exm-info-bar.blp:50 msgid "Version" msgstr "Leagan" #: src/exm-extension-row.blp:107 msgid "Session Modes" msgstr "Modhanna Seisiúin" #: src/exm-extension-row.blp:137 msgid "Error" msgstr "Earráid" #: src/exm-extension-row.blp:158 msgid "See Details" msgstr "Féach na sonraí" #: src/exm-extension-row.blp:169 msgid "Remove…" msgstr "Bain…" #: src/exm-extension-row.c:175 msgid "Unlock Dialog" msgstr "Díghlasáil Dialóg" #. Translators: GNOME Display Manager #: src/exm-extension-row.c:181 msgid "GDM" msgstr "GDM" #. Translators: Label when an extension runs on both, login and lock screens #: src/exm-extension-row.c:189 msgid "" "This extension will run while the screen is locked and no user is logged in" msgstr "" "Rithfidh an síneadh seo agus an scáileán glasáilte agus níl aon úsáideoir " "logáilte isteach" #. Translators: Label when an extension runs on the lock screen #: src/exm-extension-row.c:194 msgid "This extension will run while the screen is locked" msgstr "Rithfidh an síneadh seo agus an scáileán glasáilte" #. Translators: Label when an extension runs on the login screen #: src/exm-extension-row.c:199 msgid "This extension will run while no user is logged in" msgstr "Rithfidh an síneadh seo fad nach bhfuil aon úsáideoir logáilte isteach" #: src/exm-help-overlay.blp:11 msgctxt "shortcut window" msgid "General" msgstr "Ginearál" #: src/exm-help-overlay.blp:14 msgctxt "shortcut window" msgid "Show Installed Page" msgstr "Taispeáin leathanach suiteáilte" #: src/exm-help-overlay.blp:19 msgctxt "shortcut window" msgid "Show Browse Page" msgstr "Taispeáin Leathanach Brabhsála" #: src/exm-help-overlay.blp:24 msgctxt "shortcut window" msgid "Toggle Search" msgstr "Scoránaigh Cuardach" #: src/exm-help-overlay.blp:29 msgctxt "shortcut window" msgid "Show Keyboard Shortcuts" msgstr "Taispeáin Aicearraí Méarchláir" #: src/exm-help-overlay.blp:34 msgctxt "shortcut window" msgid "Close Window" msgstr "Dún Fuinneog" #: src/exm-help-overlay.blp:39 msgctxt "shortcut window" msgid "Quit" msgstr "Éirí as" #: src/exm-help-overlay.blp:45 msgctxt "shortcut window" msgid "Screenshot View" msgstr "Radharc Scáileáin Amharc" #: src/exm-help-overlay.blp:48 src/exm-help-overlay.blp:63 msgctxt "shortcut window" msgid "Zoom In" msgstr "Súmáil Isteach" #: src/exm-help-overlay.blp:53 src/exm-help-overlay.blp:68 msgctxt "shortcut window" msgid "Zoom Out" msgstr "Súmáil Amach" #: src/exm-help-overlay.blp:58 msgctxt "shortcut window" msgid "Reset Zoom" msgstr "Athshocraigh Súmáil" #: src/exm-info-bar.blp:28 msgctxt "Number of downloads" msgid "Downloads" msgstr "Íoslódáil" #: src/exm-info-bar.c:107 msgid "Unsupported" msgstr "Gan tacaíocht" #: src/exm-install-button.c:127 msgid "Install…" msgstr "Suiteáil…" #: src/exm-install-button.c:132 msgid "Installing" msgstr "Suiteáil" #: src/exm-install-button.c:136 msgctxt "State" msgid "Installed" msgstr "Sucusidh" #: src/exm-install-button.c:140 msgid "Unsupported…" msgstr "Gan tacaíocht…" #: src/exm-installed-page.blp:16 msgid "_Log Out…" msgstr "_Logáil amach…" #: src/exm-installed-page.blp:28 msgid "Use Extensions" msgstr "Úsáid Síntí" #: src/exm-installed-page.blp:29 msgid "Extensions can cause performance and stability issues" msgstr "" "Is féidir le síntí a bheith ina gcúis le saincheisteanna feidhmíochta agus " "cobhsaíochta" #: src/exm-installed-page.blp:34 src/exm-upgrade-assistant.blp:133 msgid "User-Installed Extensions" msgstr "Síntí Suiteáilte ag an Úsáideoir" #: src/exm-installed-page.blp:51 src/exm-upgrade-assistant.blp:150 msgid "No User Extensions Installed" msgstr "Níor suiteáladh aon síntí úsáideora" #: src/exm-installed-page.blp:55 msgid "Browse" msgstr "Brabhsáil" #: src/exm-installed-page.blp:69 src/exm-upgrade-assistant.blp:160 msgid "System Extensions" msgstr "Síntí Córais" #: src/exm-installed-page.blp:86 src/exm-upgrade-assistant.blp:177 msgid "No System Extensions Installed" msgstr "Níor suiteáladh aon síntí córais" #. Translators: Text announced by screen readers when interacting with the list of search results #: src/exm-installed-page.blp:111 msgid "Search Results" msgstr "Torthaí Cuardaigh" #: src/exm-installed-page.blp:124 msgid "Try a different search or search online" msgstr "Bain triail as cuardach eile nó cuardach ar líne" #: src/exm-installed-page.blp:131 msgid "_Search Online" msgstr "_Cuardaigh Ar Líne" #. Translators: '%d' = number of extensions that will be updated #: src/exm-installed-page.c:298 #, c-format msgid "%d extension will be updated on next login" msgid_plural "%d extensions will be updated on next login" msgstr[0] "%d déanfar síneadh a nuashonrú ar an gcéad logáil isteach eile" msgstr[1] "%d déanfar síntí a nuashonrú ar an gcéad logáil isteach eile" msgstr[2] "%d déanfar síntí a nuashonrú ar an gcéad logáil isteach eile" msgstr[3] "%d déanfar síntí a nuashonrú ar an gcéad logáil isteach eile" msgstr[4] "%d déanfar síntí a nuashonrú ar an gcéad logáil isteach eile" #: src/exm-rating.c:142 #, c-format msgid "%i Star" msgid_plural "%i Stars" msgstr[0] "%i Réalta" msgstr[1] "%i Réaltaí" msgstr[2] "%i Réaltaí" msgstr[3] "%i Réaltaí" msgstr[4] "%i Réaltaí" #. Translators: Button's tooltip to zoom out screenshots #: src/exm-screenshot-view.blp:37 msgid "Zoom Out" msgstr "Súmáil Amach" #. Translators: Button's tooltip to zoom in screenshots #: src/exm-screenshot-view.blp:51 msgid "Zoom In" msgstr "Súmáil Isteach" #: src/exm-upgrade-assistant.blp:11 msgid "Upgrade Assistant" msgstr "Cúntóir Uasghrádaithe" #: src/exm-upgrade-assistant.blp:66 msgid "_Check Compatibility" msgstr "_Seiceáil Comhoiriúnacht" #: src/exm-upgrade-assistant.blp:189 msgid "_Copy to Clipboard" msgstr "_Cóip chuig Gearrthaisce" #: src/exm-upgrade-assistant.c:188 #, c-format msgid "Checked %d/%d Extensions" msgstr "Seiceáil %d/%d Síntí" #. Set percentage text #: src/exm-upgrade-assistant.c:207 #, c-format msgid "%d%% Compatible" msgstr "%d%% Comhoiriúnach" #: src/exm-upgrade-assistant.c:223 #, c-format msgid "" "GNOME %s supports %d out of %d of the extensions currently " "installed on the system" msgstr "" " GNOME %s Tacaíonn sé le %d as %d de na síntí atá " "suiteáilte faoi láthair ar an gcóras" #. Translators: Icon's tooltip when an extension is compatible #: src/exm-upgrade-assistant.c:503 msgid "A compatible version of the extension exists" msgstr "Tá leagan comhoiriúnach den síneadh ann" #. Translators: Icon's tooltip when an extension is not compatible #: src/exm-upgrade-assistant.c:510 msgid "No compatible version of the extension exists" msgstr "Níl aon leagan comhoiriúnach den síneadh ann" #. Translators: Icon's tooltip when an extension compatibility is unknown #: src/exm-upgrade-assistant.c:517 msgid "" "This extension is not hosted on extensions.gnome.org. Its compatibility " "cannot be determined." msgstr "" "Ní dhéantar an síneadh seo a óstáil ar extensions.gnome.org. Ní féidir a " "chomhoiriúnacht a chinneadh." #: src/exm-upgrade-assistant.c:608 #, c-format msgid "" "You are currently running GNOME %s. Select a version of GNOME below " "and check whether your extensions will continue to be available." msgstr "" "Faoi láthair tá tú ag rith GNOME %s . Roghnaigh leagan de GNOME thíos " "agus seiceáil an leanfaidh do shíneadh ar fáil." #. Translators: Tooltip of the search icon in the header bar #: src/exm-window.blp:39 msgid "Search Installed Extensions" msgstr "Cuardaigh Eisínteachtaí Suiteáilte" #: src/exm-window.blp:48 msgid "Main Menu" msgstr "Príomh Roghchlár" #: src/exm-window.blp:59 msgid "Search for installed extensions" msgstr "Cuardaigh le haghaidh síntí suiteáilte" #: src/exm-window.blp:71 msgctxt "Navigation" msgid "_Installed" msgstr "_Sucusidh" #: src/exm-window.blp:80 msgctxt "Navigation" msgid "_Browse" msgstr "_Brabhsáil" #. Translators: the character preceded by "_" should not be the same #. as others in the same menu #: src/exm-window.blp:108 msgid "Sort _Enabled First" msgstr "Sórtáil _Cumasaithe ar Dtús" #: src/exm-window.blp:109 msgid "_Show Unsupported" msgstr "_Taispeáin gan Tacaíocht" #: src/exm-window.blp:113 msgid "_Upgrade Assistant" msgstr "_Cúntóir Uasghrádaithe" #: src/exm-window.blp:114 msgid "_Keyboard Shortcuts" msgstr "_Aicearraí Méarchláir" #: src/exm-window.blp:115 msgid "_About Extension Manager" msgstr "_Maidir le Bainisteoir Sínte" #: src/exm-window.blp:120 msgid "Uninstall Extension?" msgstr "Síneadh Díshuiteáil?" #: src/exm-window.blp:121 msgid "" "The extension's features and functionality will no longer be accessible. Are " "you sure you want to uninstall?" msgstr "" "Ní bheidh rochtain a thuilleadh ar ghnéithe agus ar fheidhmiúlacht an " "tsíneadh. An bhfuil tú cinnte gur mhaith leat a dhíshuiteáil?" #: src/exm-window.blp:126 msgid "_No" msgstr "_Níl" #: src/exm-window.blp:127 msgid "_Yes" msgstr "_Tá" #: src/exm-window.blp:132 msgid "Unsupported Extension" msgstr "Síneadh gan Tacaíocht" #: src/exm-window.blp:133 msgid "" "This extension does not support your GNOME Shell version. It may cause " "errors if installed." msgstr "" "Ní thacaíonn an síneadh seo le do leagan GNOME Shell. D'fhéadfadh sé a " "bheith ina chúis le hearráidí má tá sé suiteáilte." #: src/exm-window.blp:139 msgid "_Install Anyway" msgstr "_Suiteáil ar Aon Nós" #: src/exm-window.blp:140 msgid "_Go Back" msgstr "_Téigh ar Ais" #: src/exm-window.c:348 msgid "_Details" msgstr "_Sonraí" #: src/web/exm-request-handler.c:99 msgid "" "Check GNOME infrastructure status " "and try again later" msgstr "" "Seiceáil stádas bonneagair GNOME " "agus bain triail eile as ar ball" #: src/web/exm-request-handler.c:100 msgid "Check your network status and try again" msgstr "Seiceáil stádas do líonra agus bain triail eile as" #~ msgid "Comments" #~ msgstr "Tráchtanna" #~ msgid "User Reviews" #~ msgstr "Athbhreithnithe Úsáideoirí" #~ msgid "No comments yet" #~ msgstr "Gan aon trácht fós" #~ msgid "" #~ "This extension could be activated in session modes such as the login " #~ "screen or the lock screen" #~ msgstr "" #~ "D'fhéadfaí an síneadh seo a ghníomhachtú i modhanna seisiúin mar an " #~ "scáileán logála isteach nó an scáileán glas" #, c-format #~ msgid "%s by %s" #~ msgstr "%s ag %s" extension-manager-0.6.3/po/hi.po000066400000000000000000000571731477302130300165370ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the extension-manager package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: extension-manager\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-03-06 16:36+0000\n" "PO-Revision-Date: 2024-08-16 15:09+0000\n" "Last-Translator: Scrambled777 \n" "Language-Team: Hindi \n" "Language: hi\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: Weblate 5.7\n" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:2 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:6 #: src/exm-window.blp:7 msgid "Extension Manager" msgstr "एक्सटेंशन मैनेजर" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:11 msgid "Manage GNOME Shell Extensions" msgstr "गनोम शैल एक्सटेंशन प्रबंधित करें" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #. Make sure to leave the original strings and add your translations afterwards, so that users can search both in English and your language. #: data/com.mattjakeman.ExtensionManager.desktop.in.in:14 msgid "extension;manager;shell;" msgstr "विस्तार;प्रबंधक;शैल;" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:7 msgid "Browse, install, and manage GNOME Shell Extensions" msgstr "गनोम शैल एक्सटेंशन ब्राउज़ करें, स्थापित करें और प्रबंधित करें" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:13 msgid "A utility for browsing and installing GNOME Shell Extensions." msgstr "गनोम शैल एक्सटेंशन ब्राउज़ करने और स्थापित करने के लिए एक उपयोगिता।" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:14 msgid "Features:" msgstr "विशेषताएं:" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:16 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:26 msgid "Browse extensions.gnome.org right inside the app" msgstr "ऐप के ठीक अंदर extensions.gnome.org ब्राउज़ करें" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:17 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:22 msgid "Manage the extensions you already have installed" msgstr "आपके द्वारा पहले से स्थापित किए गए एक्सटेंशन प्रबंधित करें" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:30 msgid "See all the details of your extensions" msgstr "अपने एक्सटेंशन के सभी विवरण देखें" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:34 msgid "Check your extensions compatibility with the next version of GNOME" msgstr "गनोम के अगले संस्करण के साथ अपने एक्सटेंशन की संगतता जांचें" #: src/exm-application.c:201 msgid "Browse, install, and manage GNOME Shell Extensions." msgstr "गनोम शैल एक्सटेंशन ब्राउज़, स्थापित और प्रबंधित करें।" #. Translators: Use 'Name email@domain.com' or 'Name https://website.example' (without single quotes). Do not delete existing names, write yours on a new line. #: src/exm-application.c:204 msgid "translator-credits" msgstr "Scrambled777 " #: src/exm-browse-page.blp:16 msgid "Search for Extensions" msgstr "एक्सटेंशन खोजें" #: src/exm-browse-page.blp:17 msgid "" "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell Extensions" msgstr "गनोम शैल एक्सटेंशन के लिए 'extensions.gnome.org' खोजने के लिए खोजशब्द दर्ज करें" #: src/exm-browse-page.blp:47 msgid "Relevance" msgstr "प्रासंगिकता" #: src/exm-browse-page.blp:48 msgctxt "Sort search results" msgid "Downloads" msgstr "डाउनलोड" #: src/exm-browse-page.blp:49 msgid "Recent" msgstr "हालिया" #: src/exm-browse-page.blp:50 src/exm-detail-view.blp:113 msgid "Name" msgstr "नाम" #: src/exm-browse-page.blp:57 msgid "Sort search results" msgstr "" #: src/exm-browse-page.blp:103 msgid "_Load More Results" msgstr "अधिक परिणाम लोड करें (_L)" #: src/exm-browse-page.blp:137 src/exm-installed-page.blp:123 msgid "No Results Found" msgstr "कोई परिणाम नहीं मिला" #: src/exm-browse-page.blp:144 msgid "Try a different search" msgstr "" #: src/exm-browse-page.blp:178 src/exm-comment-dialog.blp:34 #: src/exm-detail-view.blp:49 src/exm-detail-view.blp:291 #: src/exm-upgrade-assistant.blp:100 msgid "Connection Error" msgstr "" #: src/exm-comment-dialog.blp:13 src/exm-detail-view.blp:248 #, fuzzy #| msgid "There are no comments." msgid "Reviews and Comments" msgstr "कोई टिप्पणियां नहीं हैं।" #: src/exm-comment-dialog.blp:25 #, fuzzy #| msgid "Loading…" msgid "Loading" msgstr "लोड हो रहा है…" #: src/exm-comment-tile.blp:30 src/exm-detail-view.blp:127 msgid "Author" msgstr "लेखक" #: src/exm-detail-view.blp:40 msgid "Loading Details" msgstr "विवरण लोड हो रहा है" #: src/exm-detail-view.blp:59 src/exm-window.c:347 msgid "An Error Occurred" msgstr "एक त्रुटि हुई" #: src/exm-detail-view.blp:60 #, fuzzy #| msgid "A newer version of this extension is available" msgid "No extension details available" msgstr "इस एक्सटेंशन का एक नया संस्करण उपलब्ध है" #: src/exm-detail-view.blp:154 msgid "Enlarge Image" msgstr "छवि बड़ा करें" #: src/exm-detail-view.blp:172 src/exm-extension-row.blp:89 msgid "Description" msgstr "विवरण" #: src/exm-detail-view.blp:195 msgid "Links" msgstr "लिंक" #: src/exm-detail-view.blp:203 msgid "Homepage" msgstr "मुखपृष्ठ" #: src/exm-detail-view.blp:219 msgid "Donate" msgstr "दान करें" #: src/exm-detail-view.blp:228 msgid "View on Extensions" msgstr "एक्सटेंशन पर देखें" #: src/exm-detail-view.blp:271 msgid "Reviews and comments are disabled for this extension" msgstr "" #: src/exm-detail-view.blp:314 #, fuzzy #| msgid "There are no comments." msgid "There are no reviews or comments" msgstr "कोई टिप्पणियां नहीं हैं।" #: src/exm-detail-view.blp:343 #, fuzzy #| msgid "_Show All Reviews" msgid "_Show All" msgstr "सभी समीक्षाएं दिखाएं (_S)" #. Translators: '%s' = extension name #: src/exm-detail-view.c:445 #, c-format msgid "%s Icon" msgstr "" #. Translators: '%s' = extension name #: src/exm-detail-view.c:478 #, fuzzy, c-format #| msgctxt "shortcut window" #| msgid "Screenshot View" msgid "%s Screenshot" msgstr "स्क्रीनशॉट दृश्य" #: src/exm-error-dialog.blp:7 msgid "Error Report" msgstr "त्रुटि रिपोर्ट" #: src/exm-error-dialog.blp:22 msgid "An unexpected error occurred in Extension Manager" msgstr "एक्सटेंशन मैनेजर में एक अप्रत्याशित त्रुटि हुई" #: src/exm-error-dialog.blp:36 #, fuzzy #| msgid "_Copy to Clipboard" msgid "Copy to Clipboard" msgstr "क्लिपबोर्ड पर कॉपी करें (_C)" #: src/exm-error-dialog.blp:77 msgid "_New Issue" msgstr "नया मुद्दा (_N)" #. Success indicator #: src/exm-error-dialog.c:125 src/exm-upgrade-assistant.c:347 msgid "Copied" msgstr "कॉपी किया गया" #: src/exm-error-dialog.c:173 msgid "Please open a new issue and attach the following information:" msgstr "कृपया एक नया मुद्दा खोलें और निम्नलिखित जानकारी संलग्न करें:" #. Translators: '%s' = Name of Distributor (e.g. "Packager123") #: src/exm-error-dialog.c:177 #, c-format msgid "" "You are using a third-party build of Extension Manager. Please contact the package distributor (%s) first before " "filing an issue. Be sure to attach the following information:" msgstr "" "आप एक्सटेंशन मैनेजर के तृतीय-पक्ष बिल्ड का उपयोग कर रहे हैं। कृपया समस्या दर्ज करने से पहले " "पहले पैकेज वितरक (%s) से संपर्क करें। निम्नलिखित जानकारी " "संलग्न करना सुनिश्चित करें:" #. Translators: Button's tooltip to open extension's preferences dialog #: src/exm-extension-row.blp:28 msgid "Open extension preferences" msgstr "एक्सटेंशन प्राथमिकताएं खोलें" #. Translators: Icon's tooltip when an extension has an error #: src/exm-extension-row.blp:46 msgid "An error occurred while loading this extension" msgstr "इस एक्सटेंशन को लोड करते समय त्रुटि उत्पन्न हुई" #. Translators: Icon's tooltip when an extension is incompatible #: src/exm-extension-row.blp:63 src/exm-install-button.c:117 msgid "This extension is incompatible with your current version of GNOME" msgstr "यह एक्सटेंशन आपके गनोम के वर्तमान संस्करण के साथ असंगत है" #. Translators: Icon's tooltip when an extension update is available #: src/exm-extension-row.blp:80 msgid "A newer version of this extension is available" msgstr "इस एक्सटेंशन का एक नया संस्करण उपलब्ध है" #: src/exm-extension-row.blp:98 src/exm-info-bar.blp:50 msgid "Version" msgstr "संस्करण" #: src/exm-extension-row.blp:107 msgid "Session Modes" msgstr "" #: src/exm-extension-row.blp:137 msgid "Error" msgstr "त्रुटि" #: src/exm-extension-row.blp:158 msgid "See Details" msgstr "विवरण देखें" #: src/exm-extension-row.blp:169 msgid "Remove…" msgstr "हटाएं…" #: src/exm-extension-row.c:175 msgid "Unlock Dialog" msgstr "" #. Translators: GNOME Display Manager #: src/exm-extension-row.c:181 msgid "GDM" msgstr "" #. Translators: Label when an extension runs on both, login and lock screens #: src/exm-extension-row.c:189 msgid "" "This extension will run while the screen is locked and no user is logged in" msgstr "" #. Translators: Label when an extension runs on the lock screen #: src/exm-extension-row.c:194 msgid "This extension will run while the screen is locked" msgstr "" #. Translators: Label when an extension runs on the login screen #: src/exm-extension-row.c:199 #, fuzzy #| msgid "One extension will be updated on next login" #| msgid_plural "%d extensions will be updated on next login" msgid "This extension will run while no user is logged in" msgstr "अगले लॉगिन पर एक एक्सटेंशन अद्यतित की जाएगी" #: src/exm-help-overlay.blp:11 msgctxt "shortcut window" msgid "General" msgstr "सामान्य" #: src/exm-help-overlay.blp:14 msgctxt "shortcut window" msgid "Show Installed Page" msgstr "स्थापित पृष्ठ दिखाएं" #: src/exm-help-overlay.blp:19 msgctxt "shortcut window" msgid "Show Browse Page" msgstr "ब्राउज़ पृष्ठ दिखाएं" #: src/exm-help-overlay.blp:24 msgctxt "shortcut window" msgid "Toggle Search" msgstr "" #: src/exm-help-overlay.blp:29 msgctxt "shortcut window" msgid "Show Keyboard Shortcuts" msgstr "कीबोर्ड शॉर्टकट दिखाएं" #: src/exm-help-overlay.blp:34 msgctxt "shortcut window" msgid "Close Window" msgstr "विंडो बंद करें" #: src/exm-help-overlay.blp:39 msgctxt "shortcut window" msgid "Quit" msgstr "बंद करें" #: src/exm-help-overlay.blp:45 msgctxt "shortcut window" msgid "Screenshot View" msgstr "स्क्रीनशॉट दृश्य" #: src/exm-help-overlay.blp:48 src/exm-help-overlay.blp:63 msgctxt "shortcut window" msgid "Zoom In" msgstr "बड़ा करें" #: src/exm-help-overlay.blp:53 src/exm-help-overlay.blp:68 msgctxt "shortcut window" msgid "Zoom Out" msgstr "छोटा करें" #: src/exm-help-overlay.blp:58 msgctxt "shortcut window" msgid "Reset Zoom" msgstr "जूम रीसेट करें" #: src/exm-info-bar.blp:28 msgctxt "Number of downloads" msgid "Downloads" msgstr "डाउनलोड" #: src/exm-info-bar.c:107 msgid "Unsupported" msgstr "असमर्थित" #: src/exm-install-button.c:127 msgid "Install…" msgstr "स्थापित करें…" #: src/exm-install-button.c:132 #, fuzzy #| msgctxt "State" #| msgid "Installed" msgid "Installing" msgstr "स्थापित" #: src/exm-install-button.c:136 msgctxt "State" msgid "Installed" msgstr "स्थापित" #: src/exm-install-button.c:140 msgid "Unsupported…" msgstr "असमर्थित…" #: src/exm-installed-page.blp:16 #, fuzzy #| msgid "Log Out…" msgid "_Log Out…" msgstr "लॉग आउट…" #: src/exm-installed-page.blp:28 msgid "Use Extensions" msgstr "एक्सटेंशन का उपयोग करें" #: src/exm-installed-page.blp:29 msgid "Extensions can cause performance and stability issues" msgstr "एक्सटेंशन प्रदर्शन और स्थिरता संबंधी समस्याएं पैदा कर सकते हैं" #: src/exm-installed-page.blp:34 src/exm-upgrade-assistant.blp:133 msgid "User-Installed Extensions" msgstr "उपयोक्ता-स्थापित एक्सटेंशन" #: src/exm-installed-page.blp:51 src/exm-upgrade-assistant.blp:150 msgid "No User Extensions Installed" msgstr "कोई उपयोक्ता एक्सटेंशन स्थापित नहीं हैं" #: src/exm-installed-page.blp:55 msgid "Browse" msgstr "देखें" #: src/exm-installed-page.blp:69 src/exm-upgrade-assistant.blp:160 msgid "System Extensions" msgstr "सिस्टम एक्सटेंशन" #: src/exm-installed-page.blp:86 src/exm-upgrade-assistant.blp:177 msgid "No System Extensions Installed" msgstr "कोई सिस्टम एक्सटेंशन स्थापित नहीं हैं" #. Translators: Text announced by screen readers when interacting with the list of search results #: src/exm-installed-page.blp:111 #, fuzzy #| msgid "_Load More Results" msgid "Search Results" msgstr "अधिक परिणाम लोड करें (_L)" #: src/exm-installed-page.blp:124 msgid "Try a different search or search online" msgstr "" #: src/exm-installed-page.blp:131 msgid "_Search Online" msgstr "" #. Translators: '%d' = number of extensions that will be updated #: src/exm-installed-page.c:298 #, fuzzy, c-format #| msgid "One extension will be updated on next login" #| msgid_plural "%d extensions will be updated on next login" msgid "%d extension will be updated on next login" msgid_plural "%d extensions will be updated on next login" msgstr[0] "अगले लॉगिन पर एक एक्सटेंशन अद्यतित की जाएगी" msgstr[1] "%d एक्सटेंशन अगले लॉगिन पर अद्यतित की जाएगी" #: src/exm-rating.c:142 #, c-format msgid "%i Star" msgid_plural "%i Stars" msgstr[0] "" msgstr[1] "" #. Translators: Button's tooltip to zoom out screenshots #: src/exm-screenshot-view.blp:37 msgid "Zoom Out" msgstr "छोटा करें" #. Translators: Button's tooltip to zoom in screenshots #: src/exm-screenshot-view.blp:51 msgid "Zoom In" msgstr "बड़ा करें" #: src/exm-upgrade-assistant.blp:11 msgid "Upgrade Assistant" msgstr "उन्नयन सहायक" #: src/exm-upgrade-assistant.blp:66 msgid "_Check Compatibility" msgstr "संगतता जांचें (_C)" #: src/exm-upgrade-assistant.blp:189 msgid "_Copy to Clipboard" msgstr "क्लिपबोर्ड पर कॉपी करें (_C)" #: src/exm-upgrade-assistant.c:188 #, c-format msgid "Checked %d/%d Extensions" msgstr "%d/%d एक्सटेंशन की जाँच की गई" #. Set percentage text #: src/exm-upgrade-assistant.c:207 #, c-format msgid "%d%% Compatible" msgstr "%d%% संगत" #: src/exm-upgrade-assistant.c:223 #, c-format msgid "" "GNOME %s supports %d out of %d of the extensions currently " "installed on the system" msgstr "" "गनोम %s सिस्टम पर वर्तमान में स्थापित एक्सटेंशनों में से %d में से %d का " "समर्थन करता है" #. Translators: Icon's tooltip when an extension is compatible #: src/exm-upgrade-assistant.c:503 msgid "A compatible version of the extension exists" msgstr "एक्सटेंशन का एक संगत संस्करण मौजूद है" #. Translators: Icon's tooltip when an extension is not compatible #: src/exm-upgrade-assistant.c:510 msgid "No compatible version of the extension exists" msgstr "एक्सटेंशन का कोई संगत संस्करण मौजूद नहीं है" #. Translators: Icon's tooltip when an extension compatibility is unknown #: src/exm-upgrade-assistant.c:517 msgid "" "This extension is not hosted on extensions.gnome.org. Its compatibility " "cannot be determined." msgstr "" "यह एक्सटेंशन extensions.gnome.org पर होस्ट नहीं किया गया है। इसकी अनुकूलता निर्धारित " "नहीं की जा सकती।" #: src/exm-upgrade-assistant.c:608 #, c-format msgid "" "You are currently running GNOME %s. Select a version of GNOME below " "and check whether your extensions will continue to be available." msgstr "" "आप वर्तमान में गनोम %s चला रहे हैं। नीचे गनोम का एक संस्करण चुनें और जांचें कि क्या " "आपके एक्सटेंशन उपलब्ध रहेंगे।" #. Translators: Tooltip of the search icon in the header bar #: src/exm-window.blp:39 #, fuzzy #| msgid "User-Installed Extensions" msgid "Search Installed Extensions" msgstr "उपयोक्ता-स्थापित एक्सटेंशन" #: src/exm-window.blp:48 msgid "Main Menu" msgstr "मुख्य मेनू" #: src/exm-window.blp:59 #, fuzzy #| msgid "Search for Extensions" msgid "Search for installed extensions" msgstr "एक्सटेंशन खोजें" #: src/exm-window.blp:71 msgctxt "Navigation" msgid "_Installed" msgstr "स्थापित (_I)" #: src/exm-window.blp:80 msgctxt "Navigation" msgid "_Browse" msgstr "देखें (_B)" #. Translators: the character preceded by "_" should not be the same #. as others in the same menu #: src/exm-window.blp:108 msgid "Sort _Enabled First" msgstr "सक्षम पहले क्रमबद्ध करें (_E)" #: src/exm-window.blp:109 msgid "_Show Unsupported" msgstr "असमर्थित दिखाएं (_S)" #: src/exm-window.blp:113 msgid "_Upgrade Assistant" msgstr "उन्नयन सहायक (_U)" #: src/exm-window.blp:114 msgid "_Keyboard Shortcuts" msgstr "कीबोर्ड शॉर्टकट (_K)" #: src/exm-window.blp:115 msgid "_About Extension Manager" msgstr "एक्सटेंशन मैनेजर के बारे में (_A)" #: src/exm-window.blp:120 msgid "Uninstall Extension?" msgstr "एक्सटेंशन अस्थापित करें?" #: src/exm-window.blp:121 msgid "" "The extension's features and functionality will no longer be accessible. Are " "you sure you want to uninstall?" msgstr "" "एक्सटेंशन की सुविधाएं और कार्यक्षमता अब पहुंच योग्य नहीं होंगी। क्या आप स्थापना रद्द करना " "चाहते हैं?" #: src/exm-window.blp:126 msgid "_No" msgstr "नहीं (_N)" #: src/exm-window.blp:127 msgid "_Yes" msgstr "हाँ (_Y)" #: src/exm-window.blp:132 msgid "Unsupported Extension" msgstr "असमर्थित एक्सटेंशन" #: src/exm-window.blp:133 msgid "" "This extension does not support your GNOME Shell version. It may cause " "errors if installed." msgstr "" "यह एक्सटेंशन आपके गनोम शैल संस्करण का समर्थन नहीं करता है। स्थापित होने पर यह त्रुटियां " "उत्पन्न कर सकता है।" #: src/exm-window.blp:139 msgid "_Install Anyway" msgstr "फिर भी स्थापित करें (_I)" #: src/exm-window.blp:140 msgid "_Go Back" msgstr "पीछे जाएं (_G)" #: src/exm-window.c:348 #, fuzzy #| msgid "Details" msgid "_Details" msgstr "विवरण" #: src/web/exm-request-handler.c:99 msgid "" "Check GNOME infrastructure status " "and try again later" msgstr "" #: src/web/exm-request-handler.c:100 msgid "Check your network status and try again" msgstr "" #~ msgid "Comments" #~ msgstr "टिप्पणियां" #~ msgid "Loading Comments" #~ msgstr "टिप्पणियां लोड हो रही हैं" #~ msgid "User Reviews" #~ msgstr "उपयोक्ता समीक्षा" #~ msgid "No comments yet" #~ msgstr "अभी कोई टिप्पणी नहीं" #~ msgid "" #~ "This extension could be activated in session modes such as the login " #~ "screen or the lock screen" #~ msgstr "" #~ "इस एक्सटेंशन को सत्र मोड जैसे लॉगिन स्क्रीन या लॉक स्क्रीन में सक्रिय किया जा सकता है" #~ msgid "Updates Available" #~ msgstr "अद्यतन उपलब्ध" #~ msgid "Supported" #~ msgstr "समर्थित" #~ msgid "Unknown" #~ msgstr "अज्ञात" #~ msgid "A utility for managing GNOME Shell Extensions" #~ msgstr "गनोम शैल एक्सटेंशन के प्रबंधन के लिए एक उपयोगिता" #, c-format #~ msgid "e.g. “%s”" #~ msgstr "जैसे “%s”" #~ msgid "This extension is incompatible with your current version of GNOME." #~ msgstr "यह एक्सटेंशन आपके गनोम के वर्तमान संस्करण के साथ असंगत है।" #~ msgid "An error occurred." #~ msgstr "एक त्रुटि हुई।" #~ msgid "Return to view" #~ msgstr "दृश्य पर वापस जाएँ" extension-manager-0.6.3/po/hr.po000066400000000000000000000547721477302130300165520ustar00rootroot00000000000000# Croatian translations for extension-manager package. # Copyright (C) YEAR THE extension-manager'S COPYRIGHT HOLDER # This file is distributed under the same license as the extension-manager package. # gogo , 2022. # Milo Ivir , 2024, 2025. msgid "" msgstr "" "Project-Id-Version: extension-manager\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-03-06 16:36+0000\n" "PO-Revision-Date: 2025-02-28 23:42+0000\n" "Last-Translator: Milo Ivir \n" "Language-Team: Croatian \n" "Language: hr\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: Weblate 5.10.3-dev\n" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:2 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:6 #: src/exm-window.blp:7 msgid "Extension Manager" msgstr "Upravljač proširenja" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:11 msgid "Manage GNOME Shell Extensions" msgstr "Upravljajte proširenjima GNOME ljuske" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #. Make sure to leave the original strings and add your translations afterwards, so that users can search both in English and your language. #: data/com.mattjakeman.ExtensionManager.desktop.in.in:14 msgid "extension;manager;shell;" msgstr "extension;manager;shell;proširenja;upravljač;ljuska;" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:7 msgid "Browse, install, and manage GNOME Shell Extensions" msgstr "Pregledajte, instalirajte i upravljajte proširenjima GNOME ljuske" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:13 msgid "A utility for browsing and installing GNOME Shell Extensions." msgstr "Pomagalo za pregledavanje i instalaciju proširenja GNOME ljuske." #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:14 msgid "Features:" msgstr "Značajke:" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:16 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:26 msgid "Browse extensions.gnome.org right inside the app" msgstr "Pregledajte extensions.gnome.org unutar aplikacije" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:17 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:22 msgid "Manage the extensions you already have installed" msgstr "Upravljajte već instaliranim proširenjima" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:30 msgid "See all the details of your extensions" msgstr "Pogledajte sve podatke vaših proširenja" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:34 msgid "Check your extensions compatibility with the next version of GNOME" msgstr "Provjerite kompatibilnost vaših proširenja sa sljedećom GNOME inačicom" #: src/exm-application.c:201 msgid "Browse, install, and manage GNOME Shell Extensions." msgstr "Pregledajte, instalirajte i upravljajte proširenjima GNOME ljuske." #. Translators: Use 'Name email@domain.com' or 'Name https://website.example' (without single quotes). Do not delete existing names, write yours on a new line. #: src/exm-application.c:204 msgid "translator-credits" msgstr "" "gogo \n" "Milo Ivir " #: src/exm-browse-page.blp:16 msgid "Search for Extensions" msgstr "Pretraga za proširenja" #: src/exm-browse-page.blp:17 msgid "" "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell Extensions" msgstr "" "Upišite ključnu riječ za pretraživanje proširenja za GNOME ljusku na " "'extensions.gnome.org'" #: src/exm-browse-page.blp:47 msgid "Relevance" msgstr "Važnost" #: src/exm-browse-page.blp:48 msgctxt "Sort search results" msgid "Downloads" msgstr "Preuzimanja" #: src/exm-browse-page.blp:49 msgid "Recent" msgstr "Nedavno" #: src/exm-browse-page.blp:50 src/exm-detail-view.blp:113 msgid "Name" msgstr "Naziv" #: src/exm-browse-page.blp:57 msgid "Sort search results" msgstr "Razvrstaj rezultate pretrage" #: src/exm-browse-page.blp:103 msgid "_Load More Results" msgstr "_Učitaj više rezultata" #: src/exm-browse-page.blp:137 src/exm-installed-page.blp:123 msgid "No Results Found" msgstr "Ništa nije pronađeno" #: src/exm-browse-page.blp:144 msgid "Try a different search" msgstr "Probaj drugačiju pretragu" #: src/exm-browse-page.blp:178 src/exm-comment-dialog.blp:34 #: src/exm-detail-view.blp:49 src/exm-detail-view.blp:291 #: src/exm-upgrade-assistant.blp:100 msgid "Connection Error" msgstr "Greška u vezi" #: src/exm-comment-dialog.blp:13 src/exm-detail-view.blp:248 msgid "Reviews and Comments" msgstr "Recenzije i komentari" #: src/exm-comment-dialog.blp:25 msgid "Loading" msgstr "Učitavanje" #: src/exm-comment-tile.blp:30 src/exm-detail-view.blp:127 msgid "Author" msgstr "Autor" #: src/exm-detail-view.blp:40 msgid "Loading Details" msgstr "Pojedinosti učitavanja" #: src/exm-detail-view.blp:59 src/exm-window.c:347 msgid "An Error Occurred" msgstr "Dogodila se greška" #: src/exm-detail-view.blp:60 msgid "No extension details available" msgstr "Nema detalja o proširenju" #: src/exm-detail-view.blp:154 msgid "Enlarge Image" msgstr "Uvećaj sliku" #: src/exm-detail-view.blp:172 src/exm-extension-row.blp:89 msgid "Description" msgstr "Opis" #: src/exm-detail-view.blp:195 msgid "Links" msgstr "Poveznice" #: src/exm-detail-view.blp:203 msgid "Homepage" msgstr "Naslovna stranica" #: src/exm-detail-view.blp:219 msgid "Donate" msgstr "Doniraj" #: src/exm-detail-view.blp:228 msgid "View on Extensions" msgstr "Pogledaj na stranici „Proširenja”" #: src/exm-detail-view.blp:271 msgid "Reviews and comments are disabled for this extension" msgstr "Recenzije i komentari su isključeni za ovo proširenje" #: src/exm-detail-view.blp:314 msgid "There are no reviews or comments" msgstr "Nema recenzija ili komentara" #: src/exm-detail-view.blp:343 msgid "_Show All" msgstr "_Prikaži sve" #. Translators: '%s' = extension name #: src/exm-detail-view.c:445 #, c-format msgid "%s Icon" msgstr "Ikona za %s" #. Translators: '%s' = extension name #: src/exm-detail-view.c:478 #, c-format msgid "%s Screenshot" msgstr "Snimka ekrana za %s" #: src/exm-error-dialog.blp:7 msgid "Error Report" msgstr "Prijava o grešci" #: src/exm-error-dialog.blp:22 msgid "An unexpected error occurred in Extension Manager" msgstr "Dogodila se neočekivana greška u upravljaču proširenja" #: src/exm-error-dialog.blp:36 msgid "Copy to Clipboard" msgstr "Kopiraj u međuspremnik" #: src/exm-error-dialog.blp:77 msgid "_New Issue" msgstr "_Novi problem" #. Success indicator #: src/exm-error-dialog.c:125 src/exm-upgrade-assistant.c:347 msgid "Copied" msgstr "Kopirano" #: src/exm-error-dialog.c:173 msgid "Please open a new issue and attach the following information:" msgstr "Prijavite novi problem i dodajte sljedeće informacije:" #. Translators: '%s' = Name of Distributor (e.g. "Packager123") #: src/exm-error-dialog.c:177 #, c-format msgid "" "You are using a third-party build of Extension Manager. Please contact the package distributor (%s) first before " "filing an issue. Be sure to attach the following information:" msgstr "" "Koristite verziju aplikacije „Upravljač proširenja” treće strane. Najprije " "kontaktirajte distributera paketa (%s) prije " "prijavljivanja problema. Priložite sljedeće podatke:" #. Translators: Button's tooltip to open extension's preferences dialog #: src/exm-extension-row.blp:28 msgid "Open extension preferences" msgstr "Otvorite osobitosti proširenja" #. Translators: Icon's tooltip when an extension has an error #: src/exm-extension-row.blp:46 msgid "An error occurred while loading this extension" msgstr "Dogodila se greška pri učitavanju ovog proširenja" #. Translators: Icon's tooltip when an extension is incompatible #: src/exm-extension-row.blp:63 src/exm-install-button.c:117 msgid "This extension is incompatible with your current version of GNOME" msgstr "Ovo je proširenje nekompatibilno s trenutačnom GNOME inačicom" #. Translators: Icon's tooltip when an extension update is available #: src/exm-extension-row.blp:80 msgid "A newer version of this extension is available" msgstr "Dostupna je nova inačica ovog proširenja" #: src/exm-extension-row.blp:98 src/exm-info-bar.blp:50 msgid "Version" msgstr "Inačica" #: src/exm-extension-row.blp:107 msgid "Session Modes" msgstr "Modusi sesija" #: src/exm-extension-row.blp:137 msgid "Error" msgstr "Greška" #: src/exm-extension-row.blp:158 msgid "See Details" msgstr "Pogledajte pojedinosti" #: src/exm-extension-row.blp:169 msgid "Remove…" msgstr "Ukloni…" #: src/exm-extension-row.c:175 msgid "Unlock Dialog" msgstr "Dijalog za otključavanje" #. Translators: GNOME Display Manager #: src/exm-extension-row.c:181 msgid "GDM" msgstr "GDM" #. Translators: Label when an extension runs on both, login and lock screens #: src/exm-extension-row.c:189 msgid "" "This extension will run while the screen is locked and no user is logged in" msgstr "" "Ovo će se proširenje pokrenuti kada je ekran zaključan i kada nijedan " "korisnik nije prijavljen" #. Translators: Label when an extension runs on the lock screen #: src/exm-extension-row.c:194 msgid "This extension will run while the screen is locked" msgstr "Ovo će se proširenje pokrenuti kada je ekran zaključan" #. Translators: Label when an extension runs on the login screen #: src/exm-extension-row.c:199 msgid "This extension will run while no user is logged in" msgstr "Ovo će se proširenje pokrenuti kada nijedan korisnik nije prijavljen" #: src/exm-help-overlay.blp:11 msgctxt "shortcut window" msgid "General" msgstr "Općenito" #: src/exm-help-overlay.blp:14 msgctxt "shortcut window" msgid "Show Installed Page" msgstr "Prikaži stranicu instaliranih" #: src/exm-help-overlay.blp:19 msgctxt "shortcut window" msgid "Show Browse Page" msgstr "Prikaži stranicu pregledavanja" #: src/exm-help-overlay.blp:24 msgctxt "shortcut window" msgid "Toggle Search" msgstr "Uključi/Isključi pretragu" #: src/exm-help-overlay.blp:29 msgctxt "shortcut window" msgid "Show Keyboard Shortcuts" msgstr "Prikaži tipkovne prečace" #: src/exm-help-overlay.blp:34 msgctxt "shortcut window" msgid "Close Window" msgstr "Zatvori prozor" #: src/exm-help-overlay.blp:39 msgctxt "shortcut window" msgid "Quit" msgstr "Zatvori aplikaciju" #: src/exm-help-overlay.blp:45 msgctxt "shortcut window" msgid "Screenshot View" msgstr "Prikaz snimke ekrana" #: src/exm-help-overlay.blp:48 src/exm-help-overlay.blp:63 msgctxt "shortcut window" msgid "Zoom In" msgstr "Uvećaj" #: src/exm-help-overlay.blp:53 src/exm-help-overlay.blp:68 msgctxt "shortcut window" msgid "Zoom Out" msgstr "Umanji" #: src/exm-help-overlay.blp:58 msgctxt "shortcut window" msgid "Reset Zoom" msgstr "Resetiraj zumiranje" #: src/exm-info-bar.blp:28 msgctxt "Number of downloads" msgid "Downloads" msgstr "Preuzimanja" #: src/exm-info-bar.c:107 msgid "Unsupported" msgstr "Nepodržano" #: src/exm-install-button.c:127 msgid "Install…" msgstr "Instaliraj…" #: src/exm-install-button.c:132 msgid "Installing" msgstr "Instaliranje" #: src/exm-install-button.c:136 msgctxt "State" msgid "Installed" msgstr "Instalirano" #: src/exm-install-button.c:140 msgid "Unsupported…" msgstr "Nepodržano…" #: src/exm-installed-page.blp:16 msgid "_Log Out…" msgstr "_Odjava…" #: src/exm-installed-page.blp:28 msgid "Use Extensions" msgstr "Koristi proširenja" #: src/exm-installed-page.blp:29 msgid "Extensions can cause performance and stability issues" msgstr "Proširenja mogu prouzročiti probleme s performansama i stabilnosti" #: src/exm-installed-page.blp:34 src/exm-upgrade-assistant.blp:133 msgid "User-Installed Extensions" msgstr "Korisnički instalirana proširenja" #: src/exm-installed-page.blp:51 src/exm-upgrade-assistant.blp:150 msgid "No User Extensions Installed" msgstr "Nema instaliranih korisničkih proširenja" #: src/exm-installed-page.blp:55 msgid "Browse" msgstr "Pregledaj" #: src/exm-installed-page.blp:69 src/exm-upgrade-assistant.blp:160 msgid "System Extensions" msgstr "Proširenja sustava" #: src/exm-installed-page.blp:86 src/exm-upgrade-assistant.blp:177 msgid "No System Extensions Installed" msgstr "Nema instaliranih sustavskih proširenja" #. Translators: Text announced by screen readers when interacting with the list of search results #: src/exm-installed-page.blp:111 msgid "Search Results" msgstr "Rezultati pretrage" #: src/exm-installed-page.blp:124 msgid "Try a different search or search online" msgstr "Probajte drugačiju pretragu ili tražite online" #: src/exm-installed-page.blp:131 msgid "_Search Online" msgstr "_Traži online" #. Translators: '%d' = number of extensions that will be updated #: src/exm-installed-page.c:298 #, c-format msgid "%d extension will be updated on next login" msgid_plural "%d extensions will be updated on next login" msgstr[0] "%d proširenje će se nadopuniti pri sljedećoj prijavi" msgstr[1] "%d proširenja će se nadopuniti pri sljedećoj prijavi" msgstr[2] "%d proširenja će se nadopuniti pri sljedećoj prijavi" #: src/exm-rating.c:142 #, c-format msgid "%i Star" msgid_plural "%i Stars" msgstr[0] "%i zvijezda" msgstr[1] "%i zvijezde" msgstr[2] "%i zvijezda" #. Translators: Button's tooltip to zoom out screenshots #: src/exm-screenshot-view.blp:37 msgid "Zoom Out" msgstr "Umanji" #. Translators: Button's tooltip to zoom in screenshots #: src/exm-screenshot-view.blp:51 msgid "Zoom In" msgstr "Uvećaj" #: src/exm-upgrade-assistant.blp:11 msgid "Upgrade Assistant" msgstr "Pomoćnik nadogradnje" #: src/exm-upgrade-assistant.blp:66 msgid "_Check Compatibility" msgstr "_Provjeri kompatibilnost" #: src/exm-upgrade-assistant.blp:189 msgid "_Copy to Clipboard" msgstr "_Kopiraj u međuspremnik" #: src/exm-upgrade-assistant.c:188 #, c-format msgid "Checked %d/%d Extensions" msgstr "Provjereno %d/%d proširenja" #. Set percentage text #: src/exm-upgrade-assistant.c:207 #, c-format msgid "%d%% Compatible" msgstr "%d% % kompatibilno" #: src/exm-upgrade-assistant.c:223 #, c-format msgid "" "GNOME %s supports %d out of %d of the extensions currently " "installed on the system" msgstr "" "GNOME %s podržava %d od %d trenutno instaliranih proširenja na " "sustavu" #. Translators: Icon's tooltip when an extension is compatible #: src/exm-upgrade-assistant.c:503 msgid "A compatible version of the extension exists" msgstr "Postoji kompatibilna inačica proširenja" #. Translators: Icon's tooltip when an extension is not compatible #: src/exm-upgrade-assistant.c:510 msgid "No compatible version of the extension exists" msgstr "Ne postoji kompatibilna inačica proširenja" #. Translators: Icon's tooltip when an extension compatibility is unknown #: src/exm-upgrade-assistant.c:517 msgid "" "This extension is not hosted on extensions.gnome.org. Its compatibility " "cannot be determined." msgstr "" "Ovo proširenje nije objavljeno na extensions.gnome.org. Njegova " "kompatibilnost se ne može odrediti." #: src/exm-upgrade-assistant.c:608 #, c-format msgid "" "You are currently running GNOME %s. Select a version of GNOME below " "and check whether your extensions will continue to be available." msgstr "" "Trenutno koristite GNOME %s. U nastavku odaberite GNOME izdanje i " "provjerite hoće li vaša proširenja i dalje biti dostupna." #. Translators: Tooltip of the search icon in the header bar #: src/exm-window.blp:39 msgid "Search Installed Extensions" msgstr "Pretražite instalirana proširenja" #: src/exm-window.blp:48 msgid "Main Menu" msgstr "Glavni izbornik" #: src/exm-window.blp:59 msgid "Search for installed extensions" msgstr "Pretraga za instalirana proširenja" #: src/exm-window.blp:71 msgctxt "Navigation" msgid "_Installed" msgstr "_Instalirano" #: src/exm-window.blp:80 msgctxt "Navigation" msgid "_Browse" msgstr "_Pretraga" #. Translators: the character preceded by "_" should not be the same #. as others in the same menu #: src/exm-window.blp:108 msgid "Sort _Enabled First" msgstr "_Razvrstaj najprije omogućena" #: src/exm-window.blp:109 msgid "_Show Unsupported" msgstr "_Prikaži nepodržana" #: src/exm-window.blp:113 msgid "_Upgrade Assistant" msgstr "Po_moćnik nadogradnje" #: src/exm-window.blp:114 msgid "_Keyboard Shortcuts" msgstr "_Tipkovni prečaci" #: src/exm-window.blp:115 msgid "_About Extension Manager" msgstr "_Informacije o „Upravljač proširenja”" #: src/exm-window.blp:120 msgid "Uninstall Extension?" msgstr "Deinstalirati proširenje?" #: src/exm-window.blp:121 msgid "" "The extension's features and functionality will no longer be accessible. Are " "you sure you want to uninstall?" msgstr "" "Značajke i funkcije proširenja više neće biti dostupne. Jeste li sigurni da " "želite deinstalirati proširenje?" #: src/exm-window.blp:126 msgid "_No" msgstr "_Ne" #: src/exm-window.blp:127 msgid "_Yes" msgstr "_Da" #: src/exm-window.blp:132 msgid "Unsupported Extension" msgstr "Nepodržana proširenja" #: src/exm-window.blp:133 msgid "" "This extension does not support your GNOME Shell version. It may cause " "errors if installed." msgstr "" "Ovo proširenje ne podržava vašu inačicu GNOME ljuske. Može prouzročiti " "greške ako se instalira." #: src/exm-window.blp:139 msgid "_Install Anyway" msgstr "_Svejedno instaliraj" #: src/exm-window.blp:140 msgid "_Go Back" msgstr "_Idi natrag" #: src/exm-window.c:348 msgid "_Details" msgstr "_Pojedinosti" #: src/web/exm-request-handler.c:99 msgid "" "Check GNOME infrastructure status " "and try again later" msgstr "" "Provjerite stanje GNOME infrastrukture i pokušajte kasnije ponovo" #: src/web/exm-request-handler.c:100 msgid "Check your network status and try again" msgstr "Provjerite stanje mreže i pokušajte ponovo" #~ msgid "Comments" #~ msgstr "Komentari" #~ msgid "Loading Comments" #~ msgstr "Učitavanje komentara" #~ msgid "User Reviews" #~ msgstr "Korisničke recenzije" #~ msgid "No comments yet" #~ msgstr "Još nema komentara" #~ msgid "" #~ "This extension could be activated in session modes such as the login " #~ "screen or the lock screen" #~ msgstr "" #~ "Ovo se proširenje može aktivirati u načinima sesije kao što su ekran za " #~ "prijavu ili ekran za zaključavanje" #, c-format #~ msgid "%s by %s" #~ msgstr "%s, autor: %s" #~ msgid "Updates Available" #~ msgstr "Dostupne su nadopune" #~ msgid "Supported" #~ msgstr "Podržano" #~ msgid "Unknown" #~ msgstr "Napoznato" #~ msgid "A utility for managing GNOME Shell Extensions" #~ msgstr "Pomagalo za upravljanje proširenjima GNOME ljuske" #, c-format #~ msgid "e.g. “%s”" #~ msgstr "npr. „%s”" #~ msgid "This extension is incompatible with your current version of GNOME." #~ msgstr "" #~ "Ovo je proširenje nekompatibilno s vašom trenutačnom GNOME inačicom." #~ msgid "An error occurred." #~ msgstr "Dogodila se greška." #~ msgid "Return to view" #~ msgstr "Vrati u prikaz" #~ msgid "@app_title@" #~ msgstr "@app_title@" #~ msgid "Translation updates" #~ msgstr "Nadopune prijevoda" #~ msgid "Various bug fixes" #~ msgstr "Razni popravci grešaka" #~ msgid "Performance and stability" #~ msgstr "Performanse i stabilnost" #~ msgid "Remove release notes dialog" #~ msgstr "Uklonjen je dijalog bilješka izdanja" #~ msgid "Fix special characters in installed extension listings" #~ msgstr "Popravljeni su posebni znakovi u popisu instaliranih proširenja" #~ msgid "The second feature update to extension-manager. Highlights include:" #~ msgstr "" #~ "Druga nadopuna značajki za upravitelja proširenjima. Promjene uključuju:" #~ msgid "View comments and reviews" #~ msgstr "Prikaz komentara i recenzija" #~ msgid "Support for in-app updates" #~ msgstr "Podrška za nadopune u aplikaciji" #~ msgid "Better handling errors and out-of-date extensions" #~ msgstr "Bolje rukovanje greškama i zastarjelim proširenjima" #~ msgid "Allow installing 'unsupported' extensions" #~ msgstr "Omogućavanje instalacije 'nepodržanih' proširenja" #~ msgid "Display release notes on first run" #~ msgstr "Prikaz bilješka izdanja pri prvom pokretanju" #~ msgid "New app icon" #~ msgstr "Nova ikona aplikacije" #~ msgid "Optionally sort extensions by enabled status" #~ msgstr "Neobavezno razvrstavanje proširenja prema omogućenom stanju" #~ msgid "Fix special characters in search results" #~ msgstr "Popravljeni su posebni znakovi u rezultatima pretrage" #~ msgid "Fixes a crash that sometimes occurs while uninstalling an extension" #~ msgstr "Popravljeno je povremeno rušenje pri instalaciji proširenja" #~ msgid "The first feature update to extension-manager. Highlights include:" #~ msgstr "" #~ "Prva nadopuna značajki za upravitelja proširenjima. Promjene uključuju:" #~ msgid "Dark theme and support for overriding the system colour scheme" #~ msgstr "Tamnu temu i podršku za zaobilaženje sheme boja sustava" #~ msgid "Shows screenshots in extension listings" #~ msgstr "Prikaz snimki zaslona u popisu proširenja" #~ msgid "Shell version compatibility check" #~ msgstr "Provjera kompatibilnosti inačice ljuske" #~ msgid "Localised into seven languages" #~ msgstr "Lokalizacija u sedam jezika" #~ msgid "Global extension on/off toggle" #~ msgstr "Uklj/Isklj globalno proširenje" #~ msgid "Displays user and system extensions separately" #~ msgstr "Zaseban prikaz proširenja korisnika i sustava" #~ msgid "Extension Manager (Development)" #~ msgstr "Upravitelj proširenja (Razvojna inačica)" #~ msgid "Popularity" #~ msgstr "Popularnost" #~ msgid "Supported Versions" #~ msgstr "Podržana izdanja" #~ msgctxt "Navigation" #~ msgid "Browse" #~ msgstr "Pregledaj" #~ msgid "Theme" #~ msgstr "Tema" #~ msgid "Follow System" #~ msgstr "Izgled sustava" #~ msgid "Light" #~ msgstr "Svjetla" #~ msgid "Dark" #~ msgstr "Tamna" #~ msgid "Are you sure you want to uninstall?" #~ msgstr "Sigurno želite ukloniti?" #~ msgid "" #~ "A very simple tool for browsing, downloading, and managing GNOME shell " #~ "extensions." #~ msgstr "" #~ "Jednostavan alat za pregledavanje, preuzimanje i upravljanje proširenjima " #~ "GNOME ljuske." #~ msgid "e.g. \"Blur my Shell\"" #~ msgstr "npr. \"Blur my Shell\"" #~ msgid "What's New" #~ msgstr "Što je novo" #~ msgid "View Release Notes" #~ msgstr "Pogledajte bilješke izdanja" #, c-format #~ msgid "" #~ "This is your first time using Extension Manager %s.\n" #~ "Would you like to see the release notes?" #~ msgstr "" #~ "Ovo je vaše prvo korištenje Upravitelja proširenja %s.\n" #~ "Želite li pogledati bilješke izdanja?" extension-manager-0.6.3/po/hu.po000066400000000000000000000457451477302130300165550ustar00rootroot00000000000000# Hungarian translation for extension-manager package. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the extension-manager package. # ViBE , 2023-2024, 2025. msgid "" msgstr "" "Project-Id-Version: extension-manager\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-03-06 16:36+0000\n" "PO-Revision-Date: 2025-03-18 16:27+0000\n" "Last-Translator: ViBE \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: Weblate 5.11-dev\n" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:2 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:6 #: src/exm-window.blp:7 msgid "Extension Manager" msgstr "Kiterjesztéskezelő" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:11 msgid "Manage GNOME Shell Extensions" msgstr "GNOME Shell kiterjesztések kezelése" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #. Make sure to leave the original strings and add your translations afterwards, so that users can search both in English and your language. #: data/com.mattjakeman.ExtensionManager.desktop.in.in:14 msgid "extension;manager;shell;" msgstr "extension;manager;gnome;shell;bővítmény;" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:7 msgid "Browse, install, and manage GNOME Shell Extensions" msgstr "GNOME Shell kiterjesztések kezelése egy helyen" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:13 msgid "A utility for browsing and installing GNOME Shell Extensions." msgstr "Egy GNOME Shell kiterjesztéseket kezelő alkalmazás." #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:14 msgid "Features:" msgstr "Funkciók:" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:16 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:26 msgid "Browse extensions.gnome.org right inside the app" msgstr "extensions.gnome.org kiterjesztések böngészése" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:17 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:22 msgid "Manage the extensions you already have installed" msgstr "Telepített kiterjesztések kezelése" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:30 msgid "See all the details of your extensions" msgstr "További információk megtekintése a kiterjesztésről" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:34 msgid "Check your extensions compatibility with the next version of GNOME" msgstr "Kiterjesztések kompatibilitásának ellenőrzése a GNOME egyes verzióival" #: src/exm-application.c:201 msgid "Browse, install, and manage GNOME Shell Extensions." msgstr "GNOME Shell kiterjesztések kezelése egy helyen." #. Translators: Use 'Name email@domain.com' or 'Name https://website.example' (without single quotes). Do not delete existing names, write yours on a new line. #: src/exm-application.c:204 msgid "translator-credits" msgstr "ViBE " #: src/exm-browse-page.blp:16 msgid "Search for Extensions" msgstr "Kiterjesztések keresése" #: src/exm-browse-page.blp:17 msgid "" "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell Extensions" msgstr "" "Írjon be kulcsszavakat az 'extensions.gnome.org' gyűjteményében való GNOME " "Shell kiterjesztések kereséséhez" #: src/exm-browse-page.blp:47 msgid "Relevance" msgstr "Fontosság" #: src/exm-browse-page.blp:48 msgctxt "Sort search results" msgid "Downloads" msgstr "Letöltések" #: src/exm-browse-page.blp:49 msgid "Recent" msgstr "Legutóbbi" #: src/exm-browse-page.blp:50 src/exm-detail-view.blp:113 msgid "Name" msgstr "Név" #: src/exm-browse-page.blp:57 msgid "Sort search results" msgstr "Találatok rendezése" #: src/exm-browse-page.blp:103 msgid "_Load More Results" msgstr "További találatok _betöltése" #: src/exm-browse-page.blp:137 src/exm-installed-page.blp:123 msgid "No Results Found" msgstr "Nincs találat" #: src/exm-browse-page.blp:144 msgid "Try a different search" msgstr "Próbálja meg újra" #: src/exm-browse-page.blp:178 src/exm-comment-dialog.blp:34 #: src/exm-detail-view.blp:49 src/exm-detail-view.blp:291 #: src/exm-upgrade-assistant.blp:100 msgid "Connection Error" msgstr "Kapcsolódási hiba" #: src/exm-comment-dialog.blp:13 src/exm-detail-view.blp:248 msgid "Reviews and Comments" msgstr "Felhasználói értékelések" #: src/exm-comment-dialog.blp:25 msgid "Loading" msgstr "Betöltés…" #: src/exm-comment-tile.blp:30 src/exm-detail-view.blp:127 msgid "Author" msgstr "Készítő" #: src/exm-detail-view.blp:40 msgid "Loading Details" msgstr "Részletek betöltése" #: src/exm-detail-view.blp:59 src/exm-window.c:347 msgid "An Error Occurred" msgstr "Hiba történt" #: src/exm-detail-view.blp:60 msgid "No extension details available" msgstr "Nincsenek elérhető részletek" #: src/exm-detail-view.blp:154 msgid "Enlarge Image" msgstr "Kép nagyítása" #: src/exm-detail-view.blp:172 src/exm-extension-row.blp:89 msgid "Description" msgstr "Leírás" #: src/exm-detail-view.blp:195 msgid "Links" msgstr "Hivatkozások" #: src/exm-detail-view.blp:203 msgid "Homepage" msgstr "Honlap" #: src/exm-detail-view.blp:219 msgid "Donate" msgstr "Adományozás" #: src/exm-detail-view.blp:228 msgid "View on Extensions" msgstr "Megtekintés böngészőben" #: src/exm-detail-view.blp:271 msgid "Reviews and comments are disabled for this extension" msgstr "Ez a kiterjesztés nem fogad visszajelzéseket" #: src/exm-detail-view.blp:314 msgid "There are no reviews or comments" msgstr "Nincsenek értékelések" #: src/exm-detail-view.blp:343 msgid "_Show All" msgstr "_Minden visszajelzés megtekintése" #. Translators: '%s' = extension name #: src/exm-detail-view.c:445 #, c-format msgid "%s Icon" msgstr "%s ikonja" #. Translators: '%s' = extension name #: src/exm-detail-view.c:478 #, c-format msgid "%s Screenshot" msgstr "Pillanatkép a(z) %s kiterjesztésről" #: src/exm-error-dialog.blp:7 msgid "Error Report" msgstr "Hiba jelentése" #: src/exm-error-dialog.blp:22 msgid "An unexpected error occurred in Extension Manager" msgstr "Nem várt kivétel történt a Kiterjesztéskezelőben" #: src/exm-error-dialog.blp:36 msgid "Copy to Clipboard" msgstr "Másolás vágólapra" #: src/exm-error-dialog.blp:77 msgid "_New Issue" msgstr "_Új hiba" #. Success indicator #: src/exm-error-dialog.c:125 src/exm-upgrade-assistant.c:347 msgid "Copied" msgstr "Vágólapra másolva" #: src/exm-error-dialog.c:173 msgid "Please open a new issue and attach the following information:" msgstr "Kérem, nyisson egy új hibajegyet és adja meg az alábbi részleteket:" #. Translators: '%s' = Name of Distributor (e.g. "Packager123") #: src/exm-error-dialog.c:177 #, c-format msgid "" "You are using a third-party build of Extension Manager. Please contact the package distributor (%s) first before " "filing an issue. Be sure to attach the following information:" msgstr "" "Ön a Kiterjesztéskezelő egy harmadik fél által karbantartott változatát " "használja. Kérem, először (%s) karbantartóval vegye " "fel a kapcsolatot mielőtt hibajegyet küldene! Az alábbi részletek " "mellékelése szükséges:" #. Translators: Button's tooltip to open extension's preferences dialog #: src/exm-extension-row.blp:28 msgid "Open extension preferences" msgstr "Kiterjesztés beállításainak megnyitása" #. Translators: Icon's tooltip when an extension has an error #: src/exm-extension-row.blp:46 msgid "An error occurred while loading this extension" msgstr "Hiba történt a kiterjesztés betöltése során" #. Translators: Icon's tooltip when an extension is incompatible #: src/exm-extension-row.blp:63 src/exm-install-button.c:117 msgid "This extension is incompatible with your current version of GNOME" msgstr "Ez a kiterjesztés nem kompatibilis a telepített GNOME verzióval" #. Translators: Icon's tooltip when an extension update is available #: src/exm-extension-row.blp:80 msgid "A newer version of this extension is available" msgstr "Elérhető frissítés a kiterjesztéshez" #: src/exm-extension-row.blp:98 src/exm-info-bar.blp:50 msgid "Version" msgstr "Verzió" #: src/exm-extension-row.blp:107 msgid "Session Modes" msgstr "" #: src/exm-extension-row.blp:137 msgid "Error" msgstr "Hiba" #: src/exm-extension-row.blp:158 msgid "See Details" msgstr "Részletek megtekintése" #: src/exm-extension-row.blp:169 msgid "Remove…" msgstr "Eltávolítás…" #: src/exm-extension-row.c:175 msgid "Unlock Dialog" msgstr "" #. Translators: GNOME Display Manager #: src/exm-extension-row.c:181 msgid "GDM" msgstr "" #. Translators: Label when an extension runs on both, login and lock screens #: src/exm-extension-row.c:189 msgid "" "This extension will run while the screen is locked and no user is logged in" msgstr "" "Ez a kiterjesztés a zárolási képernyő működését befolyásolja akkor is, ha " "nincs bejelentkezve felhasználó" #. Translators: Label when an extension runs on the lock screen #: src/exm-extension-row.c:194 msgid "This extension will run while the screen is locked" msgstr "Ez a kiterjesztés a zárolási képernyő működését befolyásolja" #. Translators: Label when an extension runs on the login screen #: src/exm-extension-row.c:199 msgid "This extension will run while no user is logged in" msgstr "Ez a kiterjesztés akkor is működik, ha nincs bejelentkezve felhasználó" #: src/exm-help-overlay.blp:11 msgctxt "shortcut window" msgid "General" msgstr "Általános" #: src/exm-help-overlay.blp:14 msgctxt "shortcut window" msgid "Show Installed Page" msgstr "Telepített" #: src/exm-help-overlay.blp:19 msgctxt "shortcut window" msgid "Show Browse Page" msgstr "Böngészés" #: src/exm-help-overlay.blp:24 msgctxt "shortcut window" msgid "Toggle Search" msgstr "Keresés" #: src/exm-help-overlay.blp:29 msgctxt "shortcut window" msgid "Show Keyboard Shortcuts" msgstr "Gyorsbillentyűk" #: src/exm-help-overlay.blp:34 msgctxt "shortcut window" msgid "Close Window" msgstr "Ablak bezárása" #: src/exm-help-overlay.blp:39 msgctxt "shortcut window" msgid "Quit" msgstr "Kilépés" #: src/exm-help-overlay.blp:45 msgctxt "shortcut window" msgid "Screenshot View" msgstr "Képernyőképek" #: src/exm-help-overlay.blp:48 src/exm-help-overlay.blp:63 msgctxt "shortcut window" msgid "Zoom In" msgstr "Nagyítás" #: src/exm-help-overlay.blp:53 src/exm-help-overlay.blp:68 msgctxt "shortcut window" msgid "Zoom Out" msgstr "Kicsinyítés" #: src/exm-help-overlay.blp:58 msgctxt "shortcut window" msgid "Reset Zoom" msgstr "Visszavonás" #: src/exm-info-bar.blp:28 msgctxt "Number of downloads" msgid "Downloads" msgstr "Letöltve" #: src/exm-info-bar.c:107 msgid "Unsupported" msgstr "Nem támogatott" #: src/exm-install-button.c:127 msgid "Install…" msgstr "Telepítés…" #: src/exm-install-button.c:132 msgid "Installing" msgstr "Telepítés" #: src/exm-install-button.c:136 msgctxt "State" msgid "Installed" msgstr "Telepített" #: src/exm-install-button.c:140 msgid "Unsupported…" msgstr "Nem támogatott…" #: src/exm-installed-page.blp:16 msgid "_Log Out…" msgstr "_Kijelentkezés…" #: src/exm-installed-page.blp:28 msgid "Use Extensions" msgstr "Kiterjesztések engedélyezése" #: src/exm-installed-page.blp:29 msgid "Extensions can cause performance and stability issues" msgstr "Egyes kiterjesztések használata teljesítmény-csökkenést okozhat" #: src/exm-installed-page.blp:34 src/exm-upgrade-assistant.blp:133 msgid "User-Installed Extensions" msgstr "Felhasználó által telepített kiterjesztések" #: src/exm-installed-page.blp:51 src/exm-upgrade-assistant.blp:150 msgid "No User Extensions Installed" msgstr "Nincsenek felhasználó által telepített kiterjesztések" #: src/exm-installed-page.blp:55 msgid "Browse" msgstr "Böngészés" #: src/exm-installed-page.blp:69 src/exm-upgrade-assistant.blp:160 msgid "System Extensions" msgstr "Előtelepített kiterjesztések" #: src/exm-installed-page.blp:86 src/exm-upgrade-assistant.blp:177 msgid "No System Extensions Installed" msgstr "Nincsenek előtelepített kiterjesztések" #. Translators: Text announced by screen readers when interacting with the list of search results #: src/exm-installed-page.blp:111 msgid "Search Results" msgstr "Találatok" #: src/exm-installed-page.blp:124 msgid "Try a different search or search online" msgstr "Próbálja meg újra vagy böngésszen a gyűjteményben" #: src/exm-installed-page.blp:131 msgid "_Search Online" msgstr "_Böngészés" #. Translators: '%d' = number of extensions that will be updated #: src/exm-installed-page.c:298 #, c-format msgid "%d extension will be updated on next login" msgid_plural "%d extensions will be updated on next login" msgstr[0] "" "%d kiterjesztés frissítése ütemezve van a következő bejelentkezéskor" msgstr[1] "" "%d kiterjesztés frissítése ütemezve van a következő bejelentkezéskor" #: src/exm-rating.c:142 #, c-format msgid "%i Star" msgid_plural "%i Stars" msgstr[0] "%i csillag" msgstr[1] "%i csillag" #. Translators: Button's tooltip to zoom out screenshots #: src/exm-screenshot-view.blp:37 msgid "Zoom Out" msgstr "Kicsinyítés" #. Translators: Button's tooltip to zoom in screenshots #: src/exm-screenshot-view.blp:51 msgid "Zoom In" msgstr "Nagyítás" #: src/exm-upgrade-assistant.blp:11 msgid "Upgrade Assistant" msgstr "Frissítési segéd" #: src/exm-upgrade-assistant.blp:66 msgid "_Check Compatibility" msgstr "_Kompatibilitás ellenőrzése" #: src/exm-upgrade-assistant.blp:189 msgid "_Copy to Clipboard" msgstr "_Másolás vágólapra" #: src/exm-upgrade-assistant.c:188 #, c-format msgid "Checked %d/%d Extensions" msgstr "%d/%d kiterjesztés ellenőrizve" #. Set percentage text #: src/exm-upgrade-assistant.c:207 #, c-format msgid "%d%% Compatible" msgstr "%d%% kompatibilis" #: src/exm-upgrade-assistant.c:223 #, c-format msgid "" "GNOME %s supports %d out of %d of the extensions currently " "installed on the system" msgstr "" "A GNOME %s jelenleg %d kiterjesztést támogat a jelen " "rendszerre telepített %d kiterjesztésből" #. Translators: Icon's tooltip when an extension is compatible #: src/exm-upgrade-assistant.c:503 msgid "A compatible version of the extension exists" msgstr "Elérhető kompatibilis változat" #. Translators: Icon's tooltip when an extension is not compatible #: src/exm-upgrade-assistant.c:510 msgid "No compatible version of the extension exists" msgstr "Jelenleg nem elérhető kompatibilis változat" #. Translators: Icon's tooltip when an extension compatibility is unknown #: src/exm-upgrade-assistant.c:517 msgid "" "This extension is not hosted on extensions.gnome.org. Its compatibility " "cannot be determined." msgstr "" "A kiterjesztés nem az extensions.gnome.org-ról származik. A kompatibilitás " "megállapítása nem lehetséges." #: src/exm-upgrade-assistant.c:608 #, c-format msgid "" "You are currently running GNOME %s. Select a version of GNOME below " "and check whether your extensions will continue to be available." msgstr "" "A rendszeren jelenleg a GNOME %s verziója fut. A lenti listán " "kiválaszthatja és ellenőrizheti, hogy az egyes kiterjesztések mely " "verziókkal kompatibilisek." #. Translators: Tooltip of the search icon in the header bar #: src/exm-window.blp:39 msgid "Search Installed Extensions" msgstr "Keresés telepítettek között" #: src/exm-window.blp:48 msgid "Main Menu" msgstr "Menü" #: src/exm-window.blp:59 msgid "Search for installed extensions" msgstr "Keresés telepített kiterjesztések között" #: src/exm-window.blp:71 msgctxt "Navigation" msgid "_Installed" msgstr "_Telepített" #: src/exm-window.blp:80 msgctxt "Navigation" msgid "_Browse" msgstr "_Böngészés" #. Translators: the character preceded by "_" should not be the same #. as others in the same menu #: src/exm-window.blp:108 msgid "Sort _Enabled First" msgstr "_Rendezés állapot szerint" #: src/exm-window.blp:109 msgid "_Show Unsupported" msgstr "Nem támogatotta_k megjelenítése" #: src/exm-window.blp:113 msgid "_Upgrade Assistant" msgstr "_Frissítési segéd" #: src/exm-window.blp:114 msgid "_Keyboard Shortcuts" msgstr "_Gyorsbillentyűk" #: src/exm-window.blp:115 msgid "_About Extension Manager" msgstr "_Névjegy" #: src/exm-window.blp:120 msgid "Uninstall Extension?" msgstr "Eltávolítja a kiterjesztést?" #: src/exm-window.blp:121 msgid "" "The extension's features and functionality will no longer be accessible. Are " "you sure you want to uninstall?" msgstr "" "Az eltávolítást követően a kiterjesztés funkciói nem lesznek a továbbiakban " "elérhetőek. Folytatja?" #: src/exm-window.blp:126 msgid "_No" msgstr "_Nem" #: src/exm-window.blp:127 msgid "_Yes" msgstr "_Igen" #: src/exm-window.blp:132 msgid "Unsupported Extension" msgstr "Nem támogatott kiterjesztés" #: src/exm-window.blp:133 msgid "" "This extension does not support your GNOME Shell version. It may cause " "errors if installed." msgstr "" "Ez a kiterjesztés nem kompatibilis a telepített GNOME verzióval. Használata " "hibákat okozhat." #: src/exm-window.blp:139 msgid "_Install Anyway" msgstr "_Telepítés mindenképp" #: src/exm-window.blp:140 msgid "_Go Back" msgstr "_Vissza" #: src/exm-window.c:348 msgid "_Details" msgstr "_Részletek" #: src/web/exm-request-handler.c:99 msgid "" "Check GNOME infrastructure status " "and try again later" msgstr "" "Ellenőrizze a GNOME infrastructure " "status felületét, majd próbálja újra később" #: src/web/exm-request-handler.c:100 msgid "Check your network status and try again" msgstr "Ellenőrizze a hálózat állapotát, majd próbálja újra" #~ msgid "Comments" #~ msgstr "Visszajelzések" #~ msgid "Loading Comments" #~ msgstr "Visszajelzések betöltése" #~ msgid "User Reviews" #~ msgstr "Felhasználói értékelések" #~ msgid "No comments yet" #~ msgstr "Nincsenek értékelések" #~ msgid "" #~ "This extension could be activated in session modes such as the login " #~ "screen or the lock screen" #~ msgstr "" #~ "Ez a kiterjesztés a bejelentkező képernyőre vagy a zároló képernyőre van " #~ "hatással" #, c-format #~ msgid "%s by %s" #~ msgstr "%s %s jóvoltából" #, fuzzy #~| msgid "Updates are available" #~ msgid "Updates Available" #~ msgstr "Frissítés érhető el" #~ msgid "Supported" #~ msgstr "Támogatott" #~ msgid "Unknown" #~ msgstr "Ismeretlen" #~ msgid "A utility for managing GNOME Shell Extensions" #~ msgstr "Alkalmazás GNOME Shell kiterjesztések kezeléséhez" #, c-format #~ msgid "e.g. “%s”" #~ msgstr "például „%s”" #~ msgid "This extension is incompatible with your current version of GNOME." #~ msgstr "Ez a kiterjesztés nem kompatibilis a telepített GNOME verzióval." #~ msgid "An error occurred." #~ msgstr "Hiba történt." #~ msgid "Return to view" #~ msgstr "Visszatérés a részletekhez" extension-manager-0.6.3/po/id_ID.po000066400000000000000000000460661477302130300171060ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the extension-manager package. # Reza Almanda , 2024. msgid "" msgstr "" "Project-Id-Version: extension-manager\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-03-06 16:36+0000\n" "PO-Revision-Date: 2024-09-09 23:09+0000\n" "Last-Translator: Reza Almanda \n" "Language-Team: Indonesian \n" "Language: id_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: Weblate 5.8-dev\n" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:2 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:6 #: src/exm-window.blp:7 msgid "Extension Manager" msgstr "Pengelola Ekstensi" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:11 msgid "Manage GNOME Shell Extensions" msgstr "Kelola Ekstensi Shell GNOME" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #. Make sure to leave the original strings and add your translations afterwards, so that users can search both in English and your language. #: data/com.mattjakeman.ExtensionManager.desktop.in.in:14 msgid "extension;manager;shell;" msgstr "extension;manager;shell;" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:7 msgid "Browse, install, and manage GNOME Shell Extensions" msgstr "Jelajahi, instal, dan kelola Ekstensi Shell GNOME" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:13 msgid "A utility for browsing and installing GNOME Shell Extensions." msgstr "Sebuah alat untuk menjelajah dan memasang Ekstensi GNOME Shell." #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:14 msgid "Features:" msgstr "Fitur:" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:16 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:26 msgid "Browse extensions.gnome.org right inside the app" msgstr "Jelajah extensions.gnome.org di dalam aplikasi" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:17 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:22 msgid "Manage the extensions you already have installed" msgstr "Kelola ekstensi yang telah Anda pasang" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:30 msgid "See all the details of your extensions" msgstr "Lihat semua detail ekstensi Anda" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:34 msgid "Check your extensions compatibility with the next version of GNOME" msgstr "Periksa kompatibilitas ekstensi Anda dengan versi GNOME berikutnya" #: src/exm-application.c:201 msgid "Browse, install, and manage GNOME Shell Extensions." msgstr "Jelajahi, instal, dan kelola Ekstensi Shell GNOME." #. Translators: Use 'Name email@domain.com' or 'Name https://website.example' (without single quotes). Do not delete existing names, write yours on a new line. #: src/exm-application.c:204 msgid "translator-credits" msgstr "neko " #: src/exm-browse-page.blp:16 msgid "Search for Extensions" msgstr "Cari Ekstensi" #: src/exm-browse-page.blp:17 msgid "" "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell Extensions" msgstr "" "Masukkan kata kunci untuk mencari 'extensions.gnome.org' untuk Ekstensi " "GNOME Shell" #: src/exm-browse-page.blp:47 msgid "Relevance" msgstr "Relevansi" #: src/exm-browse-page.blp:48 msgctxt "Sort search results" msgid "Downloads" msgstr "Unduhan" #: src/exm-browse-page.blp:49 msgid "Recent" msgstr "Terkini" #: src/exm-browse-page.blp:50 src/exm-detail-view.blp:113 msgid "Name" msgstr "Nama" #: src/exm-browse-page.blp:57 msgid "Sort search results" msgstr "Menyortir hasil pencarian" #: src/exm-browse-page.blp:103 msgid "_Load More Results" msgstr "_Muat Lebih Banyak Hasil" #: src/exm-browse-page.blp:137 src/exm-installed-page.blp:123 msgid "No Results Found" msgstr "Tidak Ada Hasil Yang Ditemukan" #: src/exm-browse-page.blp:144 msgid "Try a different search" msgstr "" #: src/exm-browse-page.blp:178 src/exm-comment-dialog.blp:34 #: src/exm-detail-view.blp:49 src/exm-detail-view.blp:291 #: src/exm-upgrade-assistant.blp:100 msgid "Connection Error" msgstr "" #: src/exm-comment-dialog.blp:13 src/exm-detail-view.blp:248 #, fuzzy #| msgid "Loading Comments" msgid "Reviews and Comments" msgstr "Memuat Komentar" #: src/exm-comment-dialog.blp:25 #, fuzzy #| msgid "Loading…" msgid "Loading" msgstr "Memuat…" #: src/exm-comment-tile.blp:30 src/exm-detail-view.blp:127 msgid "Author" msgstr "Pengarang" #: src/exm-detail-view.blp:40 msgid "Loading Details" msgstr "Memuat Detil" #: src/exm-detail-view.blp:59 src/exm-window.c:347 msgid "An Error Occurred" msgstr "Sebuah Error Terjadi" #: src/exm-detail-view.blp:60 #, fuzzy #| msgid "Displays user and system extensions separately" msgid "No extension details available" msgstr "Tampilkan ekstensi pengguna dan sistem secara terpisah" #: src/exm-detail-view.blp:154 msgid "Enlarge Image" msgstr "Perbesar Gambar" #: src/exm-detail-view.blp:172 src/exm-extension-row.blp:89 msgid "Description" msgstr "Deskripsi" #: src/exm-detail-view.blp:195 msgid "Links" msgstr "Tautan" #: src/exm-detail-view.blp:203 msgid "Homepage" msgstr "Beranda" #: src/exm-detail-view.blp:219 msgid "Donate" msgstr "Donasi" #: src/exm-detail-view.blp:228 msgid "View on Extensions" msgstr "Lihat dalam Extensions" #: src/exm-detail-view.blp:271 msgid "Reviews and comments are disabled for this extension" msgstr "" #: src/exm-detail-view.blp:314 msgid "There are no reviews or comments" msgstr "" #: src/exm-detail-view.blp:343 #, fuzzy #| msgid "_Show All Reviews" msgid "_Show All" msgstr "_Tampilkan Semua Ulasan" #. Translators: '%s' = extension name #: src/exm-detail-view.c:445 #, c-format msgid "%s Icon" msgstr "" #. Translators: '%s' = extension name #: src/exm-detail-view.c:478 #, c-format msgid "%s Screenshot" msgstr "" #: src/exm-error-dialog.blp:7 msgid "Error Report" msgstr "Laporan Error" #: src/exm-error-dialog.blp:22 msgid "An unexpected error occurred in Extension Manager" msgstr "Terjadi error tak terduga di Extension Manager" #: src/exm-error-dialog.blp:36 #, fuzzy #| msgid "_Copy to Clipboard" msgid "Copy to Clipboard" msgstr "_Salin ke Papan Klip" #: src/exm-error-dialog.blp:77 msgid "_New Issue" msgstr "_Isu Baru" #. Success indicator #: src/exm-error-dialog.c:125 src/exm-upgrade-assistant.c:347 msgid "Copied" msgstr "Disalin" #: src/exm-error-dialog.c:173 msgid "Please open a new issue and attach the following information:" msgstr "Silakan buka masalah baru dan lampirkan informasi berikut:" #. Translators: '%s' = Name of Distributor (e.g. "Packager123") #: src/exm-error-dialog.c:177 #, c-format msgid "" "You are using a third-party build of Extension Manager. Please contact the package distributor (%s) first before " "filing an issue. Be sure to attach the following information:" msgstr "" "Anda menggunakan Extension Manager versi pihak ketiga. Harap menghubungi distributor paket (%s) terlebih dahulu " "sebelum mengajukan masalah. Pastikan untuk melampirkan informasi berikut ini:" #. Translators: Button's tooltip to open extension's preferences dialog #: src/exm-extension-row.blp:28 msgid "Open extension preferences" msgstr "Buka preferensi ekstensi" #. Translators: Icon's tooltip when an extension has an error #: src/exm-extension-row.blp:46 msgid "An error occurred while loading this extension" msgstr "Terjadi error saat memuat ekstensi ini" #. Translators: Icon's tooltip when an extension is incompatible #: src/exm-extension-row.blp:63 src/exm-install-button.c:117 #, fuzzy #| msgid "This extension is incompatible with your current version of GNOME." msgid "This extension is incompatible with your current version of GNOME" msgstr "Ekstensi ini tidak cocok untuk versi GNOME kamu." #. Translators: Icon's tooltip when an extension update is available #: src/exm-extension-row.blp:80 msgid "A newer version of this extension is available" msgstr "" #: src/exm-extension-row.blp:98 src/exm-info-bar.blp:50 msgid "Version" msgstr "" #: src/exm-extension-row.blp:107 msgid "Session Modes" msgstr "" #: src/exm-extension-row.blp:137 msgid "Error" msgstr "" #: src/exm-extension-row.blp:158 msgid "See Details" msgstr "Lihat Detail" #: src/exm-extension-row.blp:169 #, fuzzy #| msgid "Remove" msgid "Remove…" msgstr "Hapus" #: src/exm-extension-row.c:175 msgid "Unlock Dialog" msgstr "" #. Translators: GNOME Display Manager #: src/exm-extension-row.c:181 msgid "GDM" msgstr "" #. Translators: Label when an extension runs on both, login and lock screens #: src/exm-extension-row.c:189 msgid "" "This extension will run while the screen is locked and no user is logged in" msgstr "" #. Translators: Label when an extension runs on the lock screen #: src/exm-extension-row.c:194 msgid "This extension will run while the screen is locked" msgstr "" #. Translators: Label when an extension runs on the login screen #: src/exm-extension-row.c:199 msgid "This extension will run while no user is logged in" msgstr "" #: src/exm-help-overlay.blp:11 msgctxt "shortcut window" msgid "General" msgstr "Umum" #: src/exm-help-overlay.blp:14 #, fuzzy #| msgid "Installed" msgctxt "shortcut window" msgid "Show Installed Page" msgstr "Terpasang" #: src/exm-help-overlay.blp:19 msgctxt "shortcut window" msgid "Show Browse Page" msgstr "" #: src/exm-help-overlay.blp:24 msgctxt "shortcut window" msgid "Toggle Search" msgstr "" #: src/exm-help-overlay.blp:29 #, fuzzy #| msgid "Keyboard Shortcuts" msgctxt "shortcut window" msgid "Show Keyboard Shortcuts" msgstr "Pintasan Keyboard" #: src/exm-help-overlay.blp:34 msgctxt "shortcut window" msgid "Close Window" msgstr "" #: src/exm-help-overlay.blp:39 msgctxt "shortcut window" msgid "Quit" msgstr "Keluar" #: src/exm-help-overlay.blp:45 msgctxt "shortcut window" msgid "Screenshot View" msgstr "" #: src/exm-help-overlay.blp:48 src/exm-help-overlay.blp:63 msgctxt "shortcut window" msgid "Zoom In" msgstr "" #: src/exm-help-overlay.blp:53 src/exm-help-overlay.blp:68 msgctxt "shortcut window" msgid "Zoom Out" msgstr "" #: src/exm-help-overlay.blp:58 msgctxt "shortcut window" msgid "Reset Zoom" msgstr "" #: src/exm-info-bar.blp:28 #, fuzzy #| msgid "Downloads" msgctxt "Number of downloads" msgid "Downloads" msgstr "Unduhan" #: src/exm-info-bar.c:107 msgid "Unsupported" msgstr "Tidak didukung" #: src/exm-install-button.c:127 #, fuzzy #| msgid "Install" msgid "Install…" msgstr "Pasang" #: src/exm-install-button.c:132 #, fuzzy #| msgid "Installed" msgid "Installing" msgstr "Terpasang" #: src/exm-install-button.c:136 #, fuzzy #| msgid "Installed" msgctxt "State" msgid "Installed" msgstr "Terpasang" #: src/exm-install-button.c:140 #, fuzzy #| msgid "Unsupported" msgid "Unsupported…" msgstr "Tidak didukung" #: src/exm-installed-page.blp:16 msgid "_Log Out…" msgstr "" #: src/exm-installed-page.blp:28 #, fuzzy #| msgid "System Extensions" msgid "Use Extensions" msgstr "Ekstensi Sistem" #: src/exm-installed-page.blp:29 #, fuzzy #| msgid "Performance and stability" msgid "Extensions can cause performance and stability issues" msgstr "Performa dan stabilitas" #: src/exm-installed-page.blp:34 src/exm-upgrade-assistant.blp:133 msgid "User-Installed Extensions" msgstr "Ekstensi Yang Dipasang Pengguna" #: src/exm-installed-page.blp:51 src/exm-upgrade-assistant.blp:150 #, fuzzy #| msgid "Displays user and system extensions separately" msgid "No User Extensions Installed" msgstr "Tampilkan ekstensi pengguna dan sistem secara terpisah" #: src/exm-installed-page.blp:55 msgid "Browse" msgstr "Jelajah" #: src/exm-installed-page.blp:69 src/exm-upgrade-assistant.blp:160 msgid "System Extensions" msgstr "Ekstensi Sistem" #: src/exm-installed-page.blp:86 src/exm-upgrade-assistant.blp:177 #, fuzzy #| msgid "Displays user and system extensions separately" msgid "No System Extensions Installed" msgstr "Tampilkan ekstensi pengguna dan sistem secara terpisah" #. Translators: Text announced by screen readers when interacting with the list of search results #: src/exm-installed-page.blp:111 #, fuzzy #| msgid "Sort search results" msgid "Search Results" msgstr "Menyortir hasil pencarian" #: src/exm-installed-page.blp:124 msgid "Try a different search or search online" msgstr "" #: src/exm-installed-page.blp:131 msgid "_Search Online" msgstr "" #. Translators: '%d' = number of extensions that will be updated #: src/exm-installed-page.c:298 #, c-format msgid "%d extension will be updated on next login" msgid_plural "%d extensions will be updated on next login" msgstr[0] "" #: src/exm-rating.c:142 #, c-format msgid "%i Star" msgid_plural "%i Stars" msgstr[0] "" #. Translators: Button's tooltip to zoom out screenshots #: src/exm-screenshot-view.blp:37 msgid "Zoom Out" msgstr "" #. Translators: Button's tooltip to zoom in screenshots #: src/exm-screenshot-view.blp:51 msgid "Zoom In" msgstr "" #: src/exm-upgrade-assistant.blp:11 msgid "Upgrade Assistant" msgstr "" #: src/exm-upgrade-assistant.blp:66 msgid "_Check Compatibility" msgstr "" #: src/exm-upgrade-assistant.blp:189 msgid "_Copy to Clipboard" msgstr "_Salin ke Papan Klip" #: src/exm-upgrade-assistant.c:188 #, fuzzy, c-format #| msgid "Search for extensions" msgid "Checked %d/%d Extensions" msgstr "Cari ekstensi" #. Set percentage text #: src/exm-upgrade-assistant.c:207 #, c-format msgid "%d%% Compatible" msgstr "" #: src/exm-upgrade-assistant.c:223 #, c-format msgid "" "GNOME %s supports %d out of %d of the extensions currently " "installed on the system" msgstr "" #. Translators: Icon's tooltip when an extension is compatible #: src/exm-upgrade-assistant.c:503 msgid "A compatible version of the extension exists" msgstr "" #. Translators: Icon's tooltip when an extension is not compatible #: src/exm-upgrade-assistant.c:510 msgid "No compatible version of the extension exists" msgstr "" #. Translators: Icon's tooltip when an extension compatibility is unknown #: src/exm-upgrade-assistant.c:517 msgid "" "This extension is not hosted on extensions.gnome.org. Its compatibility " "cannot be determined." msgstr "" #: src/exm-upgrade-assistant.c:608 #, c-format msgid "" "You are currently running GNOME %s. Select a version of GNOME below " "and check whether your extensions will continue to be available." msgstr "" #. Translators: Tooltip of the search icon in the header bar #: src/exm-window.blp:39 #, fuzzy #| msgid "User-Installed Extensions" msgid "Search Installed Extensions" msgstr "Ekstensi Yang Dipasang Pengguna" #: src/exm-window.blp:48 msgid "Main Menu" msgstr "" #: src/exm-window.blp:59 #, fuzzy #| msgid "Search for Extensions" msgid "Search for installed extensions" msgstr "Cari Ekstensi" #: src/exm-window.blp:71 #, fuzzy #| msgid "Installed" msgctxt "Navigation" msgid "_Installed" msgstr "Terpasang" #: src/exm-window.blp:80 #, fuzzy #| msgid "Browse" msgctxt "Navigation" msgid "_Browse" msgstr "Jelajah" #. Translators: the character preceded by "_" should not be the same #. as others in the same menu #: src/exm-window.blp:108 msgid "Sort _Enabled First" msgstr "" #: src/exm-window.blp:109 #, fuzzy #| msgid "Unsupported" msgid "_Show Unsupported" msgstr "Tidak didukung" #: src/exm-window.blp:113 msgid "_Upgrade Assistant" msgstr "" #: src/exm-window.blp:114 #, fuzzy #| msgid "Keyboard Shortcuts" msgid "_Keyboard Shortcuts" msgstr "Pintasan Keyboard" #: src/exm-window.blp:115 #, fuzzy #| msgid "About Extension Manager" msgid "_About Extension Manager" msgstr "Tentang Pengelola Ekstensi" #: src/exm-window.blp:120 #, fuzzy #| msgid "User-Installed Extensions" msgid "Uninstall Extension?" msgstr "Ekstensi Yang Dipasang Pengguna" #: src/exm-window.blp:121 msgid "" "The extension's features and functionality will no longer be accessible. Are " "you sure you want to uninstall?" msgstr "" #: src/exm-window.blp:126 msgid "_No" msgstr "" #: src/exm-window.blp:127 msgid "_Yes" msgstr "" #: src/exm-window.blp:132 #, fuzzy #| msgid "Supported Versions" msgid "Unsupported Extension" msgstr "Versi Yang Didukung" #: src/exm-window.blp:133 msgid "" "This extension does not support your GNOME Shell version. It may cause " "errors if installed." msgstr "" #: src/exm-window.blp:139 #, fuzzy #| msgid "Install" msgid "_Install Anyway" msgstr "Pasang" #: src/exm-window.blp:140 msgid "_Go Back" msgstr "" #: src/exm-window.c:348 #, fuzzy #| msgid "See Details" msgid "_Details" msgstr "Lihat Detail" #: src/web/exm-request-handler.c:99 msgid "" "Check GNOME infrastructure status " "and try again later" msgstr "" #: src/web/exm-request-handler.c:100 msgid "Check your network status and try again" msgstr "" #~ msgid "Comments" #~ msgstr "Komentar" #~ msgid "User Reviews" #~ msgstr "Ulasan Pengguna" #~ msgid "No comments yet" #~ msgstr "Belum ada komentar" #, fuzzy #~| msgid "Unsupported" #~ msgid "Supported" #~ msgstr "Tidak didukung" #~ msgid "A utility for managing GNOME Shell Extensions" #~ msgstr "Sebuah alat untuk mengelola Ekstensi GNOME Shell" #~ msgid "This extension is incompatible with your current version of GNOME." #~ msgstr "Ekstensi ini tidak cocok untuk versi GNOME kamu." #, fuzzy #~| msgid "An Error Occurred" #~ msgid "An error occurred." #~ msgstr "Sebuah Error Terjadi" #~ msgid "Matthew Jakeman" #~ msgstr "Matthew Jakeman" #~ msgid "Fixes a crash that sometimes occurs while uninstalling an extension" #~ msgstr "" #~ "Memperbaiki crash yang kadang terjadi selama mencopot sebuah ekstensi" #~ msgid "The first feature update to extension-manager. Highlights include:" #~ msgstr "Pembaruan fitur pertama ke pengelola ekstensi. Sorotan meliputi:" #~ msgid "Dark theme and support for overriding the system colour scheme" #~ msgstr "Tema gelap dan dukungan untuk mengesampingkan skema warna sistem" #~ msgid "Shows screenshots in extension listings" #~ msgstr "Tampilkan tangkapan layar di cantuman ekstensi" #~ msgid "Shell version compatibility check" #~ msgstr "Pengecekan kecocokan versi shell" #~ msgid "Localised into seven languages" #~ msgstr "Dilokalisasi ke tujuh bahasa" #~ msgid "Global extension on/off toggle" #~ msgstr "Pengalih aktif/nonaktif ekstensi global" #~ msgid "Colour Scheme Preference" #~ msgstr "Preferensi Skema Warna" #~ msgid "" #~ "Whether to follow the system colour scheme or force either light or dark " #~ "mode." #~ msgstr "" #~ "Apakah akan mengikuti skema warna sistem atau memaksa mode terang atau " #~ "gelap." #~ msgid "" #~ "A very simple tool for browsing, downloading, and managing GNOME shell " #~ "extensions." #~ msgstr "" #~ "Sebuah alat yang sangat sederhana untuk menjelajah, mengunduh, dan " #~ "mengelola ekstensi shell GNOME." #~ msgid "e.g. \"Blur my Shell\"" #~ msgstr "contoh \"Blur my Shell\"" #~ msgid "Popularity" #~ msgstr "Kepopuleran" #~ msgid "Theme" #~ msgstr "Tema" #~ msgid "Follow System" #~ msgstr "Ikuti Sistem" #~ msgid "Light" #~ msgstr "Terang" #~ msgid "Dark" #~ msgstr "Gelap" #~ msgid "Are you sure you want to uninstall?" #~ msgstr "Apa Anda yakin Anda ingin mencopot?" #~ msgctxt "shortcut window" #~ msgid "Show Shortcuts" #~ msgstr "Tunjukan Pintasan" extension-manager-0.6.3/po/it.po000066400000000000000000000547411477302130300165510ustar00rootroot00000000000000# Italian translation for extension-manager. # Copyright (C) 2022 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the extension-manager package. # musiclover , 2022. # albanobattistella , 2024, 2025. # Óscar Fernández Díaz , 2025. msgid "" msgstr "" "Project-Id-Version: extension-manager\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-03-06 16:36+0000\n" "PO-Revision-Date: 2025-03-02 20:07+0000\n" "Last-Translator: albanobattistella \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: Weblate 5.10.3-dev\n" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:2 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:6 #: src/exm-window.blp:7 msgid "Extension Manager" msgstr "Gestore delle estensioni" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:11 msgid "Manage GNOME Shell Extensions" msgstr "Gestisci le estensioni di GNOME" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #. Make sure to leave the original strings and add your translations afterwards, so that users can search both in English and your language. #: data/com.mattjakeman.ExtensionManager.desktop.in.in:14 msgid "extension;manager;shell;" msgstr "estensione;gestore;shell;" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:7 msgid "Browse, install, and manage GNOME Shell Extensions" msgstr "Sfoglia, installa e gestisci le estensioni di GNOME" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:13 msgid "A utility for browsing and installing GNOME Shell Extensions." msgstr "Uno strumento per cercare e installare estensioni per GNOME." #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:14 msgid "Features:" msgstr "Funzionalità:" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:16 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:26 msgid "Browse extensions.gnome.org right inside the app" msgstr "Sfoglia extensions.gnome.org direttamente nell'applicazione" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:17 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:22 msgid "Manage the extensions you already have installed" msgstr "Gestisci le estensioni già installate" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:30 msgid "See all the details of your extensions" msgstr "Visualizza tutti i dettagli delle tue estensioni" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:34 msgid "Check your extensions compatibility with the next version of GNOME" msgstr "" "Controlla la compatibilità delle tue estensioni con la prossima versione di " "GNOME" #: src/exm-application.c:201 msgid "Browse, install, and manage GNOME Shell Extensions." msgstr "Sfoglia, installa e gestisci le estensioni di GNOME." #. Translators: Use 'Name email@domain.com' or 'Name https://website.example' (without single quotes). Do not delete existing names, write yours on a new line. #: src/exm-application.c:204 msgid "translator-credits" msgstr "Musiclover382 " #: src/exm-browse-page.blp:16 msgid "Search for Extensions" msgstr "Cerca estensioni" #: src/exm-browse-page.blp:17 msgid "" "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell Extensions" msgstr "Inserire un termine per cercare estensioni su 'extensions.gnome.org'" #: src/exm-browse-page.blp:47 msgid "Relevance" msgstr "Rilevanza" #: src/exm-browse-page.blp:48 msgctxt "Sort search results" msgid "Downloads" msgstr "Download" #: src/exm-browse-page.blp:49 msgid "Recent" msgstr "Recenti" #: src/exm-browse-page.blp:50 src/exm-detail-view.blp:113 msgid "Name" msgstr "Nome" #: src/exm-browse-page.blp:57 msgid "Sort search results" msgstr "Ordinamento dei risultati di ricerca" #: src/exm-browse-page.blp:103 msgid "_Load More Results" msgstr "Carica più risultati" #: src/exm-browse-page.blp:137 src/exm-installed-page.blp:123 msgid "No Results Found" msgstr "Nessun risultato" #: src/exm-browse-page.blp:144 msgid "Try a different search" msgstr "Prova una ricerca diversa" #: src/exm-browse-page.blp:178 src/exm-comment-dialog.blp:34 #: src/exm-detail-view.blp:49 src/exm-detail-view.blp:291 #: src/exm-upgrade-assistant.blp:100 msgid "Connection Error" msgstr "Errore di connessione" #: src/exm-comment-dialog.blp:13 src/exm-detail-view.blp:248 msgid "Reviews and Comments" msgstr "Recensioni e commenti" #: src/exm-comment-dialog.blp:25 msgid "Loading" msgstr "Caricamento" #: src/exm-comment-tile.blp:30 src/exm-detail-view.blp:127 msgid "Author" msgstr "Autore" #: src/exm-detail-view.blp:40 msgid "Loading Details" msgstr "Caricamento dei dettagli" #: src/exm-detail-view.blp:59 src/exm-window.c:347 msgid "An Error Occurred" msgstr "Si è verificato un errore" #: src/exm-detail-view.blp:60 msgid "No extension details available" msgstr "Nessun dettaglio disponibile sull'estensione" #: src/exm-detail-view.blp:154 msgid "Enlarge Image" msgstr "Ingrandisci immagine" #: src/exm-detail-view.blp:172 src/exm-extension-row.blp:89 msgid "Description" msgstr "Descrizione" #: src/exm-detail-view.blp:195 msgid "Links" msgstr "Link" #: src/exm-detail-view.blp:203 msgid "Homepage" msgstr "Home page" #: src/exm-detail-view.blp:219 msgid "Donate" msgstr "Donare" #: src/exm-detail-view.blp:228 msgid "View on Extensions" msgstr "Pagina di GNOME Extensions" #: src/exm-detail-view.blp:271 msgid "Reviews and comments are disabled for this extension" msgstr "Recensioni e commenti sono disabilitati per questa estensione" #: src/exm-detail-view.blp:314 msgid "There are no reviews or comments" msgstr "Non ci sono recensioni o commenti" #: src/exm-detail-view.blp:343 msgid "_Show All" msgstr "_Mostra tutto" #. Translators: '%s' = extension name #: src/exm-detail-view.c:445 #, c-format msgid "%s Icon" msgstr "%s Icona" #. Translators: '%s' = extension name #: src/exm-detail-view.c:478 #, c-format msgid "%s Screenshot" msgstr "%s Screenshot" #: src/exm-error-dialog.blp:7 msgid "Error Report" msgstr "Rapporto di errore" #: src/exm-error-dialog.blp:22 msgid "An unexpected error occurred in Extension Manager" msgstr "Si è verificato un errore imprevisto nel gestore delle estensioni" #: src/exm-error-dialog.blp:36 msgid "Copy to Clipboard" msgstr "Copia negli appunti" #: src/exm-error-dialog.blp:77 msgid "_New Issue" msgstr "_Nuovo problema" #. Success indicator #: src/exm-error-dialog.c:125 src/exm-upgrade-assistant.c:347 msgid "Copied" msgstr "Copiato" #: src/exm-error-dialog.c:173 msgid "Please open a new issue and attach the following information:" msgstr "Apri una nuova discussione e allega le seguenti informazioni:" #. Translators: '%s' = Name of Distributor (e.g. "Packager123") #: src/exm-error-dialog.c:177 #, c-format msgid "" "You are using a third-party build of Extension Manager. Please contact the package distributor (%s) first before " "filing an issue. Be sure to attach the following information:" msgstr "" "Stai utilizzando una build di terze parti del gestore delle estensioni. Per " "favore contatta prima il distributore del pacchetto " "(%s) prima di segnalare un problema. Assicurati di allegare le " "seguenti informazioni:" #. Translators: Button's tooltip to open extension's preferences dialog #: src/exm-extension-row.blp:28 msgid "Open extension preferences" msgstr "Apri le preferenze dell'estensione" #. Translators: Icon's tooltip when an extension has an error #: src/exm-extension-row.blp:46 msgid "An error occurred while loading this extension" msgstr "Si è verificato un errore durante il caricamento dell'estensione" #. Translators: Icon's tooltip when an extension is incompatible #: src/exm-extension-row.blp:63 src/exm-install-button.c:117 msgid "This extension is incompatible with your current version of GNOME" msgstr "L'estensione non è compatibile con la versione attuale di GNOME" #. Translators: Icon's tooltip when an extension update is available #: src/exm-extension-row.blp:80 msgid "A newer version of this extension is available" msgstr "È disponibile una nuova versione di questa estensione" #: src/exm-extension-row.blp:98 src/exm-info-bar.blp:50 msgid "Version" msgstr "Versione" #: src/exm-extension-row.blp:107 msgid "Session Modes" msgstr "Modalità di sessione" #: src/exm-extension-row.blp:137 msgid "Error" msgstr "Errore" #: src/exm-extension-row.blp:158 msgid "See Details" msgstr "Dettagli" #: src/exm-extension-row.blp:169 msgid "Remove…" msgstr "Rimuovi…" #: src/exm-extension-row.c:175 msgid "Unlock Dialog" msgstr "Sblocca dialogo" #. Translators: GNOME Display Manager #: src/exm-extension-row.c:181 msgid "GDM" msgstr "GDM" #. Translators: Label when an extension runs on both, login and lock screens #: src/exm-extension-row.c:189 msgid "" "This extension will run while the screen is locked and no user is logged in" msgstr "" "Questa estensione verrà eseguita mentre lo schermo è bloccato e nessun " "utente è connesso" #. Translators: Label when an extension runs on the lock screen #: src/exm-extension-row.c:194 msgid "This extension will run while the screen is locked" msgstr "Questa estensione verrà eseguita mentre lo schermo è bloccato" #. Translators: Label when an extension runs on the login screen #: src/exm-extension-row.c:199 msgid "This extension will run while no user is logged in" msgstr "Questa estensione verrà eseguita quando nessun utente è connesso" #: src/exm-help-overlay.blp:11 msgctxt "shortcut window" msgid "General" msgstr "Generale" #: src/exm-help-overlay.blp:14 msgctxt "shortcut window" msgid "Show Installed Page" msgstr "Mostra la pagina installata" #: src/exm-help-overlay.blp:19 msgctxt "shortcut window" msgid "Show Browse Page" msgstr "Mostra la pagina Sfoglia" #: src/exm-help-overlay.blp:24 msgctxt "shortcut window" msgid "Toggle Search" msgstr "Attiva ricerca" #: src/exm-help-overlay.blp:29 msgctxt "shortcut window" msgid "Show Keyboard Shortcuts" msgstr "Mostra scorciatoie da tastiera" #: src/exm-help-overlay.blp:34 msgctxt "shortcut window" msgid "Close Window" msgstr "Chiudi finestra" #: src/exm-help-overlay.blp:39 msgctxt "shortcut window" msgid "Quit" msgstr "Esci" #: src/exm-help-overlay.blp:45 msgctxt "shortcut window" msgid "Screenshot View" msgstr "Visualizza screenshot" #: src/exm-help-overlay.blp:48 src/exm-help-overlay.blp:63 msgctxt "shortcut window" msgid "Zoom In" msgstr "Ingrandisci" #: src/exm-help-overlay.blp:53 src/exm-help-overlay.blp:68 msgctxt "shortcut window" msgid "Zoom Out" msgstr "Rimpicciolisci" #: src/exm-help-overlay.blp:58 msgctxt "shortcut window" msgid "Reset Zoom" msgstr "Resetta zoom" #: src/exm-info-bar.blp:28 msgctxt "Number of downloads" msgid "Downloads" msgstr "Download" #: src/exm-info-bar.c:107 msgid "Unsupported" msgstr "Non compatibile" #: src/exm-install-button.c:127 msgid "Install…" msgstr "Installa…" #: src/exm-install-button.c:132 msgid "Installing" msgstr "Installazione" #: src/exm-install-button.c:136 msgctxt "State" msgid "Installed" msgstr "Installata" #: src/exm-install-button.c:140 msgid "Unsupported…" msgstr "Non compatibile…" #: src/exm-installed-page.blp:16 msgid "_Log Out…" msgstr "_Termina sessione…" #: src/exm-installed-page.blp:28 msgid "Use Extensions" msgstr "Estensioni" #: src/exm-installed-page.blp:29 msgid "Extensions can cause performance and stability issues" msgstr "Le estensioni possono causare problemi di prestazioni e stabilità" #: src/exm-installed-page.blp:34 src/exm-upgrade-assistant.blp:133 msgid "User-Installed Extensions" msgstr "Estensioni installate dall'utente" #: src/exm-installed-page.blp:51 src/exm-upgrade-assistant.blp:150 msgid "No User Extensions Installed" msgstr "Nessuna estensione utente installata" #: src/exm-installed-page.blp:55 msgid "Browse" msgstr "Sfoglia" #: src/exm-installed-page.blp:69 src/exm-upgrade-assistant.blp:160 msgid "System Extensions" msgstr "Estensioni integrate" #: src/exm-installed-page.blp:86 src/exm-upgrade-assistant.blp:177 msgid "No System Extensions Installed" msgstr "Nessuna estensione di sistema installata" #. Translators: Text announced by screen readers when interacting with the list of search results #: src/exm-installed-page.blp:111 msgid "Search Results" msgstr "Risultati della ricerca" #: src/exm-installed-page.blp:124 msgid "Try a different search or search online" msgstr "Prova una ricerca diversa o cerca online" #: src/exm-installed-page.blp:131 msgid "_Search Online" msgstr "_Cerca online" #. Translators: '%d' = number of extensions that will be updated #: src/exm-installed-page.c:298 #, c-format msgid "%d extension will be updated on next login" msgid_plural "%d extensions will be updated on next login" msgstr[0] "%d l' estensioni sarà aggiornata al prossimo accesso" msgstr[1] "%d le estensioni saranno aggiornate al prossimo accesso" #: src/exm-rating.c:142 #, c-format msgid "%i Star" msgid_plural "%i Stars" msgstr[0] "%i Stella" msgstr[1] "%i Stelle" #. Translators: Button's tooltip to zoom out screenshots #: src/exm-screenshot-view.blp:37 msgid "Zoom Out" msgstr "Rimpicciolisci" #. Translators: Button's tooltip to zoom in screenshots #: src/exm-screenshot-view.blp:51 msgid "Zoom In" msgstr "Ingrandisci" #: src/exm-upgrade-assistant.blp:11 msgid "Upgrade Assistant" msgstr "Assistente di aggiornamento" #: src/exm-upgrade-assistant.blp:66 msgid "_Check Compatibility" msgstr "_Verifica compatibilità" #: src/exm-upgrade-assistant.blp:189 msgid "_Copy to Clipboard" msgstr "_Copia negli appunti" #: src/exm-upgrade-assistant.c:188 #, c-format msgid "Checked %d/%d Extensions" msgstr "Estensioni %d/%d controllate" #. Set percentage text #: src/exm-upgrade-assistant.c:207 #, c-format msgid "%d%% Compatible" msgstr "%d%% compatibile" #: src/exm-upgrade-assistant.c:223 #, c-format msgid "" "GNOME %s supports %d out of %d of the extensions currently " "installed on the system" msgstr "" "GNOME %s supporta %d su %d delle estensioni attualmente " "installate sul sistema" #. Translators: Icon's tooltip when an extension is compatible #: src/exm-upgrade-assistant.c:503 msgid "A compatible version of the extension exists" msgstr "Esiste una versione compatibile dell'estensione" #. Translators: Icon's tooltip when an extension is not compatible #: src/exm-upgrade-assistant.c:510 msgid "No compatible version of the extension exists" msgstr "Non è disponibile una versione compatibile di questa estensione" #. Translators: Icon's tooltip when an extension compatibility is unknown #: src/exm-upgrade-assistant.c:517 msgid "" "This extension is not hosted on extensions.gnome.org. Its compatibility " "cannot be determined." msgstr "" "Questa estensione non è distribuita su extensions.gnome.org. Non è possibile " "verificarne la compatibilità." #: src/exm-upgrade-assistant.c:608 #, c-format msgid "" "You are currently running GNOME %s. Select a version of GNOME below " "and check whether your extensions will continue to be available." msgstr "" "Attualmente stai usando GNOME %s. Selezionare un'altra versione di " "GNOME per verificare se le estensioni installate saranno ancora disponibili." #. Translators: Tooltip of the search icon in the header bar #: src/exm-window.blp:39 msgid "Search Installed Extensions" msgstr "Cerca estensioni installate" #: src/exm-window.blp:48 msgid "Main Menu" msgstr "Menu principale" #: src/exm-window.blp:59 msgid "Search for installed extensions" msgstr "Cerca estensioni installate" #: src/exm-window.blp:71 msgctxt "Navigation" msgid "_Installed" msgstr "_Installate" #: src/exm-window.blp:80 msgctxt "Navigation" msgid "_Browse" msgstr "_Sfoglia" #. Translators: the character preceded by "_" should not be the same #. as others in the same menu #: src/exm-window.blp:108 msgid "Sort _Enabled First" msgstr "Prima_estensioni attive" #: src/exm-window.blp:109 msgid "_Show Unsupported" msgstr "_Mostra non compatibili" #: src/exm-window.blp:113 msgid "_Upgrade Assistant" msgstr "_Assistente di aggiornamento" #: src/exm-window.blp:114 msgid "_Keyboard Shortcuts" msgstr "_Scorciatoie da tastiera" #: src/exm-window.blp:115 msgid "_About Extension Manager" msgstr "_Informazioni" #: src/exm-window.blp:120 msgid "Uninstall Extension?" msgstr "Disinstallare l'estensione?" #: src/exm-window.blp:121 msgid "" "The extension's features and functionality will no longer be accessible. Are " "you sure you want to uninstall?" msgstr "" "Le caratteristiche e le funzionalità dell'estensione non saranno più " "accessibili. Sei sicuro di voler disinstallare?" #: src/exm-window.blp:126 msgid "_No" msgstr "_No" #: src/exm-window.blp:127 msgid "_Yes" msgstr "_Si" #: src/exm-window.blp:132 msgid "Unsupported Extension" msgstr "Estensione non supportata" #: src/exm-window.blp:133 msgid "" "This extension does not support your GNOME Shell version. It may cause " "errors if installed." msgstr "" "Questa estensione non supporta la tua versione di GNOME. Potrebbe causare " "errori se installato." #: src/exm-window.blp:139 msgid "_Install Anyway" msgstr "_Installa comunque" #: src/exm-window.blp:140 msgid "_Go Back" msgstr "_Torna indietro" #: src/exm-window.c:348 msgid "_Details" msgstr "_Dettagli" #: src/web/exm-request-handler.c:99 msgid "" "Check GNOME infrastructure status " "and try again later" msgstr "" "Controlla lo stato dell'infrastruttura " "GNOME e riprova più tardi" #: src/web/exm-request-handler.c:100 msgid "Check your network status and try again" msgstr "Controlla lo stato della tua rete e riprova" #~ msgid "Comments" #~ msgstr "Commenti" #~ msgid "Loading Comments" #~ msgstr "Caricamento dei commenti" #~ msgid "User Reviews" #~ msgstr "Recensioni" #~ msgid "No comments yet" #~ msgstr "Ancora nessun commento" #~ msgid "" #~ "This extension could be activated in session modes such as the login " #~ "screen or the lock screen" #~ msgstr "" #~ "Questa estensione potrebbe essere attivata in modalità sessione come " #~ "schermata di accesso o schermata di blocco" #, c-format #~ msgid "%s by %s" #~ msgstr "%s di %s" #~ msgid "Updates Available" #~ msgstr "Aggiornamenti disponibili" #~ msgid "Supported" #~ msgstr "Compatibile" #~ msgid "Unknown" #~ msgstr "Sconosciuta" #~ msgid "A utility for managing GNOME Shell Extensions" #~ msgstr "Uno strumento per gestire le estensioni di GNOME" #, c-format #~ msgid "e.g. “%s”" #~ msgstr "es. “%s”" #~ msgid "This extension is incompatible with your current version of GNOME." #~ msgstr "L'estensione non è compatibile con la versione attuale di GNOME." #~ msgid "An error occurred." #~ msgstr "Si è verificato un errore." #~ msgid "Return to view" #~ msgstr "Esci" #~ msgid "@app_title@" #~ msgstr "@app_title@" #~ msgid "Translation updates" #~ msgstr "Traduzioni aggiornate" #~ msgid "Various bug fixes" #~ msgstr "Varie correzioni" #~ msgid "Performance and stability" #~ msgstr "Miglioramenti di prestazioni e stabilità" #~ msgid "Remove release notes dialog" #~ msgstr "Rimossa la notifica delle note di rilascio" #~ msgid "Fix special characters in installed extension listings" #~ msgstr "" #~ "Corretta visualizzazione di caratteri speciali nelle estensioni installate" #~ msgid "The second feature update to extension-manager. Highlights include:" #~ msgstr "" #~ "Il secondo aggiornamento che aggiunge funzionalità a Gestore di " #~ "estensioni, tra cui:" #~ msgid "View comments and reviews" #~ msgstr "Visualizza commenti e recensioni" #~ msgid "Support for in-app updates" #~ msgstr "Aggiornamenti all'interno dell'applicazione" #~ msgid "Better handling errors and out-of-date extensions" #~ msgstr "Migliore gestione degli errore e delle estensioni obsolete" #~ msgid "Allow installing 'unsupported' extensions" #~ msgstr "Possibilità di installare estensioni \"non supportate\"" #~ msgid "Display release notes on first run" #~ msgstr "Mostra le novità al primo avvio" #~ msgid "New app icon" #~ msgstr "Nuova icona" #~ msgid "Optionally sort extensions by enabled status" #~ msgstr "Opzione per ordinare prima le estensioni attive" #~ msgid "Fix special characters in search results" #~ msgstr "" #~ "Corretta visualizzazione di caratteri speciali nei risultati di ricerca" #~ msgid "Fixes a crash that sometimes occurs while uninstalling an extension" #~ msgstr "" #~ "Corretto un arresto anomalo durante la disinstallazione di estensioni" #~ msgid "The first feature update to extension-manager. Highlights include:" #~ msgstr "" #~ "Il primo aggiornamento che aggiunge funzionalità a Gestore di estensioni, " #~ "tra cui:" #~ msgid "Dark theme and support for overriding the system colour scheme" #~ msgstr "Supporto per il tema scuro e per sovrascrivere il tema di sistema" #~ msgid "Shows screenshots in extension listings" #~ msgstr "Mostra le immagini nella lista delle estensioni" #~ msgid "Shell version compatibility check" #~ msgstr "Controllo di compatibilità con la versione di GNOME" #~ msgid "Localised into seven languages" #~ msgstr "Traduzione in sette lingue" #~ msgid "Global extension on/off toggle" #~ msgstr "Interruttore globale per le estensioni" #~ msgid "Displays user and system extensions separately" #~ msgstr "" #~ "Mostra separatamente le estensioni integrate e quelle installate " #~ "dall'utente" #~ msgid "Extension Manager (Development)" #~ msgstr "Gestore di estensioni (Development)" #~ msgid "Popularity" #~ msgstr "Popolarità" #~ msgid "Supported Versions" #~ msgstr "Versioni compatibili" #~ msgctxt "Navigation" #~ msgid "Browse" #~ msgstr "Sfoglia" #~ msgid "Theme" #~ msgstr "Tema" #~ msgid "Follow System" #~ msgstr "Sistema" #~ msgid "Light" #~ msgstr "Chiaro" #~ msgid "Dark" #~ msgstr "Scuro" #~ msgid "Are you sure you want to uninstall?" #~ msgstr "Disinstallare l'estensione?" #~ msgid "" #~ "A very simple tool for browsing, downloading, and managing GNOME shell " #~ "extensions." #~ msgstr "" #~ "Uno strumento molto semplice per cercare, scaricare e gestire le " #~ "estensioni di GNOME." #~ msgid "e.g. \"Blur my Shell\"" #~ msgstr "es. \"Blur my Shell\"" #~ msgid "What's New" #~ msgstr "Novità" #~ msgid "View Release Notes" #~ msgstr "Note di rilascio" #, c-format #~ msgid "" #~ "This is your first time using Extension Manager %s.\n" #~ "Would you like to see the release notes?" #~ msgstr "" #~ "È la prima volta che utilizzi Gestore di estensioni %s.\n" #~ "Vuoi leggere le note di rilascio?" extension-manager-0.6.3/po/ja.po000066400000000000000000000570621477302130300165260ustar00rootroot00000000000000# Japanese translations for extension-manager package. # Copyright (C) 2022 extension-manager'S COPYRIGHT HOLDER # This file is distributed under the same license as the extension-manager package. # 小山田 純 , 2022. # Ryo Nakano , 2024, 2025. msgid "" msgstr "" "Project-Id-Version: extension-manager\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-03-06 16:36+0000\n" "PO-Revision-Date: 2025-03-09 14:42+0000\n" "Last-Translator: Ryo Nakano \n" "Language-Team: Japanese \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: Weblate 5.10.3-dev\n" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:2 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:6 #: src/exm-window.blp:7 msgid "Extension Manager" msgstr "Extension Manager" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:11 msgid "Manage GNOME Shell Extensions" msgstr "GNOME Shell 拡張機能を管理します" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #. Make sure to leave the original strings and add your translations afterwards, so that users can search both in English and your language. #: data/com.mattjakeman.ExtensionManager.desktop.in.in:14 msgid "extension;manager;shell;" msgstr "extension;manager;shell;拡張機能;マネージャー;シェル;" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:7 msgid "Browse, install, and manage GNOME Shell Extensions" msgstr "GNOME Shell 拡張機能を検索、インストール、管理します" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:13 msgid "A utility for browsing and installing GNOME Shell Extensions." msgstr "GNOME Shell 拡張機能を探せてインストールできるユーティリティです。" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:14 msgid "Features:" msgstr "機能:" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:16 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:26 msgid "Browse extensions.gnome.org right inside the app" msgstr "アプリ内で extensions.gnome.org を探索できます" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:17 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:22 msgid "Manage the extensions you already have installed" msgstr "今までにインストールした拡張機能も管理できます" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:30 msgid "See all the details of your extensions" msgstr "拡張機能のすべての詳細を確認できます" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:34 msgid "Check your extensions compatibility with the next version of GNOME" msgstr "GNOME の次期バージョンとの互換性を確認できます" #: src/exm-application.c:201 msgid "Browse, install, and manage GNOME Shell Extensions." msgstr "GNOME Shell 拡張機能を検索、インストール、管理します。" #. Translators: Use 'Name email@domain.com' or 'Name https://website.example' (without single quotes). Do not delete existing names, write yours on a new line. #: src/exm-application.c:204 msgid "translator-credits" msgstr "" "小山田 純 \n" "Ryo Nakano" #: src/exm-browse-page.blp:16 msgid "Search for Extensions" msgstr "拡張機能を検索" #: src/exm-browse-page.blp:17 msgid "" "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell Extensions" msgstr "" "キーワードを入力すると extensions.gnome.org にある\n" "GNOME Shell 拡張機能を検索できます" #: src/exm-browse-page.blp:47 msgid "Relevance" msgstr "関連度順" #: src/exm-browse-page.blp:48 msgctxt "Sort search results" msgid "Downloads" msgstr "ダウンロード数順" #: src/exm-browse-page.blp:49 msgid "Recent" msgstr "更新順" #: src/exm-browse-page.blp:50 src/exm-detail-view.blp:113 msgid "Name" msgstr "名前順" #: src/exm-browse-page.blp:57 msgid "Sort search results" msgstr "検索結果の並べ替えが、できるようになりました" #: src/exm-browse-page.blp:103 msgid "_Load More Results" msgstr "結果をさらに表示(_L)" #: src/exm-browse-page.blp:137 src/exm-installed-page.blp:123 msgid "No Results Found" msgstr "見つかりませんでした" #: src/exm-browse-page.blp:144 msgid "Try a different search" msgstr "他のキーワードを試してください" #: src/exm-browse-page.blp:178 src/exm-comment-dialog.blp:34 #: src/exm-detail-view.blp:49 src/exm-detail-view.blp:291 #: src/exm-upgrade-assistant.blp:100 msgid "Connection Error" msgstr "接続エラー" #: src/exm-comment-dialog.blp:13 src/exm-detail-view.blp:248 msgid "Reviews and Comments" msgstr "レビューとコメント" #: src/exm-comment-dialog.blp:25 msgid "Loading" msgstr "読み込み中" #: src/exm-comment-tile.blp:30 src/exm-detail-view.blp:127 msgid "Author" msgstr "作者" #: src/exm-detail-view.blp:40 msgid "Loading Details" msgstr "詳細を読み込み中" #: src/exm-detail-view.blp:59 src/exm-window.c:347 msgid "An Error Occurred" msgstr "エラーが発生しました" #: src/exm-detail-view.blp:60 msgid "No extension details available" msgstr "拡張機能の詳細は利用不可" #: src/exm-detail-view.blp:154 msgid "Enlarge Image" msgstr "画像を拡大表示" #: src/exm-detail-view.blp:172 src/exm-extension-row.blp:89 msgid "Description" msgstr "説明" #: src/exm-detail-view.blp:195 msgid "Links" msgstr "リンク" #: src/exm-detail-view.blp:203 msgid "Homepage" msgstr "ホームページ" #: src/exm-detail-view.blp:219 msgid "Donate" msgstr "寄付" #: src/exm-detail-view.blp:228 msgid "View on Extensions" msgstr "この拡張機能を extensions.gnome.org で表示" #: src/exm-detail-view.blp:271 msgid "Reviews and comments are disabled for this extension" msgstr "この拡張機能へのレビューとコメントは無効になっています" #: src/exm-detail-view.blp:314 msgid "There are no reviews or comments" msgstr "レビューとコメントなし" #: src/exm-detail-view.blp:343 msgid "_Show All" msgstr "すべて表示(_S)" #. Translators: '%s' = extension name #: src/exm-detail-view.c:445 #, c-format msgid "%s Icon" msgstr "%s のアイコン" #. Translators: '%s' = extension name #: src/exm-detail-view.c:478 #, c-format msgid "%s Screenshot" msgstr "%s のスクリーンショット" #: src/exm-error-dialog.blp:7 msgid "Error Report" msgstr "エラーを報告" #: src/exm-error-dialog.blp:22 msgid "An unexpected error occurred in Extension Manager" msgstr "Extension Manager で予期しないエラーが発生しました" #: src/exm-error-dialog.blp:36 msgid "Copy to Clipboard" msgstr "クリップボードにコピー" #: src/exm-error-dialog.blp:77 msgid "_New Issue" msgstr "問題を報告(_N)" #. Success indicator #: src/exm-error-dialog.c:125 src/exm-upgrade-assistant.c:347 msgid "Copied" msgstr "コピーしました" #: src/exm-error-dialog.c:173 msgid "Please open a new issue and attach the following information:" msgstr "問題を報告して、以下の情報を添付してください:" #. Translators: '%s' = Name of Distributor (e.g. "Packager123") #: src/exm-error-dialog.c:177 #, c-format msgid "" "You are using a third-party build of Extension Manager. Please contact the package distributor (%s) first before " "filing an issue. Be sure to attach the following information:" msgstr "" "お使いの Extension Manager は非公式ビルドです。不具合を報告する前に、まずはパッケージ頒布者 (%s) に連絡してください。その" "際、以下の情報を添付してください:" #. Translators: Button's tooltip to open extension's preferences dialog #: src/exm-extension-row.blp:28 msgid "Open extension preferences" msgstr "拡張機能の設定を開く" #. Translators: Icon's tooltip when an extension has an error #: src/exm-extension-row.blp:46 msgid "An error occurred while loading this extension" msgstr "この拡張機能の読み込み中にエラーが発生しました" #. Translators: Icon's tooltip when an extension is incompatible #: src/exm-extension-row.blp:63 src/exm-install-button.c:117 msgid "This extension is incompatible with your current version of GNOME" msgstr "この拡張機能は、お使いの GNOME のバージョンには、対応していません" #. Translators: Icon's tooltip when an extension update is available #: src/exm-extension-row.blp:80 msgid "A newer version of this extension is available" msgstr "この拡張機能にアップデートがあります" #: src/exm-extension-row.blp:98 src/exm-info-bar.blp:50 msgid "Version" msgstr "バージョン" #: src/exm-extension-row.blp:107 msgid "Session Modes" msgstr "セッションモード" #: src/exm-extension-row.blp:137 msgid "Error" msgstr "エラー" #: src/exm-extension-row.blp:158 msgid "See Details" msgstr "詳細" #: src/exm-extension-row.blp:169 msgid "Remove…" msgstr "削除…" #: src/exm-extension-row.c:175 msgid "Unlock Dialog" msgstr "ロック解除ダイアログ" #. Translators: GNOME Display Manager #: src/exm-extension-row.c:181 msgid "GDM" msgstr "GDM" #. Translators: Label when an extension runs on both, login and lock screens #: src/exm-extension-row.c:189 msgid "" "This extension will run while the screen is locked and no user is logged in" msgstr "この拡張機能は画面ロック中やログインユーザーがいない状態でも実行されます" #. Translators: Label when an extension runs on the lock screen #: src/exm-extension-row.c:194 msgid "This extension will run while the screen is locked" msgstr "この拡張機能は画面ロック中でも実行されます" #. Translators: Label when an extension runs on the login screen #: src/exm-extension-row.c:199 msgid "This extension will run while no user is logged in" msgstr "この拡張機能はログインユーザーがいない状態でも実行されます" #: src/exm-help-overlay.blp:11 msgctxt "shortcut window" msgid "General" msgstr "一般" #: src/exm-help-overlay.blp:14 msgctxt "shortcut window" msgid "Show Installed Page" msgstr "“インストール済み”ページを表示する" #: src/exm-help-overlay.blp:19 msgctxt "shortcut window" msgid "Show Browse Page" msgstr "“探す”ページを表示する" #: src/exm-help-overlay.blp:24 msgctxt "shortcut window" msgid "Toggle Search" msgstr "検索する/検索をやめる" #: src/exm-help-overlay.blp:29 msgctxt "shortcut window" msgid "Show Keyboard Shortcuts" msgstr "キーボードショートカットを表示する" #: src/exm-help-overlay.blp:34 msgctxt "shortcut window" msgid "Close Window" msgstr "ウィンドウを閉じる" #: src/exm-help-overlay.blp:39 msgctxt "shortcut window" msgid "Quit" msgstr "終了する" #: src/exm-help-overlay.blp:45 msgctxt "shortcut window" msgid "Screenshot View" msgstr "スクリーンショット表示" #: src/exm-help-overlay.blp:48 src/exm-help-overlay.blp:63 msgctxt "shortcut window" msgid "Zoom In" msgstr "拡大する" #: src/exm-help-overlay.blp:53 src/exm-help-overlay.blp:68 msgctxt "shortcut window" msgid "Zoom Out" msgstr "縮小する" #: src/exm-help-overlay.blp:58 msgctxt "shortcut window" msgid "Reset Zoom" msgstr "拡大率をリセットする" #: src/exm-info-bar.blp:28 msgctxt "Number of downloads" msgid "Downloads" msgstr "ダウンロード数" #: src/exm-info-bar.c:107 msgid "Unsupported" msgstr "非対応" #: src/exm-install-button.c:127 msgid "Install…" msgstr "インストール…" #: src/exm-install-button.c:132 msgid "Installing" msgstr "インストール中" #: src/exm-install-button.c:136 msgctxt "State" msgid "Installed" msgstr "インストール済み" #: src/exm-install-button.c:140 msgid "Unsupported…" msgstr "非対応…" #: src/exm-installed-page.blp:16 msgid "_Log Out…" msgstr "ログアウト(_L)…" #: src/exm-installed-page.blp:28 msgid "Use Extensions" msgstr "GNOME Shell 拡張機能を使う" #: src/exm-installed-page.blp:29 msgid "Extensions can cause performance and stability issues" msgstr "拡張機能を使うと、動作が安定しなくなるかもしれません" #: src/exm-installed-page.blp:34 src/exm-upgrade-assistant.blp:133 msgid "User-Installed Extensions" msgstr "ユーザーがインストールした拡張機能" #: src/exm-installed-page.blp:51 src/exm-upgrade-assistant.blp:150 msgid "No User Extensions Installed" msgstr "ユーザーがインストールした拡張機能なし" #: src/exm-installed-page.blp:55 msgid "Browse" msgstr "探す" #: src/exm-installed-page.blp:69 src/exm-upgrade-assistant.blp:160 msgid "System Extensions" msgstr "システムの拡張機能" #: src/exm-installed-page.blp:86 src/exm-upgrade-assistant.blp:177 msgid "No System Extensions Installed" msgstr "システムの拡張機能なし" #. Translators: Text announced by screen readers when interacting with the list of search results #: src/exm-installed-page.blp:111 msgid "Search Results" msgstr "検索結果" #: src/exm-installed-page.blp:124 msgid "Try a different search or search online" msgstr "他のキーワードを試すか、オンラインで検索してください" #: src/exm-installed-page.blp:131 msgid "_Search Online" msgstr "オンラインで検索(_S)" #. Translators: '%d' = number of extensions that will be updated #: src/exm-installed-page.c:298 #, c-format msgid "%d extension will be updated on next login" msgid_plural "%d extensions will be updated on next login" msgstr[0] "%d個の拡張機能が次回ログイン時にアップデートされます" #: src/exm-rating.c:142 #, c-format msgid "%i Star" msgid_plural "%i Stars" msgstr[0] "%iつ星" #. Translators: Button's tooltip to zoom out screenshots #: src/exm-screenshot-view.blp:37 msgid "Zoom Out" msgstr "縮小" #. Translators: Button's tooltip to zoom in screenshots #: src/exm-screenshot-view.blp:51 msgid "Zoom In" msgstr "拡大" #: src/exm-upgrade-assistant.blp:11 msgid "Upgrade Assistant" msgstr "アップグレードアシスタント" #: src/exm-upgrade-assistant.blp:66 msgid "_Check Compatibility" msgstr "互換性を確認(_C)" #: src/exm-upgrade-assistant.blp:189 msgid "_Copy to Clipboard" msgstr "クリップボードにコピー(_C)" #: src/exm-upgrade-assistant.c:188 #, c-format msgid "Checked %d/%d Extensions" msgstr "%d/%d の拡張機能を確認済み" #. Set percentage text #: src/exm-upgrade-assistant.c:207 #, c-format msgid "%d%% Compatible" msgstr "%d%% 対応" #: src/exm-upgrade-assistant.c:223 #, c-format msgid "" "GNOME %s supports %d out of %d of the extensions currently " "installed on the system" msgstr "GNOME %s には、%d/%d個 の拡張機能が対応しています" #. Translators: Icon's tooltip when an extension is compatible #: src/exm-upgrade-assistant.c:503 msgid "A compatible version of the extension exists" msgstr "この拡張機能は、指定した GNOME のバージョンとの互換性があります" #. Translators: Icon's tooltip when an extension is not compatible #: src/exm-upgrade-assistant.c:510 msgid "No compatible version of the extension exists" msgstr "この拡張機能は、指定した GNOME のバージョンとの互換性がありません" #. Translators: Icon's tooltip when an extension compatibility is unknown #: src/exm-upgrade-assistant.c:517 msgid "" "This extension is not hosted on extensions.gnome.org. Its compatibility " "cannot be determined." msgstr "" "この拡張機能は、extensions.gnome.org でホストされていません。そのため互換性が" "あるかを判断できません。" #: src/exm-upgrade-assistant.c:608 #, c-format msgid "" "You are currently running GNOME %s. Select a version of GNOME below " "and check whether your extensions will continue to be available." msgstr "" "このシステムは GNOME %s を実行しています。プルダウンメニューから " "GNOME のバージョンを選んで、今使っている拡張機能がそのバージョンでも使えるか" "を確認できます。" #. Translators: Tooltip of the search icon in the header bar #: src/exm-window.blp:39 msgid "Search Installed Extensions" msgstr "インストール済みの拡張機能を検索" #: src/exm-window.blp:48 msgid "Main Menu" msgstr "メインメニュー" #: src/exm-window.blp:59 msgid "Search for installed extensions" msgstr "インストール済みの拡張機能を検索" #: src/exm-window.blp:71 msgctxt "Navigation" msgid "_Installed" msgstr "インストール済み(_I)" #: src/exm-window.blp:80 msgctxt "Navigation" msgid "_Browse" msgstr "探す(_B)" #. Translators: the character preceded by "_" should not be the same #. as others in the same menu #: src/exm-window.blp:108 msgid "Sort _Enabled First" msgstr "有効な拡張機能を優先表示(_E)" #: src/exm-window.blp:109 msgid "_Show Unsupported" msgstr "非対応の拡張機能も検索結果に表示(_U)" #: src/exm-window.blp:113 msgid "_Upgrade Assistant" msgstr "アップグレードアシスタント(_U)" #: src/exm-window.blp:114 msgid "_Keyboard Shortcuts" msgstr "キーボードショートカット(_K)" #: src/exm-window.blp:115 msgid "_About Extension Manager" msgstr "Extension Manager について(_A)" #: src/exm-window.blp:120 msgid "Uninstall Extension?" msgstr "拡張機能を削除しますか?" #: src/exm-window.blp:121 msgid "" "The extension's features and functionality will no longer be accessible. Are " "you sure you want to uninstall?" msgstr "この拡張機能を利用できなくなります。削除しますか?" #: src/exm-window.blp:126 msgid "_No" msgstr "いいえ(_N)" #: src/exm-window.blp:127 msgid "_Yes" msgstr "はい(_Y)" #: src/exm-window.blp:132 msgid "Unsupported Extension" msgstr "非対応の拡張機能" #: src/exm-window.blp:133 msgid "" "This extension does not support your GNOME Shell version. It may cause " "errors if installed." msgstr "" "この拡張機能は、この GNOME Shell のバージョンに対応していません。インストール" "すると、エラーが発生する可能性があります。" #: src/exm-window.blp:139 msgid "_Install Anyway" msgstr "強制的にインストール(_I)" #: src/exm-window.blp:140 msgid "_Go Back" msgstr "戻る(_G)" #: src/exm-window.c:348 msgid "_Details" msgstr "詳細(_D)" #: src/web/exm-request-handler.c:99 msgid "" "Check GNOME infrastructure status " "and try again later" msgstr "" "GNOME infrastructure status を確認し" "てから、後ほど再度お試しください" #: src/web/exm-request-handler.c:100 msgid "Check your network status and try again" msgstr "ネットワークの状態を確認してから、再度お試しください" #~ msgid "Comments" #~ msgstr "コメント" #~ msgid "Loading Comments" #~ msgstr "コメントを読み込み中" #~ msgid "User Reviews" #~ msgstr "レビュー" #~ msgid "No comments yet" #~ msgstr "まだコメントがありません" #~ msgid "" #~ "This extension could be activated in session modes such as the login " #~ "screen or the lock screen" #~ msgstr "" #~ "この拡張機能はセッションモード (例: ログイン画面やロック画面) で有効になる" #~ "可能性があります" #, c-format #~ msgid "%s by %s" #~ msgstr "%s (作: %s)" #~ msgid "Updates Available" #~ msgstr "アップデート利用可能" #~ msgid "Supported" #~ msgstr "対応" #~ msgid "Unknown" #~ msgstr "不明" #~ msgid "A utility for managing GNOME Shell Extensions" #~ msgstr "GNOME Shell 拡張機能 を管理するユーティリティ" #, c-format #~ msgid "e.g. “%s”" #~ msgstr "例 “%s”" #~ msgid "This extension is incompatible with your current version of GNOME." #~ msgstr "この拡張機能は、お使いの GNOME のバージョンには、対応していません。" #~ msgid "An error occurred." #~ msgstr "エラーが発生しました。" #~ msgid "Return to view" #~ msgstr "画像の拡大表示を閉じる" #~ msgid "@app_title@" #~ msgstr "@app_title@" #~ msgid "Translation updates" #~ msgstr "翻訳のアップデート" #~ msgid "Various bug fixes" #~ msgstr "様々なバグ修正" #~ msgid "Performance and stability" #~ msgstr "パフォーマンスと安定性の向上" #~ msgid "Remove release notes dialog" #~ msgstr "リリースノートダイアログを廃止" #~ msgid "Fix special characters in installed extension listings" #~ msgstr "追加済み拡張機能のリストの特殊文字に関する修正" #~ msgid "The second feature update to extension-manager. Highlights include:" #~ msgstr "" #~ "Extension Manager の2回目の機能アップデートです。主な内容は次のとおりで" #~ "す :" #~ msgid "View comments and reviews" #~ msgstr "拡張機能のレビューが読めるように" #~ msgid "Support for in-app updates" #~ msgstr "このアプリからの拡張機能のアップデートが可能に" #~ msgid "Better handling errors and out-of-date extensions" #~ msgstr "エラーや古い拡張機能への対応を強化" #~ msgid "Allow installing 'unsupported' extensions" #~ msgstr "" #~ "使用している GNOME Shell のバージョンに未対応の拡張機能もインストール可能" #~ "に" #~ msgid "Display release notes on first run" #~ msgstr "リリースノートをアップデート後に表示" #~ msgid "New app icon" #~ msgstr "アプリのアイコンを変更" #~ msgid "Optionally sort extensions by enabled status" #~ msgstr "" #~ "追加済のタブにおいて、有効になっている拡張機能が上に表示されるオプションが" #~ "追加" #~ msgid "Fix special characters in search results" #~ msgstr "検索結果の特殊文字に関する修正" #~ msgid "Fixes a crash that sometimes occurs while uninstalling an extension" #~ msgstr "拡張機能の削除中に、クラッシュする問題を修正しました" #~ msgid "The first feature update to extension-manager. Highlights include:" #~ msgstr "" #~ "Extension Manager の初めてのアップデートです。主な内容は次のとおりです :" #~ msgid "Dark theme and support for overriding the system colour scheme" #~ msgstr "" #~ "ダークテーマを追加し、システムのライト・ダークテーマに合わせることができる" #~ "ようになりました" #~ msgid "Shows screenshots in extension listings" #~ msgstr "拡張機能のスクリーンショットを、見られるようになりました" #~ msgid "Shell version compatibility check" #~ msgstr "" #~ "拡張機能が対応しているGNOMEShellのバージョンが、わかるようになりました" #~ msgid "Localised into seven languages" #~ msgstr "7言語に翻訳されました" #~ msgid "Global extension on/off toggle" #~ msgstr "すべての拡張機能をOFFにできる、トグルスイッチが追加されました" #~ msgid "Displays user and system extensions separately" #~ msgstr "拡張機能の開発者の名前を、表示するようになりました" #~ msgid "Extension Manager (Development)" #~ msgstr "Extension Manager (開発版)" #~ msgid "Popularity" #~ msgstr "人気順" #~ msgid "Supported Versions" #~ msgstr "対応するGNOMEのバージョン" #~ msgctxt "Navigation" #~ msgid "Browse" #~ msgstr "探す" #~ msgid "Theme" #~ msgstr "テーマ" #~ msgid "Follow System" #~ msgstr "システムのテーマ" #~ msgid "Light" #~ msgstr "ライトテーマ" #~ msgid "Dark" #~ msgstr "ダークテーマ" #~ msgid "Are you sure you want to uninstall?" #~ msgstr "この拡張機能を削除しますか?" extension-manager-0.6.3/po/ko.po000066400000000000000000000560361477302130300165450ustar00rootroot00000000000000# Copyright (C) 2023 Matthew Jakeman # This file is distributed under the same license as the extension-manager package. # Ensup Choi , 2023. # Pete Lee , 2025. msgid "" msgstr "" "Project-Id-Version: extension-manager\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-03-06 16:36+0000\n" "PO-Revision-Date: 2025-03-29 14:01+0000\n" "Last-Translator: Pete Lee \n" "Language-Team: Korean \n" "Language: ko\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: Weblate 5.11-dev\n" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:2 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:6 #: src/exm-window.blp:7 msgid "Extension Manager" msgstr "확장 프로그램 관리자" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:11 msgid "Manage GNOME Shell Extensions" msgstr "GNOME Shell 확장 프로그램 관리" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #. Make sure to leave the original strings and add your translations afterwards, so that users can search both in English and your language. #: data/com.mattjakeman.ExtensionManager.desktop.in.in:14 msgid "extension;manager;shell;" msgstr "확장 프로그램;관리자;쉘;" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:7 msgid "Browse, install, and manage GNOME Shell Extensions" msgstr "GNOME Shell 확장 프로그램을 검색, 설치, 관리합니다" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:13 msgid "A utility for browsing and installing GNOME Shell Extensions." msgstr "GNOME Shell 확장 프로그램 검색과 설치를 위한 프로그램." #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:14 msgid "Features:" msgstr "특징:" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:16 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:26 msgid "Browse extensions.gnome.org right inside the app" msgstr "앱에서 바로 extensions.gnome.org 찾아보기" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:17 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:22 msgid "Manage the extensions you already have installed" msgstr "이미 설치한 확장 프로그램 관리" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:30 msgid "See all the details of your extensions" msgstr "확장 프로그램의 모든 세부 정보 보기" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:34 msgid "Check your extensions compatibility with the next version of GNOME" msgstr "다음 버전의 GNOME과 확장 프로그램의 호환성을 확인하세요" #: src/exm-application.c:201 msgid "Browse, install, and manage GNOME Shell Extensions." msgstr "GNOME Shell 확장 프로그램을 검색, 설치, 관리합니다." #. Translators: Use 'Name email@domain.com' or 'Name https://website.example' (without single quotes). Do not delete existing names, write yours on a new line. #: src/exm-application.c:204 msgid "translator-credits" msgstr "" "Pete Lee \n" "Ensup Choi " #: src/exm-browse-page.blp:16 msgid "Search for Extensions" msgstr "확장 프로그램 검색" #: src/exm-browse-page.blp:17 msgid "" "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell Extensions" msgstr "키워드를 입력하여 'extensions.gnome.org' 에서 GNOME 셸 확장 프로그램 " "프로그램을 검색합니다" #: src/exm-browse-page.blp:47 msgid "Relevance" msgstr "관련성" #: src/exm-browse-page.blp:48 msgctxt "Sort search results" msgid "Downloads" msgstr "다운로드순" #: src/exm-browse-page.blp:49 msgid "Recent" msgstr "최신 등록순" #: src/exm-browse-page.blp:50 src/exm-detail-view.blp:113 msgid "Name" msgstr "이름순" #: src/exm-browse-page.blp:57 msgid "Sort search results" msgstr "검색 결과 정렬" #: src/exm-browse-page.blp:103 msgid "_Load More Results" msgstr "_더 많은 결과 불러오기" #: src/exm-browse-page.blp:137 src/exm-installed-page.blp:123 msgid "No Results Found" msgstr "결과 없음" #: src/exm-browse-page.blp:144 msgid "Try a different search" msgstr "다른 검색을 시도해보세요" #: src/exm-browse-page.blp:178 src/exm-comment-dialog.blp:34 #: src/exm-detail-view.blp:49 src/exm-detail-view.blp:291 #: src/exm-upgrade-assistant.blp:100 msgid "Connection Error" msgstr "연결 오류" #: src/exm-comment-dialog.blp:13 src/exm-detail-view.blp:248 msgid "Reviews and Comments" msgstr "리뷰와 의견" #: src/exm-comment-dialog.blp:25 msgid "Loading" msgstr "불러오는 중" #: src/exm-comment-tile.blp:30 src/exm-detail-view.blp:127 msgid "Author" msgstr "저자" #: src/exm-detail-view.blp:40 msgid "Loading Details" msgstr "잠시만 기다려주세요" #: src/exm-detail-view.blp:59 src/exm-window.c:347 msgid "An Error Occurred" msgstr "오류가 발생했습니다" #: src/exm-detail-view.blp:60 msgid "No extension details available" msgstr "확장 프로그램의 상세정보가 없습니다" #: src/exm-detail-view.blp:154 msgid "Enlarge Image" msgstr "확대된 이미지" #: src/exm-detail-view.blp:172 src/exm-extension-row.blp:89 msgid "Description" msgstr "설명" #: src/exm-detail-view.blp:195 msgid "Links" msgstr "링크" #: src/exm-detail-view.blp:203 msgid "Homepage" msgstr "홈페이지" #: src/exm-detail-view.blp:219 msgid "Donate" msgstr "기부하기" #: src/exm-detail-view.blp:228 msgid "View on Extensions" msgstr "확장 프로그램 보기" #: src/exm-detail-view.blp:271 msgid "Reviews and comments are disabled for this extension" msgstr "이 확장 프로그램은 리뷰와 댓글을 남길 수 없습니다" #: src/exm-detail-view.blp:314 msgid "There are no reviews or comments" msgstr "댓글이 없습니다" #: src/exm-detail-view.blp:343 msgid "_Show All" msgstr "_모든 리뷰 보기" #. Translators: '%s' = extension name #: src/exm-detail-view.c:445 #, c-format msgid "%s Icon" msgstr "%s 의 아이콘" #. Translators: '%s' = extension name #: src/exm-detail-view.c:478 #, c-format msgid "%s Screenshot" msgstr "%s의 스크린샷" #: src/exm-error-dialog.blp:7 msgid "Error Report" msgstr "오류 보고" #: src/exm-error-dialog.blp:22 msgid "An unexpected error occurred in Extension Manager" msgstr "확장 프로그램 관리자에서 예상하지 못한 오류가 발생했습니다" #: src/exm-error-dialog.blp:36 msgid "Copy to Clipboard" msgstr "_클립보드에 복사하기" #: src/exm-error-dialog.blp:77 msgid "_New Issue" msgstr "_새 이슈" #. Success indicator #: src/exm-error-dialog.c:125 src/exm-upgrade-assistant.c:347 msgid "Copied" msgstr "복사됨" #: src/exm-error-dialog.c:173 msgid "Please open a new issue and attach the following information:" msgstr "새 이슈를 열고 다음 정보를 첨부하십시오:" #. Translators: '%s' = Name of Distributor (e.g. "Packager123") #: src/exm-error-dialog.c:177 #, c-format msgid "" "You are using a third-party build of Extension Manager. Please contact the package distributor (%s) first before " "filing an issue. Be sure to attach the following information:" msgstr "" "확장 프로그램 관리자의 타사 빌드를 사용하고 있습니다. 문제를 제기하기 전에 " "먼저 패키지 배포업체 (%s)에 문의하십시오. 다음 " "정보를 첨부해야 합니다:" #. Translators: Button's tooltip to open extension's preferences dialog #: src/exm-extension-row.blp:28 msgid "Open extension preferences" msgstr "확장 프로그램 환경설정 열기" #. Translators: Icon's tooltip when an extension has an error #: src/exm-extension-row.blp:46 msgid "An error occurred while loading this extension" msgstr "이 확장 프로그램을 불러오는 중 오류가 발생했습니다" #. Translators: Icon's tooltip when an extension is incompatible #: src/exm-extension-row.blp:63 src/exm-install-button.c:117 msgid "This extension is incompatible with your current version of GNOME" msgstr "이 확장 프로그램은 사용자의 현재 GNOME 버전과 호환되지 않습니다" #. Translators: Icon's tooltip when an extension update is available #: src/exm-extension-row.blp:80 msgid "A newer version of this extension is available" msgstr "이 확장 프로그램의 새 버전이 사용 가능합니다" #: src/exm-extension-row.blp:98 src/exm-info-bar.blp:50 msgid "Version" msgstr "버전" #: src/exm-extension-row.blp:107 msgid "Session Modes" msgstr "세션 모드" #: src/exm-extension-row.blp:137 msgid "Error" msgstr "오류" #: src/exm-extension-row.blp:158 msgid "See Details" msgstr "세부 사항 보기" #: src/exm-extension-row.blp:169 msgid "Remove…" msgstr "제거…" #: src/exm-extension-row.c:175 msgid "Unlock Dialog" msgstr "대화상자 잠금해제" #. Translators: GNOME Display Manager #: src/exm-extension-row.c:181 msgid "GDM" msgstr "GDM(GNOME Display Manager)" #. Translators: Label when an extension runs on both, login and lock screens #: src/exm-extension-row.c:189 msgid "" "This extension will run while the screen is locked and no user is logged in" msgstr "이 확장 프로그램은 화면이 잠겨 있거나 사용자가 로그인하지 않은 상태에서도 " "실행됩니다" #. Translators: Label when an extension runs on the lock screen #: src/exm-extension-row.c:194 msgid "This extension will run while the screen is locked" msgstr "이 확장 프로그램은 화면이 잠겨 있을 때 실행됩니다" #. Translators: Label when an extension runs on the login screen #: src/exm-extension-row.c:199 msgid "This extension will run while no user is logged in" msgstr "이 확장 프로그램은 로그인하지 않아도 실행됩니다" #: src/exm-help-overlay.blp:11 msgctxt "shortcut window" msgid "General" msgstr "일반" #: src/exm-help-overlay.blp:14 msgctxt "shortcut window" msgid "Show Installed Page" msgstr "설치된 목록 보기" #: src/exm-help-overlay.blp:19 msgctxt "shortcut window" msgid "Show Browse Page" msgstr "확장 프로그램 검색 보기" #: src/exm-help-overlay.blp:24 msgctxt "shortcut window" msgid "Toggle Search" msgstr "검색창으로 이동" #: src/exm-help-overlay.blp:29 msgctxt "shortcut window" msgid "Show Keyboard Shortcuts" msgstr "키보드 단축키 보기" #: src/exm-help-overlay.blp:34 msgctxt "shortcut window" msgid "Close Window" msgstr "창 닫기" #: src/exm-help-overlay.blp:39 msgctxt "shortcut window" msgid "Quit" msgstr "종료하기" #: src/exm-help-overlay.blp:45 msgctxt "shortcut window" msgid "Screenshot View" msgstr "스크린샷 보기" #: src/exm-help-overlay.blp:48 src/exm-help-overlay.blp:63 msgctxt "shortcut window" msgid "Zoom In" msgstr "확대하기" #: src/exm-help-overlay.blp:53 src/exm-help-overlay.blp:68 msgctxt "shortcut window" msgid "Zoom Out" msgstr "축소하기" #: src/exm-help-overlay.blp:58 msgctxt "shortcut window" msgid "Reset Zoom" msgstr "원래대로 되돌리기" #: src/exm-info-bar.blp:28 msgctxt "Number of downloads" msgid "Downloads" msgstr "다운로드수" #: src/exm-info-bar.c:107 msgid "Unsupported" msgstr "지원 안됨" #: src/exm-install-button.c:127 msgid "Install…" msgstr "설치하기…" #: src/exm-install-button.c:132 msgid "Installing" msgstr "설치중" #: src/exm-install-button.c:136 msgctxt "State" msgid "Installed" msgstr "설치됨" #: src/exm-install-button.c:140 msgid "Unsupported…" msgstr "지원하지 않음…" #: src/exm-installed-page.blp:16 msgid "_Log Out…" msgstr "_로그아웃…" #: src/exm-installed-page.blp:28 msgid "Use Extensions" msgstr "확장 프로그램 사용" #: src/exm-installed-page.blp:29 msgid "Extensions can cause performance and stability issues" msgstr "확장 프로그램은 성능과 안정성 문제를 일으킬 수 있습니다" #: src/exm-installed-page.blp:34 src/exm-upgrade-assistant.blp:133 msgid "User-Installed Extensions" msgstr "사용자 설치 확장 프로그램" #: src/exm-installed-page.blp:51 src/exm-upgrade-assistant.blp:150 msgid "No User Extensions Installed" msgstr "사용자 확장 프로그램이 설치되지 않았습니다" #: src/exm-installed-page.blp:55 msgid "Browse" msgstr "찾아보기" #: src/exm-installed-page.blp:69 src/exm-upgrade-assistant.blp:160 msgid "System Extensions" msgstr "시스템 확장 프로그램" #: src/exm-installed-page.blp:86 src/exm-upgrade-assistant.blp:177 msgid "No System Extensions Installed" msgstr "시스템 확장 프로그램이 설치되지 않았습니다" #. Translators: Text announced by screen readers when interacting with the list of search results #: src/exm-installed-page.blp:111 msgid "Search Results" msgstr "검색 결과" #: src/exm-installed-page.blp:124 msgid "Try a different search or search online" msgstr "다른 단어를 입력하거나 확장 프로그램 검색에서 찾아보세요" #: src/exm-installed-page.blp:131 msgid "_Search Online" msgstr "확장 프로그램 찾기" #. Translators: '%d' = number of extensions that will be updated #: src/exm-installed-page.c:298 #, c-format msgid "%d extension will be updated on next login" msgid_plural "%d extensions will be updated on next login" msgstr[0] "%d개의 확장 프로그램이 다음 로그인할 때 업데이트 됩 예정입니다" #: src/exm-rating.c:142 #, c-format msgid "%i Star" msgid_plural "%i Stars" msgstr[0] "%i점" #. Translators: Button's tooltip to zoom out screenshots #: src/exm-screenshot-view.blp:37 msgid "Zoom Out" msgstr "줌 아웃" #. Translators: Button's tooltip to zoom in screenshots #: src/exm-screenshot-view.blp:51 msgid "Zoom In" msgstr "줌 인" #: src/exm-upgrade-assistant.blp:11 msgid "Upgrade Assistant" msgstr "업그레이드 도우미" #: src/exm-upgrade-assistant.blp:66 msgid "_Check Compatibility" msgstr "_호한성 확인" #: src/exm-upgrade-assistant.blp:189 msgid "_Copy to Clipboard" msgstr "_클립보드에 붙여넣기" #: src/exm-upgrade-assistant.c:188 #, c-format msgid "Checked %d/%d Extensions" msgstr "%d/%d 확장 프로그램 확인 중" #. Set percentage text #: src/exm-upgrade-assistant.c:207 #, c-format msgid "%d%% Compatible" msgstr "%d%% 호환됨" #: src/exm-upgrade-assistant.c:223 #, c-format msgid "" "GNOME %s supports %d out of %d of the extensions currently " "installed on the system" msgstr "GNOME %s은(는) 현재 시스템에 설치된 확장 프로그램 %d개 중 %d개를 지원합니다" #. Translators: Icon's tooltip when an extension is compatible #: src/exm-upgrade-assistant.c:503 msgid "A compatible version of the extension exists" msgstr "호환되는 버전의 확장 프로그램이 있습니다" #. Translators: Icon's tooltip when an extension is not compatible #: src/exm-upgrade-assistant.c:510 msgid "No compatible version of the extension exists" msgstr "호환되는 버전의 확장 프로그램이 없습니다" #. Translators: Icon's tooltip when an extension compatibility is unknown #: src/exm-upgrade-assistant.c:517 msgid "" "This extension is not hosted on extensions.gnome.org. Its compatibility " "cannot be determined." msgstr "이 확장 프로그램은 extensions.gnome.org에 호스트 되지 않았습니다. 호환성을 " "확인할 수 없습니다." #: src/exm-upgrade-assistant.c:608 #, c-format msgid "" "You are currently running GNOME %s. Select a version of GNOME below " "and check whether your extensions will continue to be available." msgstr "" "현재 GNOME %s을 사용중 입니다. 아래 GNOME 버전을 선택하고 확장 " "프로그램 기능을 계속 사용할 수 있는지 확인합니다." #. Translators: Tooltip of the search icon in the header bar #: src/exm-window.blp:39 msgid "Search Installed Extensions" msgstr "설치된 확장 프로그램 검색" #: src/exm-window.blp:48 msgid "Main Menu" msgstr "메인 메뉴" #: src/exm-window.blp:59 msgid "Search for installed extensions" msgstr "설치된 확장 프로그램 검색" #: src/exm-window.blp:71 msgctxt "Navigation" msgid "_Installed" msgstr "_설치된 확장 프로그램" #: src/exm-window.blp:80 msgctxt "Navigation" msgid "_Browse" msgstr "_확장 프로그램 검색" #. Translators: the character preceded by "_" should not be the same #. as others in the same menu #: src/exm-window.blp:108 msgid "Sort _Enabled First" msgstr "Sort _활성화 순으로 정렬" #: src/exm-window.blp:109 msgid "_Show Unsupported" msgstr "_지원하지 않는 확장 프로그램 표시" #: src/exm-window.blp:113 msgid "_Upgrade Assistant" msgstr "_업그레이드 도우미" #: src/exm-window.blp:114 msgid "_Keyboard Shortcuts" msgstr "키보드 단축키 보기" #: src/exm-window.blp:115 msgid "_About Extension Manager" msgstr "_확장 프로그램 관리자에 대하여" #: src/exm-window.blp:120 msgid "Uninstall Extension?" msgstr "확장 프로그램을 제거할까요?" #: src/exm-window.blp:121 msgid "" "The extension's features and functionality will no longer be accessible. Are " "you sure you want to uninstall?" msgstr "확장 프로그램 프로그램의 특징과 기능에 더 이상 액세스할 수 없게 됩니다. 정말 " "제거하시겠습니까?" #: src/exm-window.blp:126 msgid "_No" msgstr "_아니오" #: src/exm-window.blp:127 msgid "_Yes" msgstr "_예" #: src/exm-window.blp:132 msgid "Unsupported Extension" msgstr "지원되지 않는 확장 프로그램" #: src/exm-window.blp:133 msgid "" "This extension does not support your GNOME Shell version. It may cause " "errors if installed." msgstr "이 확장 프로그램을 사용자의 GNOME Shell 버전을 지원하지 않습니다. 설치할 시 " "오류를 일으킬 수 있습니다." #: src/exm-window.blp:139 msgid "_Install Anyway" msgstr "_아무튼 설치" #: src/exm-window.blp:140 msgid "_Go Back" msgstr "_돌아가기" #: src/exm-window.c:348 msgid "_Details" msgstr "_세부 사항" #: src/web/exm-request-handler.c:99 msgid "" "Check GNOME infrastructure status " "and try again later" msgstr "" "GNOME 서버 상태 확인s 을 확인하고 " "나중에 다시 시도하세요" #: src/web/exm-request-handler.c:100 msgid "Check your network status and try again" msgstr "네트워크 상태를 확인하고 다시 시도하세요" #~ msgid "Comments" #~ msgstr "댓글" #~ msgid "Loading Comments" #~ msgstr "댓글 불러오는 중" #~ msgid "User Reviews" #~ msgstr "사용자 리뷰" #, fuzzy #~| msgid "Comments" #~ msgid "No comments yet" #~ msgstr "댓글" #, fuzzy #~| msgid "Updates are available" #~ msgid "Updates Available" #~ msgstr "업데이트 가능" #~ msgid "Supported" #~ msgstr "지원됨" #~ msgid "Unknown" #~ msgstr "알 수 없음" #~ msgid "A utility for managing GNOME Shell Extensions" #~ msgstr "GNOME Shell 확장 관리를 위한 프로그램" #, c-format #~ msgid "e.g. “%s”" #~ msgstr "예를 들어, “%s”" #~ msgid "This extension is incompatible with your current version of GNOME." #~ msgstr "이 확장은 현재 GNOME 버전과 호환되지 않습니다." #~ msgid "An error occurred." #~ msgstr "오류가 발생했습니다." #~ msgid "Return to view" #~ msgstr "보기로 돌아가기" #~ msgid "@app_title@" #~ msgstr "@app_title@" #~ msgid "HOTFIX: Fix broken 'recent' and 'popularity' search filters" #~ msgstr "HOTFIX: 고장난 '최근순'과 '인기순' 검색 필터 고침" #~ msgid "Various stability and correctness fixes" #~ msgstr "다양한 안정성과 정확성 고침" #~ msgid "Translation updates" #~ msgstr "번역 업데이트" #~ msgid "Upgrade Assistant scroll fix" #~ msgstr "업그레이드 도우미 고침" #~ msgid "Pixel perfect app icon" #~ msgstr "완벽한 픽셀 앱 아이콘" #~ msgid "Official snap support" #~ msgstr "공식 Snap 지원" #~ msgid "Improved error log generation" #~ msgstr "개선된 오류 로그 생성" #~ msgid "Fully adaptive mobile-friendly user interface" #~ msgstr "적응형 모바일 친화적인 사용자 인터페이스" #~ msgid "Paginated search results" #~ msgstr "페이지 매겨진 검색 결과" #~ msgid "Upgrade Assistant for checking extension compatibility" #~ msgstr "확장 프로그램 호환성 확인을 위한 업그레이드 도우미" #~ msgid "Unsupported extensions are hidden by default" #~ msgstr "지원되지 않는 확장은 기본적으로 숨겨져 있습니다" #~ msgid "Overhauled error and crash reporting" #~ msgstr "오류 및 충돌 보고 검사" #~ msgid "Full-screen image viewer" #~ msgstr "전체화면 이미지 뷰어" #~ msgid "Handles new gnome-extensions:// URI scheme" #~ msgstr "새 gnome-extensions:// URI scheme 처리" #~ msgid "Randomised extension suggestions" #~ msgstr "랜덤 확장 추천" #~ msgid "Performance and stability" #~ msgstr "성능과 안정성" #~ msgid "Various bug fixes" #~ msgstr "다양한 버그 고침" #~ msgid "Remove release notes dialog" #~ msgstr "릴리스 노트 대화 상자 제거" #~ msgid "Fix special characters in installed extension listings" #~ msgstr "설치된 확장 목록에서 특수 문자 수정" #~ msgid "The second feature update to extension-manager. Highlights include:" #~ msgstr "" #~ "확장 관리자에 대한 두 번째 기능 업데이트입니다. 하이라이트는 다음과 같습니" #~ "다:" #~ msgid "View comments and reviews" #~ msgstr "댓글과 리뷰 보기" #~ msgid "Support for in-app updates" #~ msgstr "인앱 업데이트 지원" #~ msgid "Better handling errors and out-of-date extensions" #~ msgstr "오류 및 오래된 확장 처리 능력 향상" #~ msgid "Allow installing 'unsupported' extensions" #~ msgstr "'지원되지 않는' 확장 설치 허용" #~ msgid "Display release notes on first run" #~ msgstr "첫 실행시 릴리즈 노트 띄우기" #~ msgid "New app icon" #~ msgstr "새 앱 아이콘" #~ msgid "Optionally sort extensions by enabled status" #~ msgstr "선택적으로 사용 가능한 상태별로 확장 정렬" #~ msgid "Fix special characters in search results" #~ msgstr "검색 결과에서 특수 문자 수정" #~ msgid "Fixes a crash that sometimes occurs while uninstalling an extension" #~ msgstr "확장을 제거하는 동안 종종 발생하는 충돌을 수정합니다" #~ msgid "The first feature update to extension-manager. Highlights include:" #~ msgstr "" #~ "확장 관리자에 대한 첫 번째 기능 업데이트입니다. 하이라이트는 다음을 포함합" #~ "니다:" #~ msgid "Dark theme and support for overriding the system colour scheme" #~ msgstr "어두운 테마와 시스템 색상 체계를 무시하기 위한 지원" #~ msgid "Shows screenshots in extension listings" #~ msgstr "확장 목록에 스크린샷을 표시합니다" #~ msgid "Shell version compatibility check" #~ msgstr "Shell 버전 호한성 체크" #~ msgid "Localised into seven languages" #~ msgstr "일곱 언어로 현지화되었습니다" #~ msgid "Global extension on/off toggle" #~ msgstr "전역 확장 on/off 토글" #~ msgid "Displays user and system extensions separately" #~ msgstr "사용자 및 시스템 확장을 별도로 표시합니다" #~ msgid "Extension Manager (Development)" #~ msgstr "확장 관리자 (개발 버전)" extension-manager-0.6.3/po/meson.build000066400000000000000000000000621477302130300177220ustar00rootroot00000000000000i18n.gettext('extension-manager', preset: 'glib') extension-manager-0.6.3/po/nb.po000066400000000000000000000536361477302130300165360ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the extension-manager package. # John Erling Blad , 2022. # Brage Fuglseth , 2024, 2025. # Daniel Fossum , 2024. msgid "" msgstr "" "Project-Id-Version: extension-manager\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-03-06 16:36+0000\n" "PO-Revision-Date: 2025-03-12 08:01+0000\n" "Last-Translator: Brage Fuglseth \n" "Language-Team: Norwegian Bokmål \n" "Language: nb\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: Weblate 5.10.3-dev\n" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:2 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:6 #: src/exm-window.blp:7 msgid "Extension Manager" msgstr "Extension Manager" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:11 msgid "Manage GNOME Shell Extensions" msgstr "Administrer GNOME Shell utvidelser" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #. Make sure to leave the original strings and add your translations afterwards, so that users can search both in English and your language. #: data/com.mattjakeman.ExtensionManager.desktop.in.in:14 msgid "extension;manager;shell;" msgstr "" "utvidelser;utvidelsesbehandling;utvidelseshåndtering;" "utvidelsesadministrering;GNOME;shell;skall;" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:7 msgid "Browse, install, and manage GNOME Shell Extensions" msgstr "Søk, installer og administrer GNOME Shell utvidelser" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:13 msgid "A utility for browsing and installing GNOME Shell Extensions." msgstr "" "Ønsker du å endre oppførselen eller utseendet til GNOME-systemet ditt? Det " "kan du gjøre med utvidelser." #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:14 msgid "Features:" msgstr "Med Extension Manager er det lett å komme i gang:" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:16 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:26 msgid "Browse extensions.gnome.org right inside the app" msgstr "Utforsk og last ned nye utvidelser" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:17 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:22 msgid "Manage the extensions you already have installed" msgstr "Administrer og still inn allerede installerte utvidelser" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:30 msgid "See all the details of your extensions" msgstr "Se all informasjon om utvidelsene dine på ett sted" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:34 msgid "Check your extensions compatibility with the next version of GNOME" msgstr "Sjekk om utvidelsene dine er kompatible med neste GNOME-versjon" #: src/exm-application.c:201 msgid "Browse, install, and manage GNOME Shell Extensions." msgstr "Søk, installer og administrer GNOME Shell utvidelser." #. Translators: Use 'Name email@domain.com' or 'Name https://website.example' (without single quotes). Do not delete existing names, write yours on a new line. #: src/exm-application.c:204 msgid "translator-credits" msgstr "Brage Fuglseth https://bragefuglseth.dev" #: src/exm-browse-page.blp:16 msgid "Search for Extensions" msgstr "Søk etter utvidelser" #: src/exm-browse-page.blp:17 msgid "" "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell Extensions" msgstr "Begynn å skrive for å søke etter utvidelser på extensions.gnome.org" #: src/exm-browse-page.blp:47 msgid "Relevance" msgstr "Relevans" #: src/exm-browse-page.blp:48 msgctxt "Sort search results" msgid "Downloads" msgstr "Nedlastinger" #: src/exm-browse-page.blp:49 msgid "Recent" msgstr "Nylighet" #: src/exm-browse-page.blp:50 src/exm-detail-view.blp:113 msgid "Name" msgstr "Navn" #: src/exm-browse-page.blp:57 msgid "Sort search results" msgstr "Sorter søkeresultatene" #: src/exm-browse-page.blp:103 msgid "_Load More Results" msgstr "_Last inn mer" #: src/exm-browse-page.blp:137 src/exm-installed-page.blp:123 msgid "No Results Found" msgstr "Ingen treff" #: src/exm-browse-page.blp:144 msgid "Try a different search" msgstr "Prøv et annet søk" #: src/exm-browse-page.blp:178 src/exm-comment-dialog.blp:34 #: src/exm-detail-view.blp:49 src/exm-detail-view.blp:291 #: src/exm-upgrade-assistant.blp:100 msgid "Connection Error" msgstr "Tilkoblingsfeil" #: src/exm-comment-dialog.blp:13 src/exm-detail-view.blp:248 msgid "Reviews and Comments" msgstr "Anmeldelser og kommentarer" #: src/exm-comment-dialog.blp:25 msgid "Loading" msgstr "Laster inn" #: src/exm-comment-tile.blp:30 src/exm-detail-view.blp:127 msgid "Author" msgstr "Utvikler" #: src/exm-detail-view.blp:40 msgid "Loading Details" msgstr "Laster informasjon" #: src/exm-detail-view.blp:59 src/exm-window.c:347 msgid "An Error Occurred" msgstr "Det oppstod et problem" #: src/exm-detail-view.blp:60 msgid "No extension details available" msgstr "Ingen informasjon tilgjengelig" #: src/exm-detail-view.blp:154 msgid "Enlarge Image" msgstr "Forstørr bilde" #: src/exm-detail-view.blp:172 src/exm-extension-row.blp:89 msgid "Description" msgstr "Beskrivelse" #: src/exm-detail-view.blp:195 msgid "Links" msgstr "Lenker" #: src/exm-detail-view.blp:203 msgid "Homepage" msgstr "Nettsted" #: src/exm-detail-view.blp:219 msgid "Donate" msgstr "Doner" #: src/exm-detail-view.blp:228 msgid "View on Extensions" msgstr "Side på extensions.gnome.org" #: src/exm-detail-view.blp:271 msgid "Reviews and comments are disabled for this extension" msgstr "Anmeldelser og kommentarer er slått av for denne utvidelsen" #: src/exm-detail-view.blp:314 msgid "There are no reviews or comments" msgstr "Ingen anmeldelser eller kommentarer" #: src/exm-detail-view.blp:343 msgid "_Show All" msgstr "_Vis mer" #. Translators: '%s' = extension name #: src/exm-detail-view.c:445 #, c-format msgid "%s Icon" msgstr "Ikon til %s" #. Translators: '%s' = extension name #: src/exm-detail-view.c:478 #, c-format msgid "%s Screenshot" msgstr "Skjermbilde av %s" #: src/exm-error-dialog.blp:7 msgid "Error Report" msgstr "Feilmelding" #: src/exm-error-dialog.blp:22 msgid "An unexpected error occurred in Extension Manager" msgstr "Noe gikk galt med Extension Manager" #: src/exm-error-dialog.blp:36 msgid "Copy to Clipboard" msgstr "Kopier" #: src/exm-error-dialog.blp:77 msgid "_New Issue" msgstr "_Ny sak" #. Success indicator #: src/exm-error-dialog.c:125 src/exm-upgrade-assistant.c:347 msgid "Copied" msgstr "Kopiert" #: src/exm-error-dialog.c:173 msgid "Please open a new issue and attach the following information:" msgstr "Åpne en ny sak og oppgi følgende informasjon:" #. Translators: '%s' = Name of Distributor (e.g. "Packager123") #: src/exm-error-dialog.c:177 #, c-format msgid "" "You are using a third-party build of Extension Manager. Please contact the package distributor (%s) first before " "filing an issue. Be sure to attach the following information:" msgstr "" "Du bruker en uoffisielt distribuert versjon av Extension Manager. Kontakt leverandøren av pakken (%s) først før du " "åpner en ny sak. Oppgi følgende informasjon:" #. Translators: Button's tooltip to open extension's preferences dialog #: src/exm-extension-row.blp:28 msgid "Open extension preferences" msgstr "Åpne innstillinger" #. Translators: Icon's tooltip when an extension has an error #: src/exm-extension-row.blp:46 msgid "An error occurred while loading this extension" msgstr "Noe gikk galt under innlastingen" #. Translators: Icon's tooltip when an extension is incompatible #: src/exm-extension-row.blp:63 src/exm-install-button.c:117 msgid "This extension is incompatible with your current version of GNOME" msgstr "Denne utvidelsen er inkompatibel med GNOME-versjonen din" #. Translators: Icon's tooltip when an extension update is available #: src/exm-extension-row.blp:80 msgid "A newer version of this extension is available" msgstr "En nyere versjon av denne utvidelsen er tilgjengelig" #: src/exm-extension-row.blp:98 src/exm-info-bar.blp:50 msgid "Version" msgstr "Versjon" #: src/exm-extension-row.blp:107 msgid "Session Modes" msgstr "Moduser" #: src/exm-extension-row.blp:137 msgid "Error" msgstr "Feil" #: src/exm-extension-row.blp:158 msgid "See Details" msgstr "Se detaljer" #: src/exm-extension-row.blp:169 msgid "Remove…" msgstr "Fjern…" #: src/exm-extension-row.c:175 msgid "Unlock Dialog" msgstr "Låseskjerm" #. Translators: GNOME Display Manager #: src/exm-extension-row.c:181 msgid "GDM" msgstr "GDM" #. Translators: Label when an extension runs on both, login and lock screens #: src/exm-extension-row.c:189 msgid "" "This extension will run while the screen is locked and no user is logged in" msgstr "Denne utvidelsen vil kjøres mens skjermen er låst og ingen er innlogget" #. Translators: Label when an extension runs on the lock screen #: src/exm-extension-row.c:194 msgid "This extension will run while the screen is locked" msgstr "Denne utvidelsen vil kjøres mens skjermen er låst" #. Translators: Label when an extension runs on the login screen #: src/exm-extension-row.c:199 msgid "This extension will run while no user is logged in" msgstr "Denne utvidelsen vil kjøres mens ingen er innlogget" #: src/exm-help-overlay.blp:11 msgctxt "shortcut window" msgid "General" msgstr "Generelt" #: src/exm-help-overlay.blp:14 msgctxt "shortcut window" msgid "Show Installed Page" msgstr "Vis installerte utvidelser" #: src/exm-help-overlay.blp:19 msgctxt "shortcut window" msgid "Show Browse Page" msgstr "Vis utforskningsside" #: src/exm-help-overlay.blp:24 msgctxt "shortcut window" msgid "Toggle Search" msgstr "Søk" #: src/exm-help-overlay.blp:29 msgctxt "shortcut window" msgid "Show Keyboard Shortcuts" msgstr "Vis tastatursnarveier" #: src/exm-help-overlay.blp:34 msgctxt "shortcut window" msgid "Close Window" msgstr "Lukk" #: src/exm-help-overlay.blp:39 msgctxt "shortcut window" msgid "Quit" msgstr "Avslutt" #: src/exm-help-overlay.blp:45 msgctxt "shortcut window" msgid "Screenshot View" msgstr "Vis skjermbilder" #: src/exm-help-overlay.blp:48 src/exm-help-overlay.blp:63 msgctxt "shortcut window" msgid "Zoom In" msgstr "Forstørr" #: src/exm-help-overlay.blp:53 src/exm-help-overlay.blp:68 msgctxt "shortcut window" msgid "Zoom Out" msgstr "Forminsk" #: src/exm-help-overlay.blp:58 msgctxt "shortcut window" msgid "Reset Zoom" msgstr "Tilbakestill zoom" #: src/exm-info-bar.blp:28 msgctxt "Number of downloads" msgid "Downloads" msgstr "Nedlastinger" #: src/exm-info-bar.c:107 msgid "Unsupported" msgstr "Støttes ikke" #: src/exm-install-button.c:127 msgid "Install…" msgstr "Installer…" #: src/exm-install-button.c:132 msgid "Installing" msgstr "Installerer" #: src/exm-install-button.c:136 msgctxt "State" msgid "Installed" msgstr "Installert" #: src/exm-install-button.c:140 msgid "Unsupported…" msgstr "Støttes ikke…" #: src/exm-installed-page.blp:16 msgid "_Log Out…" msgstr "_Logg ut…" #: src/exm-installed-page.blp:28 msgid "Use Extensions" msgstr "Bruk utvidelser" #: src/exm-installed-page.blp:29 msgid "Extensions can cause performance and stability issues" msgstr "Utvidelser kan skape problemer med ytelse og stabilitet" #: src/exm-installed-page.blp:34 src/exm-upgrade-assistant.blp:133 msgid "User-Installed Extensions" msgstr "Brukerinstallert utvidelser" #: src/exm-installed-page.blp:51 src/exm-upgrade-assistant.blp:150 msgid "No User Extensions Installed" msgstr "Ingen brukerutvidelser er installert" #: src/exm-installed-page.blp:55 msgid "Browse" msgstr "Utforsk" #: src/exm-installed-page.blp:69 src/exm-upgrade-assistant.blp:160 msgid "System Extensions" msgstr "Systeminstallerte utvidelser" #: src/exm-installed-page.blp:86 src/exm-upgrade-assistant.blp:177 msgid "No System Extensions Installed" msgstr "Ingen systemutvidelser er installert" #. Translators: Text announced by screen readers when interacting with the list of search results #: src/exm-installed-page.blp:111 msgid "Search Results" msgstr "Søketreff" #: src/exm-installed-page.blp:124 msgid "Try a different search or search online" msgstr "Prøv et annet søk på nettet" #: src/exm-installed-page.blp:131 msgid "_Search Online" msgstr "Søk på nettet" #. Translators: '%d' = number of extensions that will be updated #: src/exm-installed-page.c:298 #, c-format msgid "%d extension will be updated on next login" msgid_plural "%d extensions will be updated on next login" msgstr[0] "1 utvidelse vil oppdateres ved neste innlogging" msgstr[1] "%d utvidelser vil oppdateres ved neste innlogging" #: src/exm-rating.c:142 #, c-format msgid "%i Star" msgid_plural "%i Stars" msgstr[0] "%i stjerne" msgstr[1] "%i stjerner" #. Translators: Button's tooltip to zoom out screenshots #: src/exm-screenshot-view.blp:37 msgid "Zoom Out" msgstr "Forminsk" #. Translators: Button's tooltip to zoom in screenshots #: src/exm-screenshot-view.blp:51 msgid "Zoom In" msgstr "Forstørr" #: src/exm-upgrade-assistant.blp:11 msgid "Upgrade Assistant" msgstr "Oppdateringssjekk" #: src/exm-upgrade-assistant.blp:66 msgid "_Check Compatibility" msgstr "_Sjekk kompatibilitet" #: src/exm-upgrade-assistant.blp:189 msgid "_Copy to Clipboard" msgstr "_Kopier" #: src/exm-upgrade-assistant.c:188 #, c-format msgid "Checked %d/%d Extensions" msgstr "Sjekker %d/%d" #. Set percentage text #: src/exm-upgrade-assistant.c:207 #, c-format msgid "%d%% Compatible" msgstr "%d %% kompatibilitet" #: src/exm-upgrade-assistant.c:223 #, c-format msgid "" "GNOME %s supports %d out of %d of the extensions currently " "installed on the system" msgstr "" "GNOME %s støtter %d av %d nåværende utvidelser på systemet" #. Translators: Icon's tooltip when an extension is compatible #: src/exm-upgrade-assistant.c:503 msgid "A compatible version of the extension exists" msgstr "Utvidelsen har en kompatibel versjon" #. Translators: Icon's tooltip when an extension is not compatible #: src/exm-upgrade-assistant.c:510 msgid "No compatible version of the extension exists" msgstr "Utvidelsen har ikke en kompatibel versjon" #. Translators: Icon's tooltip when an extension compatibility is unknown #: src/exm-upgrade-assistant.c:517 msgid "" "This extension is not hosted on extensions.gnome.org. Its compatibility " "cannot be determined." msgstr "" "Denne utvidelsen er ikke fra extensions.gnome.org. Kompatibiliteten kan ikke " "sjekkes." #: src/exm-upgrade-assistant.c:608 #, c-format msgid "" "You are currently running GNOME %s. Select a version of GNOME below " "and check whether your extensions will continue to be available." msgstr "" "Du bruker GNOME %s. Velg en GNOME-versjon under for å sjekke om " "utvidelsene dine fortsatt er tilgjengelige." #. Translators: Tooltip of the search icon in the header bar #: src/exm-window.blp:39 msgid "Search Installed Extensions" msgstr "Søk etter installerte utvidelser" #: src/exm-window.blp:48 msgid "Main Menu" msgstr "Hovedmeny" #: src/exm-window.blp:59 msgid "Search for installed extensions" msgstr "Søk etter installerte utvidelser" #: src/exm-window.blp:71 msgctxt "Navigation" msgid "_Installed" msgstr "_Installert" #: src/exm-window.blp:80 msgctxt "Navigation" msgid "_Browse" msgstr "_Utforsk" #. Translators: the character preceded by "_" should not be the same #. as others in the same menu #: src/exm-window.blp:108 msgid "Sort _Enabled First" msgstr "Vis _påslåtte først" #: src/exm-window.blp:109 msgid "_Show Unsupported" msgstr "Vis _ustøttede" #: src/exm-window.blp:113 msgid "_Upgrade Assistant" msgstr "Oppdaterings_sjekk" #: src/exm-window.blp:114 msgid "_Keyboard Shortcuts" msgstr "_Tastatursnarveier" #: src/exm-window.blp:115 msgid "_About Extension Manager" msgstr "_Om Extension Manager" #: src/exm-window.blp:120 msgid "Uninstall Extension?" msgstr "Fjerne utvidelse?" #: src/exm-window.blp:121 msgid "" "The extension's features and functionality will no longer be accessible. Are " "you sure you want to uninstall?" msgstr "" "Utvidelsens funksjoner kommer til å fjernes fra systemet. Er du sikker på at " "du vil avinstallere?" #: src/exm-window.blp:126 msgid "_No" msgstr "_Avbryt" #: src/exm-window.blp:127 msgid "_Yes" msgstr "_Fjern" #: src/exm-window.blp:132 msgid "Unsupported Extension" msgstr "Ustøttet utvidelse" #: src/exm-window.blp:133 msgid "" "This extension does not support your GNOME Shell version. It may cause " "errors if installed." msgstr "" "Denne utvidelsen støtter ikke GNOME-versjonen din. Den kan skape problemer " "hvis den installeres." #: src/exm-window.blp:139 msgid "_Install Anyway" msgstr "_Installer" #: src/exm-window.blp:140 msgid "_Go Back" msgstr "_Gå tilbake" #: src/exm-window.c:348 msgid "_Details" msgstr "_Informasjon" #: src/web/exm-request-handler.c:99 msgid "" "Check GNOME infrastructure status " "and try again later" msgstr "" "Sjekk GNOME-infrastrukturens status " "og prøv igjen senere" #: src/web/exm-request-handler.c:100 msgid "Check your network status and try again" msgstr "Sjekk nettverkstilkoblingen din og prøv igjen" #~ msgid "Comments" #~ msgstr "Kommentarer" #~ msgid "Loading Comments" #~ msgstr "Laster inn kommentarer" #~ msgid "User Reviews" #~ msgstr "Anmeldelser" #~ msgid "No comments yet" #~ msgstr "Ingen anmeldelser" #~ msgid "" #~ "This extension could be activated in session modes such as the login " #~ "screen or the lock screen" #~ msgstr "" #~ "Denne utvidelsen kan aktiveres på steder som innloggingsskjermen eller " #~ "låseskjermen" #, c-format #~ msgid "%s by %s" #~ msgstr "%s fra %s" #, fuzzy #~| msgid "Updates are available" #~ msgid "Updates Available" #~ msgstr "Oppdateringer tilgjengelig" #~ msgid "Supported" #~ msgstr "Støttet" #~ msgid "Unknown" #~ msgstr "Ukjent" #~ msgid "A utility for managing GNOME Shell Extensions" #~ msgstr "Installer og administrer utvidelser" #, c-format #~ msgid "e.g. “%s”" #~ msgstr "F.eks. «%s»" #~ msgid "This extension is incompatible with your current version of GNOME." #~ msgstr "Denne utvidelsen er inkompatibel med GNOME-versjonen din" #~ msgid "An error occurred." #~ msgstr "Noe gikk galt." #~ msgid "Return to view" #~ msgstr "Gå tilbake" #~ msgid "@app_title@" #~ msgstr "@app_title@" #~ msgid "Translation updates" #~ msgstr "Oversettelsesoppdateringer" #~ msgid "Various bug fixes" #~ msgstr "Ulike feilrettinger" #~ msgid "Performance and stability" #~ msgstr "Ytelse og stabilitet" #~ msgid "Remove release notes dialog" #~ msgstr "Fjern dialogboksen for versjonsnotater" #~ msgid "Fix special characters in installed extension listings" #~ msgstr "Rett opp spesialtegn i installerte utvidelsesoppføringer" #~ msgid "The second feature update to extension-manager. Highlights include:" #~ msgstr "" #~ "Den andre funksjonsoppdateringen til Utvidelsesadministrasjon. " #~ "Høydepunkter inkluderer:" #~ msgid "View comments and reviews" #~ msgstr "Se kommentarer og anmeldelser" #~ msgid "Support for in-app updates" #~ msgstr "Støtte for oppdateringer i appen" #~ msgid "Better handling errors and out-of-date extensions" #~ msgstr "Bedre håndtering av feil og utdaterte utvidelser" #~ msgid "Allow installing 'unsupported' extensions" #~ msgstr "Tillat installasjon av 'ustøttede' utvidelser" #~ msgid "Display release notes on first run" #~ msgstr "Vis utgivelsesnotater ved første kjøring" #~ msgid "New app icon" #~ msgstr "Nytt app-ikon" #~ msgid "Optionally sort extensions by enabled status" #~ msgstr "Valgfri sortering av utvidelser etter aktivert status" #~ msgid "Fix special characters in search results" #~ msgstr "Rett opp spesialtegn i søkeresultater" #~ msgid "Fixes a crash that sometimes occurs while uninstalling an extension" #~ msgstr "" #~ "Fikser et krasj som noen ganger opptrer under under avinstallering av en " #~ "utvidelse" #~ msgid "The first feature update to extension-manager. Highlights include:" #~ msgstr "" #~ "Den første funksjonsoppdateringen til Utvidelsesadministrasjon. " #~ "Høydepunkter inkluderer:" #~ msgid "Dark theme and support for overriding the system colour scheme" #~ msgstr "Mørkt tema og støtte for å overstyre systemets fargeskjema" #~ msgid "Shows screenshots in extension listings" #~ msgstr "Vis skjermskudd i listingen av utvidelser" #~ msgid "Shell version compatibility check" #~ msgstr "Kompatibilitetssjekk av skallversjon" #~ msgid "Localised into seven languages" #~ msgstr "Lokalisert til syv språk" #~ msgid "Global extension on/off toggle" #~ msgstr "Global av/på for utvidelser" #~ msgid "Displays user and system extensions separately" #~ msgstr "Vis bruker- og systemutvidelser separat" #~ msgid "Extension Manager (Development)" #~ msgstr "Utvidelsesadministrering (Utvikling)" #~ msgid "Popularity" #~ msgstr "Popularitet" #~ msgid "Supported Versions" #~ msgstr "Støttede versjoner" #~ msgctxt "Navigation" #~ msgid "Browse" #~ msgstr "Bla" #~ msgid "Theme" #~ msgstr "Tema" #~ msgid "Follow System" #~ msgstr "Følg systemet" #~ msgid "Light" #~ msgstr "Lyst" #~ msgid "Dark" #~ msgstr "Mørkt" #~ msgid "Are you sure you want to uninstall?" #~ msgstr "Er du sikker på at du ønsker å avinstallere?" #~ msgid "Matthew Jakeman" #~ msgstr "Matthew Jakeman" #~ msgid "Colour Scheme Preference" #~ msgstr "Preferanse for fargevalg" #~ msgid "" #~ "Whether to follow the system colour scheme or force either light or dark " #~ "mode." #~ msgstr "" #~ "Om systemets fargeskjema følges, eller om lys eller mørk modus brukes." #~ msgid "" #~ "A very simple tool for browsing, downloading, and managing GNOME shell " #~ "extensions." #~ msgstr "" #~ "Et veldig enkelt verktøy for å bla gjennom, laste ned og administrere " #~ "GNOME-skallutvidelser." #~ msgid "e.g. \"Blur my Shell\"" #~ msgstr "e.g. «Tilslør skallet mitt»" #~ msgctxt "shortcut window" #~ msgid "Show Shortcuts" #~ msgstr "Vis snarveier" extension-manager-0.6.3/po/nl.po000066400000000000000000000576071477302130300165520ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the extension-manager package. # Philip Goto , 2024, 2025. msgid "" msgstr "" "Project-Id-Version: extension-manager\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-03-06 16:36+0000\n" "PO-Revision-Date: 2025-03-01 18:46+0000\n" "Last-Translator: Philip Goto \n" "Language-Team: Dutch \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" "X-Generator: Weblate 5.10.3-dev\n" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:2 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:6 #: src/exm-window.blp:7 msgid "Extension Manager" msgstr "Uitbreidings­beheer" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:11 msgid "Manage GNOME Shell Extensions" msgstr "Beheer GNOME Shell-uitbreidingen" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #. Make sure to leave the original strings and add your translations afterwards, so that users can search both in English and your language. #: data/com.mattjakeman.ExtensionManager.desktop.in.in:14 msgid "extension;manager;shell;" msgstr "extension;manager;shell;uitbreiding;extensie;beheer;" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:7 msgid "Browse, install, and manage GNOME Shell Extensions" msgstr "Ontdek, installeer en beheer GNOME Shell-uitbreidingen" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:13 msgid "A utility for browsing and installing GNOME Shell Extensions." msgstr "" "Een app voor het ontdekken en installeren van GNOME Shell-uitbreidingen." #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:14 msgid "Features:" msgstr "Functies:" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:16 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:26 msgid "Browse extensions.gnome.org right inside the app" msgstr "" "Blader door uitbreidingen van extensions.gnome.org recht­streeks in de app" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:17 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:22 msgid "Manage the extensions you already have installed" msgstr "Beheer de reeds geïnstalleerde uitbreidingen" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:30 msgid "See all the details of your extensions" msgstr "Bekijk alle details van uw uitbreidingen" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:34 msgid "Check your extensions compatibility with the next version of GNOME" msgstr "" "Controleer de compatibiliteit van uw extensies met de volgende versie van " "GNOME" #: src/exm-application.c:201 msgid "Browse, install, and manage GNOME Shell Extensions." msgstr "Ontdek, installeer en beheer GNOME Shell-uitbreidingen." #. Translators: Use 'Name email@domain.com' or 'Name https://website.example' (without single quotes). Do not delete existing names, write yours on a new line. #: src/exm-application.c:204 msgid "translator-credits" msgstr "" "Heimen Stoffels \n" "Philip Goto https://philipgoto.nl/" #: src/exm-browse-page.blp:16 msgid "Search for Extensions" msgstr "Zoeken naar uitbreidingen" #: src/exm-browse-page.blp:17 msgid "" "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell Extensions" msgstr "" "Voer een zoek­term in om ‘extensions.gnome.org’ te door­zoeken op GNOME Shell-" "uitbreidingen" #: src/exm-browse-page.blp:47 msgid "Relevance" msgstr "Relevantie" #: src/exm-browse-page.blp:48 msgctxt "Sort search results" msgid "Downloads" msgstr "Downloads" #: src/exm-browse-page.blp:49 msgid "Recent" msgstr "Recent" #: src/exm-browse-page.blp:50 src/exm-detail-view.blp:113 msgid "Name" msgstr "Naam" #: src/exm-browse-page.blp:57 msgid "Sort search results" msgstr "Zoekresultaten kunnen worden gesorteerd" #: src/exm-browse-page.blp:103 msgid "_Load More Results" msgstr "_Meer resultaten laden" #: src/exm-browse-page.blp:137 src/exm-installed-page.blp:123 msgid "No Results Found" msgstr "Geen resultaten gevonden" #: src/exm-browse-page.blp:144 msgid "Try a different search" msgstr "Probeer een andere zoek­opdracht" #: src/exm-browse-page.blp:178 src/exm-comment-dialog.blp:34 #: src/exm-detail-view.blp:49 src/exm-detail-view.blp:291 #: src/exm-upgrade-assistant.blp:100 msgid "Connection Error" msgstr "Verbindings­fout" #: src/exm-comment-dialog.blp:13 src/exm-detail-view.blp:248 msgid "Reviews and Comments" msgstr "Beoordelingen en opmerkingen" #: src/exm-comment-dialog.blp:25 msgid "Loading" msgstr "Bezig met laden" #: src/exm-comment-tile.blp:30 src/exm-detail-view.blp:127 msgid "Author" msgstr "Auteur" #: src/exm-detail-view.blp:40 msgid "Loading Details" msgstr "Details laden" #: src/exm-detail-view.blp:59 src/exm-window.c:347 msgid "An Error Occurred" msgstr "Er is een fout opgetreden" #: src/exm-detail-view.blp:60 msgid "No extension details available" msgstr "Geen uitbreidings­details beschikbaar" #: src/exm-detail-view.blp:154 msgid "Enlarge Image" msgstr "Afbeelding vergroten" #: src/exm-detail-view.blp:172 src/exm-extension-row.blp:89 msgid "Description" msgstr "Omschrijving" #: src/exm-detail-view.blp:195 msgid "Links" msgstr "Links" #: src/exm-detail-view.blp:203 msgid "Homepage" msgstr "Start­pagina" #: src/exm-detail-view.blp:219 msgid "Donate" msgstr "Doneren" #: src/exm-detail-view.blp:228 msgid "View on Extensions" msgstr "Uitbreidings­pagina openen" #: src/exm-detail-view.blp:271 msgid "Reviews and comments are disabled for this extension" msgstr "Beoordelingen en opmerkingen zijn uitgeschakeld voor deze uitbreiding" #: src/exm-detail-view.blp:314 msgid "There are no reviews or comments" msgstr "Er zijn geen beoordelingen of opmerkingen" #: src/exm-detail-view.blp:343 msgid "_Show All" msgstr "_Alles tonen" #. Translators: '%s' = extension name #: src/exm-detail-view.c:445 #, c-format msgid "%s Icon" msgstr "Icoon van %s" #. Translators: '%s' = extension name #: src/exm-detail-view.c:478 #, c-format msgid "%s Screenshot" msgstr "Scherm­afdruk van %s" #: src/exm-error-dialog.blp:7 msgid "Error Report" msgstr "Fout­melding" #: src/exm-error-dialog.blp:22 msgid "An unexpected error occurred in Extension Manager" msgstr "Er is een onverwachte fout opgetreden in Uitbreidings­beheer" #: src/exm-error-dialog.blp:36 msgid "Copy to Clipboard" msgstr "Kopiëren naar klem­bord" #: src/exm-error-dialog.blp:77 msgid "_New Issue" msgstr "_Nieuwe issue" #. Success indicator #: src/exm-error-dialog.c:125 src/exm-upgrade-assistant.c:347 msgid "Copied" msgstr "Gekopieerd" #: src/exm-error-dialog.c:173 msgid "Please open a new issue and attach the following information:" msgstr "Open een nieuwe issue en voeg de volgende informatie toe:" #. Translators: '%s' = Name of Distributor (e.g. "Packager123") #: src/exm-error-dialog.c:177 #, c-format msgid "" "You are using a third-party build of Extension Manager. Please contact the package distributor (%s) first before " "filing an issue. Be sure to attach the following information:" msgstr "" "U gebruikt een build van Uitbreidings­beheer van derden. Neem eerst contact op met de pakket­distributeur (%s) " "voordat u een probleem indient. Zorg ervoor dat u de volgende informatie " "bijvoegt:" #. Translators: Button's tooltip to open extension's preferences dialog #: src/exm-extension-row.blp:28 msgid "Open extension preferences" msgstr "Uitbreidings­voorkeuren openen" #. Translators: Icon's tooltip when an extension has an error #: src/exm-extension-row.blp:46 msgid "An error occurred while loading this extension" msgstr "Er is een fout opgetreden tijdens het laden" #. Translators: Icon's tooltip when an extension is incompatible #: src/exm-extension-row.blp:63 src/exm-install-button.c:117 msgid "This extension is incompatible with your current version of GNOME" msgstr "Deze uitbreiding is niet compatibel met uw huidige versie van GNOME" #. Translators: Icon's tooltip when an extension update is available #: src/exm-extension-row.blp:80 msgid "A newer version of this extension is available" msgstr "Er is een nieuwe versie beschikbaar" #: src/exm-extension-row.blp:98 src/exm-info-bar.blp:50 msgid "Version" msgstr "Versie" #: src/exm-extension-row.blp:107 msgid "Session Modes" msgstr "Sessie­modi" #: src/exm-extension-row.blp:137 msgid "Error" msgstr "Fout" #: src/exm-extension-row.blp:158 msgid "See Details" msgstr "Details tonen" #: src/exm-extension-row.blp:169 msgid "Remove…" msgstr "Verwijderen…" #: src/exm-extension-row.c:175 msgid "Unlock Dialog" msgstr "Ontgrendel­dialoog" #. Translators: GNOME Display Manager #: src/exm-extension-row.c:181 msgid "GDM" msgstr "GDM" #. Translators: Label when an extension runs on both, login and lock screens #: src/exm-extension-row.c:189 msgid "" "This extension will run while the screen is locked and no user is logged in" msgstr "" "Deze uitbreiding wordt uitgevoerd terwijl het scherm vergrendeld is en er " "geen gebruiker is ingelogd" #. Translators: Label when an extension runs on the lock screen #: src/exm-extension-row.c:194 msgid "This extension will run while the screen is locked" msgstr "Deze uitbreiding wordt uitgevoerd terwijl het scherm vergrendeld is" #. Translators: Label when an extension runs on the login screen #: src/exm-extension-row.c:199 msgid "This extension will run while no user is logged in" msgstr "Deze uitbreiding wordt uitgevoerd terwijl er geen gebruiker is ingelogd" #: src/exm-help-overlay.blp:11 msgctxt "shortcut window" msgid "General" msgstr "Algemeen" #: src/exm-help-overlay.blp:14 msgctxt "shortcut window" msgid "Show Installed Page" msgstr "Pagina geïnstalleerd tonen" #: src/exm-help-overlay.blp:19 msgctxt "shortcut window" msgid "Show Browse Page" msgstr "Pagina bladeren tonen" #: src/exm-help-overlay.blp:24 msgctxt "shortcut window" msgid "Toggle Search" msgstr "Zoeken omschakelen" #: src/exm-help-overlay.blp:29 msgctxt "shortcut window" msgid "Show Keyboard Shortcuts" msgstr "Snel­toetsen tonen" #: src/exm-help-overlay.blp:34 msgctxt "shortcut window" msgid "Close Window" msgstr "Venster sluiten" #: src/exm-help-overlay.blp:39 msgctxt "shortcut window" msgid "Quit" msgstr "Afsluiten" #: src/exm-help-overlay.blp:45 msgctxt "shortcut window" msgid "Screenshot View" msgstr "Weergave van scherm­afdruk" #: src/exm-help-overlay.blp:48 src/exm-help-overlay.blp:63 msgctxt "shortcut window" msgid "Zoom In" msgstr "Inzoomen" #: src/exm-help-overlay.blp:53 src/exm-help-overlay.blp:68 msgctxt "shortcut window" msgid "Zoom Out" msgstr "Uitzoomen" #: src/exm-help-overlay.blp:58 msgctxt "shortcut window" msgid "Reset Zoom" msgstr "Zoom resetten" #: src/exm-info-bar.blp:28 msgctxt "Number of downloads" msgid "Downloads" msgstr "Downloads" #: src/exm-info-bar.c:107 msgid "Unsupported" msgstr "Niet-ondersteund" #: src/exm-install-button.c:127 msgid "Install…" msgstr "Installeren…" #: src/exm-install-button.c:132 msgid "Installing" msgstr "Bezig met installeren" #: src/exm-install-button.c:136 msgctxt "State" msgid "Installed" msgstr "Geïnstalleerd" #: src/exm-install-button.c:140 msgid "Unsupported…" msgstr "Niet-ondersteund…" #: src/exm-installed-page.blp:16 msgid "_Log Out…" msgstr "_Uitloggen…" #: src/exm-installed-page.blp:28 msgid "Use Extensions" msgstr "Uitbreidingen gebruiken" #: src/exm-installed-page.blp:29 msgid "Extensions can cause performance and stability issues" msgstr "" "Let op: uitbreidingen kunnen de prestaties en stabiliteit van uw systeem " "beïnvloeden" #: src/exm-installed-page.blp:34 src/exm-upgrade-assistant.blp:133 msgid "User-Installed Extensions" msgstr "Zelf-geïnstalleerde uitbreidingen" #: src/exm-installed-page.blp:51 src/exm-upgrade-assistant.blp:150 msgid "No User Extensions Installed" msgstr "Geen gebruikers­uitbreidingen geïnstalleerd" #: src/exm-installed-page.blp:55 msgid "Browse" msgstr "Ontdekken" #: src/exm-installed-page.blp:69 src/exm-upgrade-assistant.blp:160 msgid "System Extensions" msgstr "Systeem­uitbreidingen" #: src/exm-installed-page.blp:86 src/exm-upgrade-assistant.blp:177 msgid "No System Extensions Installed" msgstr "Geen systeem­uitbreidingen geïnstalleerd" #. Translators: Text announced by screen readers when interacting with the list of search results #: src/exm-installed-page.blp:111 msgid "Search Results" msgstr "Zoek­resultaten" #: src/exm-installed-page.blp:124 msgid "Try a different search or search online" msgstr "Probeer een andere zoek­opdracht of zoek online" #: src/exm-installed-page.blp:131 msgid "_Search Online" msgstr "_Online zoeken" #. Translators: '%d' = number of extensions that will be updated #: src/exm-installed-page.c:298 #, c-format msgid "%d extension will be updated on next login" msgid_plural "%d extensions will be updated on next login" msgstr[0] "Na de volgende keer inloggen wordt er %d uitbreiding bijgewerkt" msgstr[1] "Na de volgende keer inloggen worden er %d uitbreidingen bijgewerkt" #: src/exm-rating.c:142 #, c-format msgid "%i Star" msgid_plural "%i Stars" msgstr[0] "%i ster" msgstr[1] "%i sterren" #. Translators: Button's tooltip to zoom out screenshots #: src/exm-screenshot-view.blp:37 msgid "Zoom Out" msgstr "Uitzoomen" #. Translators: Button's tooltip to zoom in screenshots #: src/exm-screenshot-view.blp:51 msgid "Zoom In" msgstr "Inzoomen" #: src/exm-upgrade-assistant.blp:11 msgid "Upgrade Assistant" msgstr "Bijwerk­assistent" #: src/exm-upgrade-assistant.blp:66 msgid "_Check Compatibility" msgstr "_Compatibiliteit controleren" #: src/exm-upgrade-assistant.blp:189 msgid "_Copy to Clipboard" msgstr "_Kopiëren naar klem­bord" #: src/exm-upgrade-assistant.c:188 #, c-format msgid "Checked %d/%d Extensions" msgstr "%d/%d uitbreidingen gecontroleerd" #. Set percentage text #: src/exm-upgrade-assistant.c:207 #, c-format msgid "%d%% Compatible" msgstr "%d%% Compatibel" #: src/exm-upgrade-assistant.c:223 #, c-format msgid "" "GNOME %s supports %d out of %d of the extensions currently " "installed on the system" msgstr "" "GNOME %s ondersteunt %d van de %d op uw systeem aanwezige " "uitbreidingen" #. Translators: Icon's tooltip when an extension is compatible #: src/exm-upgrade-assistant.c:503 msgid "A compatible version of the extension exists" msgstr "Er is een compatibele versie van deze uitbreiding beschikbaar" #. Translators: Icon's tooltip when an extension is not compatible #: src/exm-upgrade-assistant.c:510 msgid "No compatible version of the extension exists" msgstr "Er is geen compatibele versie van deze uitbreiding beschikbaar" #. Translators: Icon's tooltip when an extension compatibility is unknown #: src/exm-upgrade-assistant.c:517 msgid "" "This extension is not hosted on extensions.gnome.org. Its compatibility " "cannot be determined." msgstr "" "Deze uitbreiding is niet beschikbaar op extensions.gnome.org, waardoor de " "compatibiliteit niet kan worden vastgesteld." #: src/exm-upgrade-assistant.c:608 #, c-format msgid "" "You are currently running GNOME %s. Select a version of GNOME below " "and check whether your extensions will continue to be available." msgstr "" "U gebruikt momenteel GNOME %s. Kies hieronder een GNOME-versie en " "controleer of uw uitbreidingen nog beschikbaar zijn." #. Translators: Tooltip of the search icon in the header bar #: src/exm-window.blp:39 msgid "Search Installed Extensions" msgstr "Zoeken in geïnstalleerde uit­breidingen" #: src/exm-window.blp:48 msgid "Main Menu" msgstr "Hoofd­menu" #: src/exm-window.blp:59 msgid "Search for installed extensions" msgstr "Zoeken naar geïnstalleerde uit­breidingen" #: src/exm-window.blp:71 msgctxt "Navigation" msgid "_Installed" msgstr "_Geïnstalleerd" #: src/exm-window.blp:80 msgctxt "Navigation" msgid "_Browse" msgstr "_Bladeren" #. Translators: the character preceded by "_" should not be the same #. as others in the same menu #: src/exm-window.blp:108 msgid "Sort _Enabled First" msgstr "_Ingeschakelde bovenaan tonen" #: src/exm-window.blp:109 msgid "_Show Unsupported" msgstr "_Niet-ondersteunde tonen" #: src/exm-window.blp:113 msgid "_Upgrade Assistant" msgstr "_Bijwerk­assistent" #: src/exm-window.blp:114 msgid "_Keyboard Shortcuts" msgstr "_Snel­toetsen" #: src/exm-window.blp:115 msgid "_About Extension Manager" msgstr "_Over Uitbreidings­beheer" #: src/exm-window.blp:120 msgid "Uninstall Extension?" msgstr "Uitbreiding verwijderen?" #: src/exm-window.blp:121 msgid "" "The extension's features and functionality will no longer be accessible. Are " "you sure you want to uninstall?" msgstr "" "De functionaliteit van de uitbreiding zal niet langer toegankelijk zijn. " "Weet u zeker dat u deze wilt verwijderen?" #: src/exm-window.blp:126 msgid "_No" msgstr "_Nee" #: src/exm-window.blp:127 msgid "_Yes" msgstr "_Ja" #: src/exm-window.blp:132 msgid "Unsupported Extension" msgstr "Niet-ondersteunde uitbreiding" #: src/exm-window.blp:133 msgid "" "This extension does not support your GNOME Shell version. It may cause " "errors if installed." msgstr "" "Deze uitbreiding is niet compatibel met uw huidige GNOME Shell-versie. Er " "kunnen fouten optreden als u deze installeert." #: src/exm-window.blp:139 msgid "_Install Anyway" msgstr "Toch _installeren" #: src/exm-window.blp:140 msgid "_Go Back" msgstr "_Terug" #: src/exm-window.c:348 msgid "_Details" msgstr "_Details" #: src/web/exm-request-handler.c:99 msgid "" "Check GNOME infrastructure status " "and try again later" msgstr "" "Controleer de GNOME-infrastructuur­" "status en probeer het later opnieuw" #: src/web/exm-request-handler.c:100 msgid "Check your network status and try again" msgstr "Controleer uw netwerk­verbinding en probeer opnieuw" #~ msgid "Comments" #~ msgstr "Opmerkingen" #~ msgid "Loading Comments" #~ msgstr "Opmerkingen laden" #~ msgid "User Reviews" #~ msgstr "Beoordelingen" #~ msgid "No comments yet" #~ msgstr "Nog geen opmerkingen" #~ msgid "" #~ "This extension could be activated in session modes such as the login " #~ "screen or the lock screen" #~ msgstr "" #~ "Deze uitbreiding kan worden geactiveerd in sessie­modussen zoals het inlog­" #~ "scherm of het vergrendel­scherm" #, c-format #~ msgid "%s by %s" #~ msgstr "%s door %s" #~ msgid "Updates Available" #~ msgstr "Updates beschikbaar" #~ msgid "Supported" #~ msgstr "Ondersteund" #~ msgid "Unknown" #~ msgstr "Onbekend" #~ msgid "A utility for managing GNOME Shell Extensions" #~ msgstr "Een app voor het beheren van GNOME Shell-uitbreidingen" #, c-format #~ msgid "e.g. “%s”" #~ msgstr "bijv. ‘%s’" #~ msgid "This extension is incompatible with your current version of GNOME." #~ msgstr "" #~ "Deze uitbreiding is niet compatibel met uw huidige versie van GNOME." #~ msgid "An error occurred." #~ msgstr "Er is een fout opgetreden." #~ msgid "Return to view" #~ msgstr "Terug naar weergave" #~ msgid "@app_title@" #~ msgstr "@app_title@" #~ msgid "Fully adaptive mobile-friendly user interface" #~ msgstr "Volledig adaptieve, mobielvriendelijke gebruikersinterface" #~ msgid "Paginated search results" #~ msgstr "Zoekresultaten op meerdere pagina's" #~ msgid "Upgrade Assistant for checking extension compatibility" #~ msgstr "" #~ "Upgrade-assistent voor het controleren op uitbreidingscompatibiliteit" #~ msgid "Unsupported extensions are hidden by default" #~ msgstr "Niet-ondersteunde uitbreidingen worden standaard verborgen" #~ msgid "Overhauled error and crash reporting" #~ msgstr "Fout- en crashrapportering herzien" #~ msgid "Full-screen image viewer" #~ msgstr "Afbeeldingen bekijken in volledig scherm" #~ msgid "Handles new gnome-extensions:// URI scheme" #~ msgstr "Ondersteunt het nieuwe URI-schema gnome-extensions://" #~ msgid "Randomised extension suggestions" #~ msgstr "Willekeurige uitbreidingssuggesties" #~ msgid "Performance and stability" #~ msgstr "Verbeterde prestaties en stabiliteit" #~ msgid "Translation updates" #~ msgstr "Bijgewerkte vertalingen" #~ msgid "Various bug fixes" #~ msgstr "Verschillende bugs opgelost" #~ msgid "Remove release notes dialog" #~ msgstr "Het wijzigingslogvenster wordt niet meer getoond" #~ msgid "Fix special characters in installed extension listings" #~ msgstr "Opgelost: speciale tekens werden niet goed getoond op lijsten" #~ msgid "The second feature update to extension-manager. Highlights include:" #~ msgstr "De tweede grote update van Uitbreidingsbeheer. Kenmerken:" #~ msgid "View comments and reviews" #~ msgstr "Lees reacties en beoordelingen" #~ msgid "Support for in-app updates" #~ msgstr "Ondersteuning voor updates" #~ msgid "Better handling errors and out-of-date extensions" #~ msgstr "Betere afhandeling van foutmeldingen en verouderde uitbreidingen" #~ msgid "Allow installing 'unsupported' extensions" #~ msgstr "" #~ "Ondersteuning voor het installeren van niet-ondersteunde uitbreidingen" #~ msgid "Display release notes on first run" #~ msgstr "Het wijzigingslog wordt voortaan getoond na updates" #~ msgid "New app icon" #~ msgstr "Nieuw toepassingspictogram" #~ msgid "Optionally sort extensions by enabled status" #~ msgstr "Toon geïnstalleerde uitbreidingen bovenaan (optioneel)" #~ msgid "Fix special characters in search results" #~ msgstr "" #~ "Opgelost: speciale tekens werden niet goed getoond in zoekresultaten" #~ msgid "Fixes a crash that sometimes occurs while uninstalling an extension" #~ msgstr "Opgelost: clash tijdens het verwijderen van een uitbreiding" #~ msgid "The first feature update to extension-manager. Highlights include:" #~ msgstr "De eerste grote update van Uitbreidingsbeheer. Kenmerken:" #~ msgid "Dark theme and support for overriding the system colour scheme" #~ msgstr "" #~ "Ondersteuning voor donkere thema's en het afdwingen van een eigen thema" #~ msgid "Shows screenshots in extension listings" #~ msgstr "Er worden voortaan schermfoto's getoond bij uitbreidingen" #~ msgid "Shell version compatibility check" #~ msgstr "Nieuw: Shell-versiecontrole i.v.m. compatibiliteit" #~ msgid "Localised into seven languages" #~ msgstr "Vertaald naar zeven talen" #~ msgid "Global extension on/off toggle" #~ msgstr "Globale aan-/uitknop" #~ msgid "Displays user and system extensions separately" #~ msgstr "Zelf-geïnstalleerde en systeemuitbreidingen worden apart getoond" #~ msgid "Extension Manager (Development)" #~ msgstr "Uitbreidingsbeheer (ontwikkeling)" #~ msgid "Popularity" #~ msgstr "Populariteit" #~ msgid "Supported Versions" #~ msgstr "Ondersteunde versies" #~ msgctxt "Navigation" #~ msgid "Browse" #~ msgstr "Ontdekken" #~ msgid "Theme" #~ msgstr "Thema" #~ msgid "Follow System" #~ msgstr "Systeemthema" #~ msgid "Light" #~ msgstr "Licht" #~ msgid "Dark" #~ msgstr "Donker" #~ msgid "Are you sure you want to uninstall?" #~ msgstr "Weet u zeker dat u deze uitbreiding wilt verwijderen?" #~ msgid "" #~ "A very simple tool for browsing, downloading, and managing GNOME shell " #~ "extensions." #~ msgstr "" #~ "Een eenvoudige toepassing voor het ontdekken, installeren en beheren van " #~ "GNOME Shell-uitbreidingen." #~ msgid "e.g. \"Blur my Shell\"" #~ msgstr "bijv. ‘Blur my Shell’" #~ msgid "What's New" #~ msgstr "Wijzigingslog" #~ msgid "View Release Notes" #~ msgstr "Wijzigingslog bekijken" #, c-format #~ msgid "" #~ "This is your first time using Extension Manager %s.\n" #~ "Would you like to see the release notes?" #~ msgstr "" #~ "Dit is de eerste keer dat u Uitbreidingsbeheer %s opent.\n" #~ "Wilt u het wijzigingslog bekijken?" #~ msgid "Matthew Jakeman" #~ msgstr "Matthew Jakeman" #~ msgid "Colour Scheme Preference" #~ msgstr "Themavoorkeur" #~ msgid "" #~ "Whether to follow the system colour scheme or force either light or dark " #~ "mode." #~ msgstr "" #~ "Of het systeemthema moet worden gebruikt of dat een eigen thema wordt " #~ "gekozen." #~ msgctxt "shortcut window" #~ msgid "Show Shortcuts" #~ msgstr "Sneltoetsen tonen" extension-manager-0.6.3/po/nn.po000066400000000000000000000460031477302130300165400ustar00rootroot00000000000000# Norwegian Nynorsk translation for extension-manager package. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the extension-manager package. # John Erling Blad , 2022. # msgid "" msgstr "" "Project-Id-Version: extension-manager\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-03-06 16:36+0000\n" "PO-Revision-Date: 2022-02-23 16:48+0100\n" "Last-Translator: John Erling Blad \n" "Language-Team: \n" "Language: nn\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 3.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:2 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:6 #: src/exm-window.blp:7 msgid "Extension Manager" msgstr "Utvidelsesadministrasjon" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:11 #, fuzzy #| msgid "A utility for managing GNOME Shell Extensions" msgid "Manage GNOME Shell Extensions" msgstr "Eit verktøy for administrering av GNOME Skallutvidelser" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #. Make sure to leave the original strings and add your translations afterwards, so that users can search both in English and your language. #: data/com.mattjakeman.ExtensionManager.desktop.in.in:14 #, fuzzy #| msgid "Extension Manager" msgid "extension;manager;shell;" msgstr "Utvidelsesadministrasjon" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:7 #, fuzzy #| msgid "A utility for managing GNOME Shell Extensions" msgid "Browse, install, and manage GNOME Shell Extensions" msgstr "Eit verktøy for administrering av GNOME Skallutvidelser" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:13 msgid "A utility for browsing and installing GNOME Shell Extensions." msgstr "Eit verktøy for å bla gjennom og installera GNOME Skallutvidelser." #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:14 msgid "Features:" msgstr "Funksjonar:" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:16 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:26 msgid "Browse extensions.gnome.org right inside the app" msgstr "Bla gjennom «extensions.gnome.org» inne i appen" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:17 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:22 msgid "Manage the extensions you already have installed" msgstr "Administrer utvidingane du allereie har installert" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:30 #, fuzzy #| msgid "Search for extensions" msgid "See all the details of your extensions" msgstr "Søk etter utvidingar" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:34 #, fuzzy #| msgid "This extension is incompatible with your current version of GNOME." msgid "Check your extensions compatibility with the next version of GNOME" msgstr "" "Denne utvidinga er ikke-kompatibel med den noverande versjonen din av GNOME." #: src/exm-application.c:201 #, fuzzy #| msgid "A utility for managing GNOME Shell Extensions" msgid "Browse, install, and manage GNOME Shell Extensions." msgstr "Eit verktøy for administrering av GNOME Skallutvidelser" #. Translators: Use 'Name email@domain.com' or 'Name https://website.example' (without single quotes). Do not delete existing names, write yours on a new line. #: src/exm-application.c:204 msgid "translator-credits" msgstr "John Erling Blad" #: src/exm-browse-page.blp:16 #, fuzzy #| msgid "Search for extensions" msgid "Search for Extensions" msgstr "Søk etter utvidingar" #: src/exm-browse-page.blp:17 #, fuzzy #| msgid "" #| "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell " #| "Extensions." msgid "" "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell Extensions" msgstr "" "Skriv inn eit nøkkelord for å søka på «extensions.gnome.org» etter GNOME " "Skalutvidingar." #: src/exm-browse-page.blp:47 msgid "Relevance" msgstr "" #: src/exm-browse-page.blp:48 #, fuzzy #| msgid "Downloads" msgctxt "Sort search results" msgid "Downloads" msgstr "Nedlastingar" #: src/exm-browse-page.blp:49 msgid "Recent" msgstr "Nyleg" #: src/exm-browse-page.blp:50 src/exm-detail-view.blp:113 msgid "Name" msgstr "Namn" #: src/exm-browse-page.blp:57 msgid "Sort search results" msgstr "Sorter søkeresultatane" #: src/exm-browse-page.blp:103 msgid "_Load More Results" msgstr "" #: src/exm-browse-page.blp:137 src/exm-installed-page.blp:123 msgid "No Results Found" msgstr "Fann ingen resultat" #: src/exm-browse-page.blp:144 msgid "Try a different search" msgstr "" #: src/exm-browse-page.blp:178 src/exm-comment-dialog.blp:34 #: src/exm-detail-view.blp:49 src/exm-detail-view.blp:291 #: src/exm-upgrade-assistant.blp:100 msgid "Connection Error" msgstr "" #: src/exm-comment-dialog.blp:13 src/exm-detail-view.blp:248 msgid "Reviews and Comments" msgstr "" #: src/exm-comment-dialog.blp:25 #, fuzzy #| msgid "Loading…" msgid "Loading" msgstr "Laster inn…" #: src/exm-comment-tile.blp:30 src/exm-detail-view.blp:127 msgid "Author" msgstr "" #: src/exm-detail-view.blp:40 #, fuzzy #| msgid "See Details" msgid "Loading Details" msgstr "Sjå detaljar" #: src/exm-detail-view.blp:59 src/exm-window.c:347 msgid "An Error Occurred" msgstr "Ein feil oppstod" #: src/exm-detail-view.blp:60 #, fuzzy #| msgid "Displays user and system extensions separately" msgid "No extension details available" msgstr "Vis brukar- og systemutvidingar separat" #: src/exm-detail-view.blp:154 msgid "Enlarge Image" msgstr "" #: src/exm-detail-view.blp:172 src/exm-extension-row.blp:89 msgid "Description" msgstr "Skildring" #: src/exm-detail-view.blp:195 msgid "Links" msgstr "Lenker" #: src/exm-detail-view.blp:203 #, fuzzy #| msgid "Project Homepage" msgid "Homepage" msgstr "Heimesida for prosjektet" #: src/exm-detail-view.blp:219 msgid "Donate" msgstr "" #: src/exm-detail-view.blp:228 msgid "View on Extensions" msgstr "Sjå på utvidingar" #: src/exm-detail-view.blp:271 msgid "Reviews and comments are disabled for this extension" msgstr "" #: src/exm-detail-view.blp:314 msgid "There are no reviews or comments" msgstr "" #: src/exm-detail-view.blp:343 msgid "_Show All" msgstr "" #. Translators: '%s' = extension name #: src/exm-detail-view.c:445 #, c-format msgid "%s Icon" msgstr "" #. Translators: '%s' = extension name #: src/exm-detail-view.c:478 #, c-format msgid "%s Screenshot" msgstr "" #: src/exm-error-dialog.blp:7 msgid "Error Report" msgstr "" #: src/exm-error-dialog.blp:22 msgid "An unexpected error occurred in Extension Manager" msgstr "" #: src/exm-error-dialog.blp:36 msgid "Copy to Clipboard" msgstr "" #: src/exm-error-dialog.blp:77 msgid "_New Issue" msgstr "" #. Success indicator #: src/exm-error-dialog.c:125 src/exm-upgrade-assistant.c:347 msgid "Copied" msgstr "" #: src/exm-error-dialog.c:173 msgid "Please open a new issue and attach the following information:" msgstr "" #. Translators: '%s' = Name of Distributor (e.g. "Packager123") #: src/exm-error-dialog.c:177 #, c-format msgid "" "You are using a third-party build of Extension Manager. Please contact the package distributor (%s) first before " "filing an issue. Be sure to attach the following information:" msgstr "" #. Translators: Button's tooltip to open extension's preferences dialog #: src/exm-extension-row.blp:28 msgid "Open extension preferences" msgstr "" #. Translators: Icon's tooltip when an extension has an error #: src/exm-extension-row.blp:46 msgid "An error occurred while loading this extension" msgstr "" #. Translators: Icon's tooltip when an extension is incompatible #: src/exm-extension-row.blp:63 src/exm-install-button.c:117 #, fuzzy #| msgid "This extension is incompatible with your current version of GNOME." msgid "This extension is incompatible with your current version of GNOME" msgstr "" "Denne utvidinga er ikke-kompatibel med den noverande versjonen din av GNOME." #. Translators: Icon's tooltip when an extension update is available #: src/exm-extension-row.blp:80 msgid "A newer version of this extension is available" msgstr "" #: src/exm-extension-row.blp:98 src/exm-info-bar.blp:50 msgid "Version" msgstr "" #: src/exm-extension-row.blp:107 msgid "Session Modes" msgstr "" #: src/exm-extension-row.blp:137 msgid "Error" msgstr "" #: src/exm-extension-row.blp:158 msgid "See Details" msgstr "Sjå detaljar" #: src/exm-extension-row.blp:169 #, fuzzy #| msgid "Remove" msgid "Remove…" msgstr "Fjern" #: src/exm-extension-row.c:175 msgid "Unlock Dialog" msgstr "" #. Translators: GNOME Display Manager #: src/exm-extension-row.c:181 msgid "GDM" msgstr "" #. Translators: Label when an extension runs on both, login and lock screens #: src/exm-extension-row.c:189 msgid "" "This extension will run while the screen is locked and no user is logged in" msgstr "" #. Translators: Label when an extension runs on the lock screen #: src/exm-extension-row.c:194 msgid "This extension will run while the screen is locked" msgstr "" #. Translators: Label when an extension runs on the login screen #: src/exm-extension-row.c:199 msgid "This extension will run while no user is logged in" msgstr "" #: src/exm-help-overlay.blp:11 msgctxt "shortcut window" msgid "General" msgstr "Allment" #: src/exm-help-overlay.blp:14 #, fuzzy #| msgid "Installed" msgctxt "shortcut window" msgid "Show Installed Page" msgstr "Installert" #: src/exm-help-overlay.blp:19 msgctxt "shortcut window" msgid "Show Browse Page" msgstr "" #: src/exm-help-overlay.blp:24 msgctxt "shortcut window" msgid "Toggle Search" msgstr "" #: src/exm-help-overlay.blp:29 #, fuzzy #| msgid "Keyboard Shortcuts" msgctxt "shortcut window" msgid "Show Keyboard Shortcuts" msgstr "Tastatursnarvegar" #: src/exm-help-overlay.blp:34 msgctxt "shortcut window" msgid "Close Window" msgstr "" #: src/exm-help-overlay.blp:39 msgctxt "shortcut window" msgid "Quit" msgstr "Avslutt" #: src/exm-help-overlay.blp:45 msgctxt "shortcut window" msgid "Screenshot View" msgstr "" #: src/exm-help-overlay.blp:48 src/exm-help-overlay.blp:63 msgctxt "shortcut window" msgid "Zoom In" msgstr "" #: src/exm-help-overlay.blp:53 src/exm-help-overlay.blp:68 msgctxt "shortcut window" msgid "Zoom Out" msgstr "" #: src/exm-help-overlay.blp:58 msgctxt "shortcut window" msgid "Reset Zoom" msgstr "" #: src/exm-info-bar.blp:28 #, fuzzy #| msgid "Downloads" msgctxt "Number of downloads" msgid "Downloads" msgstr "Nedlastingar" #: src/exm-info-bar.c:107 msgid "Unsupported" msgstr "Ikkje støtta" #: src/exm-install-button.c:127 #, fuzzy #| msgid "Install" msgid "Install…" msgstr "Installer" #: src/exm-install-button.c:132 #, fuzzy #| msgid "Installed" msgid "Installing" msgstr "Installert" #: src/exm-install-button.c:136 #, fuzzy #| msgid "Installed" msgctxt "State" msgid "Installed" msgstr "Installert" #: src/exm-install-button.c:140 #, fuzzy #| msgid "Unsupported" msgid "Unsupported…" msgstr "Ikkje støtta" #: src/exm-installed-page.blp:16 msgid "_Log Out…" msgstr "" #: src/exm-installed-page.blp:28 #, fuzzy #| msgid "System Extensions" msgid "Use Extensions" msgstr "Systemutvidingar" #: src/exm-installed-page.blp:29 #, fuzzy #| msgid "Performance and stability" msgid "Extensions can cause performance and stability issues" msgstr "Yting og stabilitet" #: src/exm-installed-page.blp:34 src/exm-upgrade-assistant.blp:133 msgid "User-Installed Extensions" msgstr "Brukarinstallerte utvidingar" #: src/exm-installed-page.blp:51 src/exm-upgrade-assistant.blp:150 #, fuzzy #| msgid "Displays user and system extensions separately" msgid "No User Extensions Installed" msgstr "Vis brukar- og systemutvidingar separat" #: src/exm-installed-page.blp:55 msgid "Browse" msgstr "Bla" #: src/exm-installed-page.blp:69 src/exm-upgrade-assistant.blp:160 msgid "System Extensions" msgstr "Systemutvidingar" #: src/exm-installed-page.blp:86 src/exm-upgrade-assistant.blp:177 #, fuzzy #| msgid "Displays user and system extensions separately" msgid "No System Extensions Installed" msgstr "Vis brukar- og systemutvidingar separat" #. Translators: Text announced by screen readers when interacting with the list of search results #: src/exm-installed-page.blp:111 #, fuzzy #| msgid "Sort search results" msgid "Search Results" msgstr "Sorter søkeresultatane" #: src/exm-installed-page.blp:124 msgid "Try a different search or search online" msgstr "" #: src/exm-installed-page.blp:131 msgid "_Search Online" msgstr "" #. Translators: '%d' = number of extensions that will be updated #: src/exm-installed-page.c:298 #, c-format msgid "%d extension will be updated on next login" msgid_plural "%d extensions will be updated on next login" msgstr[0] "" msgstr[1] "" #: src/exm-rating.c:142 #, c-format msgid "%i Star" msgid_plural "%i Stars" msgstr[0] "" msgstr[1] "" #. Translators: Button's tooltip to zoom out screenshots #: src/exm-screenshot-view.blp:37 msgid "Zoom Out" msgstr "" #. Translators: Button's tooltip to zoom in screenshots #: src/exm-screenshot-view.blp:51 msgid "Zoom In" msgstr "" #: src/exm-upgrade-assistant.blp:11 msgid "Upgrade Assistant" msgstr "" #: src/exm-upgrade-assistant.blp:66 msgid "_Check Compatibility" msgstr "" #: src/exm-upgrade-assistant.blp:189 msgid "_Copy to Clipboard" msgstr "" #: src/exm-upgrade-assistant.c:188 #, fuzzy, c-format #| msgid "Search for extensions" msgid "Checked %d/%d Extensions" msgstr "Søk etter utvidingar" #. Set percentage text #: src/exm-upgrade-assistant.c:207 #, c-format msgid "%d%% Compatible" msgstr "" #: src/exm-upgrade-assistant.c:223 #, c-format msgid "" "GNOME %s supports %d out of %d of the extensions currently " "installed on the system" msgstr "" #. Translators: Icon's tooltip when an extension is compatible #: src/exm-upgrade-assistant.c:503 msgid "A compatible version of the extension exists" msgstr "" #. Translators: Icon's tooltip when an extension is not compatible #: src/exm-upgrade-assistant.c:510 msgid "No compatible version of the extension exists" msgstr "" #. Translators: Icon's tooltip when an extension compatibility is unknown #: src/exm-upgrade-assistant.c:517 msgid "" "This extension is not hosted on extensions.gnome.org. Its compatibility " "cannot be determined." msgstr "" #: src/exm-upgrade-assistant.c:608 #, c-format msgid "" "You are currently running GNOME %s. Select a version of GNOME below " "and check whether your extensions will continue to be available." msgstr "" #. Translators: Tooltip of the search icon in the header bar #: src/exm-window.blp:39 #, fuzzy #| msgid "User-Installed Extensions" msgid "Search Installed Extensions" msgstr "Brukarinstallerte utvidingar" #: src/exm-window.blp:48 msgid "Main Menu" msgstr "" #: src/exm-window.blp:59 #, fuzzy #| msgid "Search for extensions" msgid "Search for installed extensions" msgstr "Søk etter utvidingar" #: src/exm-window.blp:71 #, fuzzy #| msgid "Installed" msgctxt "Navigation" msgid "_Installed" msgstr "Installert" #: src/exm-window.blp:80 #, fuzzy #| msgid "Browse" msgctxt "Navigation" msgid "_Browse" msgstr "Bla" #. Translators: the character preceded by "_" should not be the same #. as others in the same menu #: src/exm-window.blp:108 msgid "Sort _Enabled First" msgstr "" #: src/exm-window.blp:109 #, fuzzy #| msgid "Unsupported" msgid "_Show Unsupported" msgstr "Ikkje støtta" #: src/exm-window.blp:113 msgid "_Upgrade Assistant" msgstr "" #: src/exm-window.blp:114 #, fuzzy #| msgid "Keyboard Shortcuts" msgid "_Keyboard Shortcuts" msgstr "Tastatursnarvegar" #: src/exm-window.blp:115 #, fuzzy #| msgid "About Extension Manager" msgid "_About Extension Manager" msgstr "Om Utvidelsesadministrasjon" #: src/exm-window.blp:120 #, fuzzy #| msgid "User-Installed Extensions" msgid "Uninstall Extension?" msgstr "Brukarinstallerte utvidingar" #: src/exm-window.blp:121 msgid "" "The extension's features and functionality will no longer be accessible. Are " "you sure you want to uninstall?" msgstr "" #: src/exm-window.blp:126 msgid "_No" msgstr "" #: src/exm-window.blp:127 msgid "_Yes" msgstr "" #: src/exm-window.blp:132 #, fuzzy #| msgid "Supported Versions" msgid "Unsupported Extension" msgstr "Støtta versjonar" #: src/exm-window.blp:133 msgid "" "This extension does not support your GNOME Shell version. It may cause " "errors if installed." msgstr "" #: src/exm-window.blp:139 #, fuzzy #| msgid "Install" msgid "_Install Anyway" msgstr "Installer" #: src/exm-window.blp:140 msgid "_Go Back" msgstr "" #: src/exm-window.c:348 #, fuzzy #| msgid "See Details" msgid "_Details" msgstr "Sjå detaljar" #: src/web/exm-request-handler.c:99 msgid "" "Check GNOME infrastructure status " "and try again later" msgstr "" #: src/web/exm-request-handler.c:100 msgid "Check your network status and try again" msgstr "" #, fuzzy #~| msgid "Unsupported" #~ msgid "Supported" #~ msgstr "Ikkje støtta" #~ msgid "A utility for managing GNOME Shell Extensions" #~ msgstr "Eit verktøy for administrering av GNOME Skallutvidelser" #~ msgid "This extension is incompatible with your current version of GNOME." #~ msgstr "" #~ "Denne utvidinga er ikke-kompatibel med den noverande versjonen din av " #~ "GNOME." #, fuzzy #~| msgid "An Error Occurred" #~ msgid "An error occurred." #~ msgstr "Ein feil oppstod" #~ msgid "Matthew Jakeman" #~ msgstr "Matthew Jakeman" #~ msgid "Fixes a crash that sometimes occurs while uninstalling an extension" #~ msgstr "" #~ "Fiksar eit krasj som nokon gangar opptrer under under avinstallering av " #~ "ein utviding" #~ msgid "The first feature update to extension-manager. Highlights include:" #~ msgstr "" #~ "Den første funksjonsoppdateringa til Utvidelsesadministrasjon. Høgdepunkt " #~ "inkluderer:" #~ msgid "Dark theme and support for overriding the system colour scheme" #~ msgstr "Mørk drakt og trygd for å overstyra fargeskjemaet til systemet" #~ msgid "Shows screenshots in extension listings" #~ msgstr "Vis skjermskot i listinga av utvidingar" #~ msgid "Shell version compatibility check" #~ msgstr "Kompatibilitetssjekk av skalversjon" #~ msgid "Localised into seven languages" #~ msgstr "Lokalisert til sju språk" #~ msgid "Global extension on/off toggle" #~ msgstr "Global av/på for utvidingar" #~ msgid "Colour Scheme Preference" #~ msgstr "Preferanse for fargeval" #~ msgid "" #~ "Whether to follow the system colour scheme or force either light or dark " #~ "mode." #~ msgstr "" #~ "Om fargeskjemaet til systemet blir følgt, eller om lys eller mørk modus " #~ "blir brukt." #~ msgid "" #~ "A very simple tool for browsing, downloading, and managing GNOME shell " #~ "extensions." #~ msgstr "" #~ "Eit veldig enkelt verktøy for å bla gjennom, lasta ned og administrera " #~ "GNOME-skalutvidingar." #~ msgid "e.g. \"Blur my Shell\"" #~ msgstr "e.g. «Tilslør skalet mitt»" #~ msgid "Popularity" #~ msgstr "Popularitet" #~ msgid "Theme" #~ msgstr "Drakt" #~ msgid "Follow System" #~ msgstr "Følg systemet" #~ msgid "Light" #~ msgstr "Lyst" #~ msgid "Dark" #~ msgstr "Mørkt" #~ msgid "Are you sure you want to uninstall?" #~ msgstr "Er du sikker på at du ønsker å avinstallere?" #~ msgctxt "shortcut window" #~ msgid "Show Shortcuts" #~ msgstr "Vis snarvegar" extension-manager-0.6.3/po/oc.po000066400000000000000000000616641477302130300165400ustar00rootroot00000000000000# Occitan translation for Extension-manager per GNOME Shell. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the extension-manager package. # Quentin PAGÈS , 2022. # Quentin PAGÈS , 2024, 2025. msgid "" msgstr "" "Project-Id-Version: extension-manager\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-03-06 16:36+0000\n" "PO-Revision-Date: 2025-03-13 05:26+0000\n" "Last-Translator: Quentin PAGÈS \n" "Language-Team: Occitan \n" "Language: oc\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: Weblate 5.10.3-dev\n" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:2 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:6 #: src/exm-window.blp:7 msgid "Extension Manager" msgstr "Gestionari d’extensions" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:11 msgid "Manage GNOME Shell Extensions" msgstr "Gerir las extensions GNOME Shell" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #. Make sure to leave the original strings and add your translations afterwards, so that users can search both in English and your language. #: data/com.mattjakeman.ExtensionManager.desktop.in.in:14 msgid "extension;manager;shell;" msgstr "extension;gestionari;shell;" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:7 msgid "Browse, install, and manage GNOME Shell Extensions" msgstr "Percórrer, installar e gerir las extensions GNOME Shell" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:13 msgid "A utility for browsing and installing GNOME Shell Extensions." msgstr "Un utilitari per percórrer e installar las extensions GNOME Shell." #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:14 msgid "Features:" msgstr "Foncionalitats :" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:16 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:26 msgid "Browse extensions.gnome.org right inside the app" msgstr "Percórrer extensions.gnome.org d’una aplicacion estant" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:17 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:22 msgid "Manage the extensions you already have installed" msgstr "Gerissètz las extensions qu’avètz ja installadas" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:30 msgid "See all the details of your extensions" msgstr "Afichar totes los detalhs de las extensions" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:34 msgid "Check your extensions compatibility with the next version of GNOME" msgstr "" "Verificatz la compatibilitat de l'extension ambé la version de GNOME venenta" #: src/exm-application.c:201 msgid "Browse, install, and manage GNOME Shell Extensions." msgstr "Percórrer, installar e gerir las extensions GNOME Shell." #. Translators: Use 'Name email@domain.com' or 'Name https://website.example' (without single quotes). Do not delete existing names, write yours on a new line. #: src/exm-application.c:204 msgid "translator-credits" msgstr "Quentin PAGÈS" #: src/exm-browse-page.blp:16 msgid "Search for Extensions" msgstr "Cercar d’extensions" #: src/exm-browse-page.blp:17 msgid "" "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell Extensions" msgstr "" "Picatz un mot clau per cercar per « extensions.gnome.org » e trobar " "d’extensions GNOME Shell" #: src/exm-browse-page.blp:47 msgid "Relevance" msgstr "Pertinéncia" #: src/exm-browse-page.blp:48 msgctxt "Sort search results" msgid "Downloads" msgstr "Telecargaments" #: src/exm-browse-page.blp:49 msgid "Recent" msgstr "Recentas" #: src/exm-browse-page.blp:50 src/exm-detail-view.blp:113 msgid "Name" msgstr "Nom" #: src/exm-browse-page.blp:57 msgid "Sort search results" msgstr "Triar los resultats de recèrca" #: src/exm-browse-page.blp:103 msgid "_Load More Results" msgstr "_Cargar mai de resultats" #: src/exm-browse-page.blp:137 src/exm-installed-page.blp:123 msgid "No Results Found" msgstr "Cap de resultat pas trobat" #: src/exm-browse-page.blp:144 msgid "Try a different search" msgstr "Ensajatz una recèrca diferenta" #: src/exm-browse-page.blp:178 src/exm-comment-dialog.blp:34 #: src/exm-detail-view.blp:49 src/exm-detail-view.blp:291 #: src/exm-upgrade-assistant.blp:100 msgid "Connection Error" msgstr "Error de connexion" #: src/exm-comment-dialog.blp:13 src/exm-detail-view.blp:248 msgid "Reviews and Comments" msgstr "Avises e comentaris" #: src/exm-comment-dialog.blp:25 msgid "Loading" msgstr "Cargament" #: src/exm-comment-tile.blp:30 src/exm-detail-view.blp:127 msgid "Author" msgstr "Autor" #: src/exm-detail-view.blp:40 msgid "Loading Details" msgstr "Cargament de las informacions" #: src/exm-detail-view.blp:59 src/exm-window.c:347 msgid "An Error Occurred" msgstr "Una error s'es producha" #: src/exm-detail-view.blp:60 msgid "No extension details available" msgstr "Cap de detalh de l'extension pas disponible" #: src/exm-detail-view.blp:154 msgid "Enlarge Image" msgstr "Agrandir l'imatge" #: src/exm-detail-view.blp:172 src/exm-extension-row.blp:89 msgid "Description" msgstr "Descripcion" #: src/exm-detail-view.blp:195 msgid "Links" msgstr "Ligams" #: src/exm-detail-view.blp:203 msgid "Homepage" msgstr "Pagina d’acuèlh" #: src/exm-detail-view.blp:219 msgid "Donate" msgstr "Donar" #: src/exm-detail-view.blp:228 msgid "View on Extensions" msgstr "Veire sus Extensions" #: src/exm-detail-view.blp:271 msgid "Reviews and comments are disabled for this extension" msgstr "Los avises e comentaris son desactivats per aquesta extension" #: src/exm-detail-view.blp:314 msgid "There are no reviews or comments" msgstr "Cap de nòta nimai comentari" #: src/exm-detail-view.blp:343 msgid "_Show All" msgstr "_Tot afichar" #. Translators: '%s' = extension name #: src/exm-detail-view.c:445 #, c-format msgid "%s Icon" msgstr "Icòna de %s" #. Translators: '%s' = extension name #: src/exm-detail-view.c:478 #, c-format msgid "%s Screenshot" msgstr "Captura d'ecran de %s" #: src/exm-error-dialog.blp:7 msgid "Error Report" msgstr "Rapòrt d’error" #: src/exm-error-dialog.blp:22 msgid "An unexpected error occurred in Extension Manager" msgstr "Una error inesperada se's producha dins lo Gestionari d’extensions" #: src/exm-error-dialog.blp:36 msgid "Copy to Clipboard" msgstr "Copiar al quichapapièrs" #: src/exm-error-dialog.blp:77 msgid "_New Issue" msgstr "_Anomalia novèla" #. Success indicator #: src/exm-error-dialog.c:125 src/exm-upgrade-assistant.c:347 msgid "Copied" msgstr "Copiat" #: src/exm-error-dialog.c:173 msgid "Please open a new issue and attach the following information:" msgstr "" "Se vos plai dobrissètz un senhalament d’anomalia amb las informacions " "seguentas :" #. Translators: '%s' = Name of Distributor (e.g. "Packager123") #: src/exm-error-dialog.c:177 #, c-format msgid "" "You are using a third-party build of Extension Manager. Please contact the package distributor (%s) first before " "filing an issue. Be sure to attach the following information:" msgstr "" "Utilizatz una compilcacion tèrça d'Extension Manager. Mercés de contactar lo distribuidor de paquets (%s) per començar abans de senhalar una anomalia. Asseguratz-vos de juntar las " "informacions seguentas :" #. Translators: Button's tooltip to open extension's preferences dialog #: src/exm-extension-row.blp:28 msgid "Open extension preferences" msgstr "Dobrir las preferéncias de l’extension" #. Translators: Icon's tooltip when an extension has an error #: src/exm-extension-row.blp:46 msgid "An error occurred while loading this extension" msgstr "I a aguda una error al moment de cargar l'extension" #. Translators: Icon's tooltip when an extension is incompatible #: src/exm-extension-row.blp:63 src/exm-install-button.c:117 msgid "This extension is incompatible with your current version of GNOME" msgstr "Aquesta extension es incompatibla amb vòstra version actuala de GNOME" #. Translators: Icon's tooltip when an extension update is available #: src/exm-extension-row.blp:80 msgid "A newer version of this extension is available" msgstr "Una version mai novèla d’aquesta extension es disponibla" #: src/exm-extension-row.blp:98 src/exm-info-bar.blp:50 msgid "Version" msgstr "Version" #: src/exm-extension-row.blp:107 msgid "Session Modes" msgstr "Mòdes de session" #: src/exm-extension-row.blp:137 msgid "Error" msgstr "Error" #: src/exm-extension-row.blp:158 msgid "See Details" msgstr "Veire los detalhs" #: src/exm-extension-row.blp:169 msgid "Remove…" msgstr "Suprimir…" #: src/exm-extension-row.c:175 msgid "Unlock Dialog" msgstr "Desverrolhar la fenèstra de dialòg" #. Translators: GNOME Display Manager #: src/exm-extension-row.c:181 msgid "GDM" msgstr "GDM" #. Translators: Label when an extension runs on both, login and lock screens #: src/exm-extension-row.c:189 msgid "" "This extension will run while the screen is locked and no user is logged in" msgstr "" "Aquesta extension foncionarà quand l’ecran es verrolhat e que cap d’" "utilizaire es pas connectat" #. Translators: Label when an extension runs on the lock screen #: src/exm-extension-row.c:194 msgid "This extension will run while the screen is locked" msgstr "Aquesta extension foncionarà quand l’ecran es verrolhat" #. Translators: Label when an extension runs on the login screen #: src/exm-extension-row.c:199 msgid "This extension will run while no user is logged in" msgstr "Aquesta extension foncionarà quand cap d’utilizaire es pas connectat" #: src/exm-help-overlay.blp:11 msgctxt "shortcut window" msgid "General" msgstr "General" #: src/exm-help-overlay.blp:14 msgctxt "shortcut window" msgid "Show Installed Page" msgstr "Mostrar la pagina Installada" #: src/exm-help-overlay.blp:19 msgctxt "shortcut window" msgid "Show Browse Page" msgstr "Mostrar la pagina d'explorar" #: src/exm-help-overlay.blp:24 msgctxt "shortcut window" msgid "Toggle Search" msgstr "Alternat la recèrca" #: src/exm-help-overlay.blp:29 msgctxt "shortcut window" msgid "Show Keyboard Shortcuts" msgstr "Mostrar los acorchis de clavièr" #: src/exm-help-overlay.blp:34 msgctxt "shortcut window" msgid "Close Window" msgstr "Tampar la fenèstra" #: src/exm-help-overlay.blp:39 msgctxt "shortcut window" msgid "Quit" msgstr "Quitar" #: src/exm-help-overlay.blp:45 msgctxt "shortcut window" msgid "Screenshot View" msgstr "Vista de la captura d'ecran" #: src/exm-help-overlay.blp:48 src/exm-help-overlay.blp:63 msgctxt "shortcut window" msgid "Zoom In" msgstr "Zoom avant" #: src/exm-help-overlay.blp:53 src/exm-help-overlay.blp:68 msgctxt "shortcut window" msgid "Zoom Out" msgstr "Zoom arrièr" #: src/exm-help-overlay.blp:58 msgctxt "shortcut window" msgid "Reset Zoom" msgstr "Reïnicializar lo zoom" #: src/exm-info-bar.blp:28 msgctxt "Number of downloads" msgid "Downloads" msgstr "Telecargaments" #: src/exm-info-bar.c:107 msgid "Unsupported" msgstr "Pas presa en carga" #: src/exm-install-button.c:127 msgid "Install…" msgstr "Installar…" #: src/exm-install-button.c:132 msgid "Installing" msgstr "Installacion" #: src/exm-install-button.c:136 msgctxt "State" msgid "Installed" msgstr "Installada" #: src/exm-install-button.c:140 msgid "Unsupported…" msgstr "Pas presa en carga…" #: src/exm-installed-page.blp:16 msgid "_Log Out…" msgstr "Se _desconnectar…" #: src/exm-installed-page.blp:28 msgid "Use Extensions" msgstr "Utilizar las extensions" #: src/exm-installed-page.blp:29 msgid "Extensions can cause performance and stability issues" msgstr "Las extensions pòdon causar problèmas de performança e d’estabilitat" #: src/exm-installed-page.blp:34 src/exm-upgrade-assistant.blp:133 msgid "User-Installed Extensions" msgstr "Extensions installadas per l’utilizaire" #: src/exm-installed-page.blp:51 src/exm-upgrade-assistant.blp:150 msgid "No User Extensions Installed" msgstr "Cap d’aplicacion utilizaire pas installada" #: src/exm-installed-page.blp:55 msgid "Browse" msgstr "Percórrer" #: src/exm-installed-page.blp:69 src/exm-upgrade-assistant.blp:160 msgid "System Extensions" msgstr "Extensions sistèma" #: src/exm-installed-page.blp:86 src/exm-upgrade-assistant.blp:177 msgid "No System Extensions Installed" msgstr "Cap d’aplicacion sistèma pas installada" #. Translators: Text announced by screen readers when interacting with the list of search results #: src/exm-installed-page.blp:111 msgid "Search Results" msgstr "Resultats de recèrca" #: src/exm-installed-page.blp:124 msgid "Try a different search or search online" msgstr "Ensajatz una recèrca diferenta o cercatz en linha" #: src/exm-installed-page.blp:131 msgid "_Search Online" msgstr "_Cercar en linha" #. Translators: '%d' = number of extensions that will be updated #: src/exm-installed-page.c:298 #, c-format msgid "%d extension will be updated on next login" msgid_plural "%d extensions will be updated on next login" msgstr[0] "%d extension serà mesa a jorn a la connexion venenta" msgstr[1] "%d extensions seràn mesas a jorn a la connexion venenta" #: src/exm-rating.c:142 #, c-format msgid "%i Star" msgid_plural "%i Stars" msgstr[0] "%i estela" msgstr[1] "%i estelas" #. Translators: Button's tooltip to zoom out screenshots #: src/exm-screenshot-view.blp:37 msgid "Zoom Out" msgstr "Zoom arrièr" #. Translators: Button's tooltip to zoom in screenshots #: src/exm-screenshot-view.blp:51 msgid "Zoom In" msgstr "Zoom Avant" #: src/exm-upgrade-assistant.blp:11 msgid "Upgrade Assistant" msgstr "Assistent de mesa a nivèl" #: src/exm-upgrade-assistant.blp:66 msgid "_Check Compatibility" msgstr "_Verificar la compatibilitat" #: src/exm-upgrade-assistant.blp:189 msgid "_Copy to Clipboard" msgstr "_Copiar al quichapapièrs" #: src/exm-upgrade-assistant.c:188 #, c-format msgid "Checked %d/%d Extensions" msgstr "%d/%d extensions verificadas" #. Set percentage text #: src/exm-upgrade-assistant.c:207 #, c-format msgid "%d%% Compatible" msgstr "Compatibla %d%%" #: src/exm-upgrade-assistant.c:223 #, c-format msgid "" "GNOME %s supports %d out of %d of the extensions currently " "installed on the system" msgstr "" "GNOME %s pren en carga %d de %d de las extensions actualament " "installadas sul sistèma" #. Translators: Icon's tooltip when an extension is compatible #: src/exm-upgrade-assistant.c:503 msgid "A compatible version of the extension exists" msgstr "Una version compatibla de l’extension existís" #. Translators: Icon's tooltip when an extension is not compatible #: src/exm-upgrade-assistant.c:510 msgid "No compatible version of the extension exists" msgstr "Cap de version compatibla de l’extension existís pas" #. Translators: Icon's tooltip when an extension compatibility is unknown #: src/exm-upgrade-assistant.c:517 msgid "" "This extension is not hosted on extensions.gnome.org. Its compatibility " "cannot be determined." msgstr "" "Aquesta extensions es pas albergada a extensions.gnome.org. Se pòt pas " "determinar sa compatibilitat." #: src/exm-upgrade-assistant.c:608 #, c-format msgid "" "You are currently running GNOME %s. Select a version of GNOME below " "and check whether your extensions will continue to be available." msgstr "" "Sètz pas a executar GNOME %s. Seleccionat una version de GNOME çai-" "jos e verificatz que vòstras extensions tendràn d’èsser disponiblas." #. Translators: Tooltip of the search icon in the header bar #: src/exm-window.blp:39 msgid "Search Installed Extensions" msgstr "Cercar demest las extensions installadas" #: src/exm-window.blp:48 msgid "Main Menu" msgstr "Menú principal" #: src/exm-window.blp:59 msgid "Search for installed extensions" msgstr "Cercar d’extensions installadas" #: src/exm-window.blp:71 msgctxt "Navigation" msgid "_Installed" msgstr "_Installadas" #: src/exm-window.blp:80 msgctxt "Navigation" msgid "_Browse" msgstr "_Percórrer" #. Translators: the character preceded by "_" should not be the same #. as others in the same menu #: src/exm-window.blp:108 msgid "Sort _Enabled First" msgstr "Las _activadas en primièr" #: src/exm-window.blp:109 msgid "_Show Unsupported" msgstr "_Afichar çò pas pres en carga" #: src/exm-window.blp:113 msgid "_Upgrade Assistant" msgstr "_Assistent de mesa a nivèl" #: src/exm-window.blp:114 msgid "_Keyboard Shortcuts" msgstr "_Acorchis de clavièr" #: src/exm-window.blp:115 msgid "_About Extension Manager" msgstr "_A prepaus del gestionari d’extensions" #: src/exm-window.blp:120 msgid "Uninstall Extension?" msgstr "Desinstallar l’extension ?" #: src/exm-window.blp:121 msgid "" "The extension's features and functionality will no longer be accessible. Are " "you sure you want to uninstall?" msgstr "" "La foncions e foncionalitats d’aquesta extension seràn pas mai accessiblas. " "Volètz vertadièrament la desinstallar ?" #: src/exm-window.blp:126 msgid "_No" msgstr "_Non" #: src/exm-window.blp:127 msgid "_Yes" msgstr "_Òc" #: src/exm-window.blp:132 msgid "Unsupported Extension" msgstr "Extension non suportada" #: src/exm-window.blp:133 msgid "" "This extension does not support your GNOME Shell version. It may cause " "errors if installed." msgstr "" "Aquesta extension es pas presa en carga per vòstre version de GNOME Shell. " "Son installacion pòt menar a de problèmas." #: src/exm-window.blp:139 msgid "_Install Anyway" msgstr "_Installar malgrat tot" #: src/exm-window.blp:140 msgid "_Go Back" msgstr "_Retorn" #: src/exm-window.c:348 msgid "_Details" msgstr "_Detalhs" #: src/web/exm-request-handler.c:99 msgid "" "Check GNOME infrastructure status " "and try again later" msgstr "" "Verificatz l'estat de las " "infrastructuras de GNOME e tornatz ensajar mai tard" #: src/web/exm-request-handler.c:100 msgid "Check your network status and try again" msgstr "Verificatz l'estat de vòstre ret e tornatz ensajar" #~ msgid "Comments" #~ msgstr "Comentaris" #~ msgid "Loading Comments" #~ msgstr "Cargament dels comentaris" #~ msgid "User Reviews" #~ msgstr "Avises dels utilizaires" #~ msgid "No comments yet" #~ msgstr "Pas encara de comentari" #~ msgid "" #~ "This extension could be activated in session modes such as the login " #~ "screen or the lock screen" #~ msgstr "" #~ "Aquesta extension se poiriá activar en mòde session per l'ecran de " #~ "connexion o d'ecran de verrolhatge" #, c-format #~ msgid "%s by %s" #~ msgstr "%s creat per %s" #, fuzzy #~| msgid "Updates are available" #~ msgid "Updates Available" #~ msgstr "Mesas a jorn disponiblas" #~ msgid "Supported" #~ msgstr "Pas presa en carga" #~ msgid "Unknown" #~ msgstr "Desconeguts" #~ msgid "A utility for managing GNOME Shell Extensions" #~ msgstr "Un utilitari per gerir las extensions GNOME Shell" #, c-format #~ msgid "e.g. “%s”" #~ msgstr "ex. « %s »" #~ msgid "This extension is incompatible with your current version of GNOME." #~ msgstr "Aquesta extension es pas compatibla amb vòstra version de GNOME." #~ msgid "An error occurred." #~ msgstr "Una error s'es producha." #~ msgid "Return to view" #~ msgstr "Tornar a la vista" #~ msgid "@app_title@" #~ msgstr "@app_title@" #~ msgid "HOTFIX: Fix broken 'recent' and 'popularity' search filters" #~ msgstr "Correccion urgenta : filtres 'recent' e 'popularitat' copats" #~ msgid "Various stability and correctness fixes" #~ msgstr "Correccions de mantuna instabilitat" #~ msgid "Translation updates" #~ msgstr "Mesas a jorn de las traduccions" #~ msgid "Upgrade Assistant scroll fix" #~ msgstr "Defilament de l'assistent de mesa a nivèl corregit" #~ msgid "Pixel perfect app icon" #~ msgstr "Icòna d'aplicacion Pixel perfect" #~ msgid "Official snap support" #~ msgstr "Presa en carga oficiala de snap" #~ msgid "Improved error log generation" #~ msgstr "Generacion dels logs d'errors amelhorada" #~ msgid "Fully adaptive mobile-friendly user interface" #~ msgstr "" #~ "Interfàcia utilizaire complètament adaptativa e de bon utilizar al mobil" #~ msgid "Paginated search results" #~ msgstr "Dividir los resultats per pagina" #~ msgid "Upgrade Assistant for checking extension compatibility" #~ msgstr "" #~ "Assistent de mesa a nivèl per verificar la compatibilitat de las " #~ "extensions" #~ msgid "Unsupported extensions are hidden by default" #~ msgstr "Las extensions pas presas en carga son rescondudas per defaut" #~ msgid "Overhauled error and crash reporting" #~ msgstr "Correccion d’errors e senhalaments d’avarias" #~ msgid "Full-screen image viewer" #~ msgstr "Visionador d'imatges en plen ecran" #~ msgid "Handles new gnome-extensions:// URI scheme" #~ msgstr "Gerís los esquèmas novèlas d’URI gnome-extensions://" #~ msgid "Randomised extension suggestions" #~ msgstr "Far venir aleatòria la suggestion d’extensions" #~ msgid "Performance and stability" #~ msgstr "Performança e estabilitat" #~ msgid "Various bug fixes" #~ msgstr "Mantuna correccions d’anomalia" #~ msgid "Remove release notes dialog" #~ msgstr "Levar la fenèstra de nòtas de version" #~ msgid "Fix special characters in installed extension listings" #~ msgstr "Correccion dels caractèrs especials als resultats de recèrca" #~ msgid "The second feature update to extension-manager. Highlights include:" #~ msgstr "" #~ "La segonda actualizacion de foncionalitats d’extension-manager. En " #~ "bracas :" #~ msgid "View comments and reviews" #~ msgstr "Veire los comentaris e los avises" #~ msgid "Support for in-app updates" #~ msgstr "Actualizacion de l’aplicacion estant presa en carga" #~ msgid "Better handling errors and out-of-date extensions" #~ msgstr "Melhora gestion de las errors e de las extensions obsolètas" #~ msgid "Allow installing 'unsupported' extensions" #~ msgstr "Permet d’installar las extensions « pas presas en carga »" #~ msgid "Display release notes on first run" #~ msgstr "Veire las nòtas de version a la primièra aviada" #~ msgid "New app icon" #~ msgstr "Icòna d'App novèla" #~ msgid "Optionally sort extensions by enabled status" #~ msgstr "Triada opcionala de las extensions segon l’estatut d’activacion" #~ msgid "Fix special characters in search results" #~ msgstr "Correccion dels caractèrs especials als resultats de recèrca" #~ msgid "Fixes a crash that sometimes occurs while uninstalling an extension" #~ msgstr "" #~ "Correccions d’un plantatge qu’arribava pendent la desinstallacion d’una " #~ "extension" #~ msgid "The first feature update to extension-manager. Highlights include:" #~ msgstr "" #~ "La segonda actualizacion de foncionalitats d’extension-manager. Çò " #~ "cambiat :" #~ msgid "Dark theme and support for overriding the system colour scheme" #~ msgstr "" #~ "Tèma escur e presa en carga del subrecargament de l’esquèma de color " #~ "sistèma" #~ msgid "Shows screenshots in extension listings" #~ msgstr "Aficha las capturas d’ecran dins la lista d’extensions" #~ msgid "Shell version compatibility check" #~ msgstr "Verificacion de compatibilitat version Shell" #~ msgid "Localised into seven languages" #~ msgstr "Traduch dins sèt lengas" #~ msgid "Global extension on/off toggle" #~ msgstr "Bascular las extensions globalas" #~ msgid "Displays user and system extensions separately" #~ msgstr "" #~ "Afichatge de las extensions de l’utilizaire e çò del sistèma a despart" #~ msgid "Extension Manager (Development)" #~ msgstr "Gestionari d’extensions (Desvolopament)" #~ msgid "Popularity" #~ msgstr "Popularitat" #~ msgid "Supported Versions" #~ msgstr "Versions presas en carga" #~ msgctxt "Navigation" #~ msgid "Browse" #~ msgstr "Percórrer" #~ msgid "Theme" #~ msgstr "Tèma" #~ msgid "Follow System" #~ msgstr "Seguir lo sistèma" #~ msgid "Light" #~ msgstr "Clar" #~ msgid "Dark" #~ msgstr "Escur" #~ msgid "Are you sure you want to uninstall?" #~ msgstr "Volètz vertadièrament desinstallar ?" #~ msgid "" #~ "A very simple tool for browsing, downloading, and managing GNOME shell " #~ "extensions." #~ msgstr "" #~ "Una aisina simpleta per percórrer, telecargar e gerir las extensions " #~ "GNOME Shell." #~ msgid "e.g. \"Blur my Shell\"" #~ msgstr "ex. « Enfosquir mon Shell »" #~ msgid "What's New" #~ msgstr "Qué de nòu" #~ msgid "View Release Notes" #~ msgstr "Veire las nòtas de version" #~ msgid "" #~ "This is your first time using Extension Manager %s.\n" #~ "Would you like to see the release notes?" #~ msgstr "" #~ "Aquò’s lo primièr còp qu’utilizatz lo Gestionari d’extensions %s.\n" #~ "Volriatz veire la nòta de version ?" #~ msgid "Matthew Jakeman" #~ msgstr "Matthew Jakeman" #~ msgid "Colour Scheme Preference" #~ msgstr "Preferéncias d’esquèma de color" #~ msgid "" #~ "Whether to follow the system colour scheme or force either light or dark " #~ "mode." #~ msgstr "" #~ "Indica se cal seguir l’esquèma de color del sistèma, o forçar lo mòde " #~ "clar o escur." #~ msgctxt "shortcut window" #~ msgid "Show Shortcuts" #~ msgstr "Afichar los acorchis" extension-manager-0.6.3/po/pl.po000066400000000000000000000550251477302130300165440ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the extension-manager package. # Rafał Baran <>, 2022. # Oskar Kąklewski , 2024. # adiee5 , 2024. # Eryk Michalak , 2024, 2025. # Adam Lewicki , 2025. msgid "" msgstr "" "Project-Id-Version: extension-manager\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-03-06 16:36+0000\n" "PO-Revision-Date: 2025-03-13 11:00+0000\n" "Last-Translator: Adam Lewicki \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: Weblate 5.10.3\n" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:2 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:6 #: src/exm-window.blp:7 msgid "Extension Manager" msgstr "Menedżer rozszerzeń" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:11 msgid "Manage GNOME Shell Extensions" msgstr "Zarządzaj rozszerzeniami powłoki GNOME" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #. Make sure to leave the original strings and add your translations afterwards, so that users can search both in English and your language. #: data/com.mattjakeman.ExtensionManager.desktop.in.in:14 msgid "extension;manager;shell;" msgstr "extension;manager;shell;" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:7 msgid "Browse, install, and manage GNOME Shell Extensions" msgstr "Przeglądaj, instaluj i zarządzaj rozszerzeniami powłoki GNOME" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:13 msgid "A utility for browsing and installing GNOME Shell Extensions." msgstr "Narzędzie do przeglądania i instalowania rozszerzeń powłoki GNOME." #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:14 msgid "Features:" msgstr "Funkcje:" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:16 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:26 msgid "Browse extensions.gnome.org right inside the app" msgstr "Przeglądaj extensions.gnome.org bezpośrednio w aplikacji" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:17 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:22 msgid "Manage the extensions you already have installed" msgstr "Zarządzaj już zainstalowanymi rozszerzeniami" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:30 msgid "See all the details of your extensions" msgstr "Zobacz wszystkie detale twoich rozszerzeń" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:34 msgid "Check your extensions compatibility with the next version of GNOME" msgstr "" "Sprawdź, czy twoje rozszerzenia są kompatybilne z następną wersją GNOME" #: src/exm-application.c:201 msgid "Browse, install, and manage GNOME Shell Extensions." msgstr "Przeglądaj, instaluj i zarządzaj rozszerzeniami powłoki GNOME." #. Translators: Use 'Name email@domain.com' or 'Name https://website.example' (without single quotes). Do not delete existing names, write yours on a new line. #: src/exm-application.c:204 msgid "translator-credits" msgstr "" "Rafał Baran\n" "Adam Lewicki\n" "Adiee5" #: src/exm-browse-page.blp:16 msgid "Search for Extensions" msgstr "Wyszukaj rozszerzenie" #: src/exm-browse-page.blp:17 msgid "" "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell Extensions" msgstr "" "Wpisz słowo kluczowe, aby wyszukać rozszerzenia GNOME w extensions.gnome.org" #: src/exm-browse-page.blp:47 msgid "Relevance" msgstr "Trafność" #: src/exm-browse-page.blp:48 msgctxt "Sort search results" msgid "Downloads" msgstr "Liczba pobrań" #: src/exm-browse-page.blp:49 msgid "Recent" msgstr "Ostatnie" #: src/exm-browse-page.blp:50 src/exm-detail-view.blp:113 msgid "Name" msgstr "Nazwa" #: src/exm-browse-page.blp:57 msgid "Sort search results" msgstr "Sortowanie wyników wyszukiwania" #: src/exm-browse-page.blp:103 msgid "_Load More Results" msgstr "Załaduj więcej wyników" #: src/exm-browse-page.blp:137 src/exm-installed-page.blp:123 msgid "No Results Found" msgstr "Brak wyników" #: src/exm-browse-page.blp:144 msgid "Try a different search" msgstr "Wypróbuj innego zapytania" #: src/exm-browse-page.blp:178 src/exm-comment-dialog.blp:34 #: src/exm-detail-view.blp:49 src/exm-detail-view.blp:291 #: src/exm-upgrade-assistant.blp:100 msgid "Connection Error" msgstr "Błąd połączenia" #: src/exm-comment-dialog.blp:13 src/exm-detail-view.blp:248 msgid "Reviews and Comments" msgstr "Recenzje i komentarze" #: src/exm-comment-dialog.blp:25 msgid "Loading" msgstr "Ładowanie" #: src/exm-comment-tile.blp:30 src/exm-detail-view.blp:127 msgid "Author" msgstr "Autor" #: src/exm-detail-view.blp:40 msgid "Loading Details" msgstr "Ładowanie szczegółów" #: src/exm-detail-view.blp:59 src/exm-window.c:347 msgid "An Error Occurred" msgstr "Wystąpił błąd" #: src/exm-detail-view.blp:60 msgid "No extension details available" msgstr "Szczegóły rozszerzenia nie są dostępne" #: src/exm-detail-view.blp:154 msgid "Enlarge Image" msgstr "Powiększ obraz" #: src/exm-detail-view.blp:172 src/exm-extension-row.blp:89 msgid "Description" msgstr "Opis" #: src/exm-detail-view.blp:195 msgid "Links" msgstr "Linki" #: src/exm-detail-view.blp:203 msgid "Homepage" msgstr "Strona główna projektu" #: src/exm-detail-view.blp:219 msgid "Donate" msgstr "Przekaż darowiznę" #: src/exm-detail-view.blp:228 msgid "View on Extensions" msgstr "Zobacz na stronie" #: src/exm-detail-view.blp:271 msgid "Reviews and comments are disabled for this extension" msgstr "Recenzje i komentarze są wyłączone dla tego rozszerzenia" #: src/exm-detail-view.blp:314 msgid "There are no reviews or comments" msgstr "Nie ma żadnych recenzji ani komentarzy" #: src/exm-detail-view.blp:343 msgid "_Show All" msgstr "_Pokaż wszystkie" #. Translators: '%s' = extension name #: src/exm-detail-view.c:445 #, c-format msgid "%s Icon" msgstr "Ikona %s" #. Translators: '%s' = extension name #: src/exm-detail-view.c:478 #, c-format msgid "%s Screenshot" msgstr "Zrzut ekranu %s" #: src/exm-error-dialog.blp:7 msgid "Error Report" msgstr "Zgłoszenie błędu" #: src/exm-error-dialog.blp:22 msgid "An unexpected error occurred in Extension Manager" msgstr "Pojawił się nieoczekiwany błąd w Menedżerze Rozszerzeń" #: src/exm-error-dialog.blp:36 msgid "Copy to Clipboard" msgstr "Skopiuj do schowka" #: src/exm-error-dialog.blp:77 msgid "_New Issue" msgstr "_Nowe zgłoszenie" #. Success indicator #: src/exm-error-dialog.c:125 src/exm-upgrade-assistant.c:347 msgid "Copied" msgstr "Skopiowano" #: src/exm-error-dialog.c:173 msgid "Please open a new issue and attach the following information:" msgstr "Otwórz nowy problem i dołącz wymagane informacje:" #. Translators: '%s' = Name of Distributor (e.g. "Packager123") #: src/exm-error-dialog.c:177 #, c-format msgid "" "You are using a third-party build of Extension Manager. Please contact the package distributor (%s) first before " "filing an issue. Be sure to attach the following information:" msgstr "" "Korzystasz z nieoficjalnej wersji Menedżera rozszerzeń. Skontaktuj się z dystrybutorem pakietu(%s) przed " "zgłoszeniem awarii. Dołącz następujące informacje:" #. Translators: Button's tooltip to open extension's preferences dialog #: src/exm-extension-row.blp:28 msgid "Open extension preferences" msgstr "Otwórz ustawienia rozszerzenia" #. Translators: Icon's tooltip when an extension has an error #: src/exm-extension-row.blp:46 msgid "An error occurred while loading this extension" msgstr "Wystąpił błąd podczas ładowania tego rozszerzenia" #. Translators: Icon's tooltip when an extension is incompatible #: src/exm-extension-row.blp:63 src/exm-install-button.c:117 msgid "This extension is incompatible with your current version of GNOME" msgstr "To rozszerzenie nie jest kompatybilne z twoją wersją GNOME" #. Translators: Icon's tooltip when an extension update is available #: src/exm-extension-row.blp:80 msgid "A newer version of this extension is available" msgstr "Jest dostępna nowsza wersja tego rozszerzenia" #: src/exm-extension-row.blp:98 src/exm-info-bar.blp:50 msgid "Version" msgstr "Wersja" #: src/exm-extension-row.blp:107 msgid "Session Modes" msgstr "Tryby sesji" #: src/exm-extension-row.blp:137 msgid "Error" msgstr "Błąd" #: src/exm-extension-row.blp:158 msgid "See Details" msgstr "Zobacz szczegóły" #: src/exm-extension-row.blp:169 msgid "Remove…" msgstr "Usuń…" #: src/exm-extension-row.c:175 msgid "Unlock Dialog" msgstr "Odblokuj wyskakujące okno" #. Translators: GNOME Display Manager #: src/exm-extension-row.c:181 msgid "GDM" msgstr "GDM" #. Translators: Label when an extension runs on both, login and lock screens #: src/exm-extension-row.c:189 msgid "" "This extension will run while the screen is locked and no user is logged in" msgstr "" "To rozszerzenie działa również kiedy ekran jest zablokowany i żaden " "użytkownik nie jest zalogowany" #. Translators: Label when an extension runs on the lock screen #: src/exm-extension-row.c:194 msgid "This extension will run while the screen is locked" msgstr "To rozszerzenie działa również kiedy ekran jest zablokowany" #. Translators: Label when an extension runs on the login screen #: src/exm-extension-row.c:199 msgid "This extension will run while no user is logged in" msgstr "" "To rozszerzenie działa również kiedy żaden użytkownik nie jest zalogowany" #: src/exm-help-overlay.blp:11 msgctxt "shortcut window" msgid "General" msgstr "Ogólne" #: src/exm-help-overlay.blp:14 msgctxt "shortcut window" msgid "Show Installed Page" msgstr "Pokaż zainstalowane" #: src/exm-help-overlay.blp:19 msgctxt "shortcut window" msgid "Show Browse Page" msgstr "Otwórz stronę" #: src/exm-help-overlay.blp:24 msgctxt "shortcut window" msgid "Toggle Search" msgstr "Przełącz wyszukiwanie" #: src/exm-help-overlay.blp:29 msgctxt "shortcut window" msgid "Show Keyboard Shortcuts" msgstr "Pokaż skróty klawiaturowe" #: src/exm-help-overlay.blp:34 msgctxt "shortcut window" msgid "Close Window" msgstr "Zamknij okno" #: src/exm-help-overlay.blp:39 msgctxt "shortcut window" msgid "Quit" msgstr "Wyjdź" #: src/exm-help-overlay.blp:45 msgctxt "shortcut window" msgid "Screenshot View" msgstr "Podgląd zrzutu ekranu" #: src/exm-help-overlay.blp:48 src/exm-help-overlay.blp:63 msgctxt "shortcut window" msgid "Zoom In" msgstr "Powiększ" #: src/exm-help-overlay.blp:53 src/exm-help-overlay.blp:68 msgctxt "shortcut window" msgid "Zoom Out" msgstr "Pomniejsz" #: src/exm-help-overlay.blp:58 msgctxt "shortcut window" msgid "Reset Zoom" msgstr "Zresetuj powiększenie" #: src/exm-info-bar.blp:28 msgctxt "Number of downloads" msgid "Downloads" msgstr "Liczba pobrań" #: src/exm-info-bar.c:107 msgid "Unsupported" msgstr "Niewspierane" #: src/exm-install-button.c:127 msgid "Install…" msgstr "Zainstaluj…" #: src/exm-install-button.c:132 msgid "Installing" msgstr "Instalowanie" #: src/exm-install-button.c:136 msgctxt "State" msgid "Installed" msgstr "Zainstalowane" #: src/exm-install-button.c:140 msgid "Unsupported…" msgstr "Niewspierane…" #: src/exm-installed-page.blp:16 msgid "_Log Out…" msgstr "_Wyloguj…" #: src/exm-installed-page.blp:28 msgid "Use Extensions" msgstr "Użyj rozszerzeń" #: src/exm-installed-page.blp:29 msgid "Extensions can cause performance and stability issues" msgstr "Rozszerzenie może wpłynąć na wydajność i stabilność" #: src/exm-installed-page.blp:34 src/exm-upgrade-assistant.blp:133 msgid "User-Installed Extensions" msgstr "Ręcznie zainstalowane" #: src/exm-installed-page.blp:51 src/exm-upgrade-assistant.blp:150 msgid "No User Extensions Installed" msgstr "Brak ręcznie zainstalowanych rozszerzeń" #: src/exm-installed-page.blp:55 msgid "Browse" msgstr "Przeglądaj" #: src/exm-installed-page.blp:69 src/exm-upgrade-assistant.blp:160 msgid "System Extensions" msgstr "Systemowe rozszerzenia" #: src/exm-installed-page.blp:86 src/exm-upgrade-assistant.blp:177 msgid "No System Extensions Installed" msgstr "Nie zainstalowano rozszerzeń systemowych" #. Translators: Text announced by screen readers when interacting with the list of search results #: src/exm-installed-page.blp:111 msgid "Search Results" msgstr "Wyniki wyszukiwania" #: src/exm-installed-page.blp:124 msgid "Try a different search or search online" msgstr "Wypróbuj innego zapytania lub wyszukaj w sieci" #: src/exm-installed-page.blp:131 msgid "_Search Online" msgstr "_Szukaj w sieci" #. Translators: '%d' = number of extensions that will be updated #: src/exm-installed-page.c:298 #, c-format msgid "%d extension will be updated on next login" msgid_plural "%d extensions will be updated on next login" msgstr[0] "%d rozszerzenie zostanie zaktualizowane przy następnym logowaniu" msgstr[1] "%d rozszerzenia zostaną zaktualizowane przy następnym logowaniu" msgstr[2] "%d rozszerzeń zostanie zaktualizowanych przy następnym logowaniu" #: src/exm-rating.c:142 #, c-format msgid "%i Star" msgid_plural "%i Stars" msgstr[0] "%i gwiazdka" msgstr[1] "%i gwiazdki" msgstr[2] "%i gwiazdek" #. Translators: Button's tooltip to zoom out screenshots #: src/exm-screenshot-view.blp:37 msgid "Zoom Out" msgstr "Pomniejsz" #. Translators: Button's tooltip to zoom in screenshots #: src/exm-screenshot-view.blp:51 msgid "Zoom In" msgstr "Powiększ" #: src/exm-upgrade-assistant.blp:11 msgid "Upgrade Assistant" msgstr "Asystent aktualizacji" #: src/exm-upgrade-assistant.blp:66 msgid "_Check Compatibility" msgstr "_Sprawdź zgodność" #: src/exm-upgrade-assistant.blp:189 msgid "_Copy to Clipboard" msgstr "_Skopiuj do schowka" #: src/exm-upgrade-assistant.c:188 #, c-format msgid "Checked %d/%d Extensions" msgstr "Sprawdzono %d z %d rozszerzeń" #. Set percentage text #: src/exm-upgrade-assistant.c:207 #, c-format msgid "%d%% Compatible" msgstr "%d%% zgodnych rozszerzeń" #: src/exm-upgrade-assistant.c:223 #, c-format msgid "" "GNOME %s supports %d out of %d of the extensions currently " "installed on the system" msgstr "" "GNOME %s wspiera %d z %d rozszerzeń z aktualnie zainstalowanych" #. Translators: Icon's tooltip when an extension is compatible #: src/exm-upgrade-assistant.c:503 msgid "A compatible version of the extension exists" msgstr "Dostępna kompatybilna wersja rozszerzenia" #. Translators: Icon's tooltip when an extension is not compatible #: src/exm-upgrade-assistant.c:510 msgid "No compatible version of the extension exists" msgstr "Brak dostępnych kompatybilnych wersji rozszerzenia" #. Translators: Icon's tooltip when an extension compatibility is unknown #: src/exm-upgrade-assistant.c:517 msgid "" "This extension is not hosted on extensions.gnome.org. Its compatibility " "cannot be determined." msgstr "" "To rozszerzenie nie jest dostępne na extensions.gnome.org. Jego " "kompatybilność nie może zostać określona." #: src/exm-upgrade-assistant.c:608 #, c-format msgid "" "You are currently running GNOME %s. Select a version of GNOME below " "and check whether your extensions will continue to be available." msgstr "" "Aktualnie używasz GNOME %s. Wybierz wersję GNOME poniżej i wybierz " "dostępną wersję." #. Translators: Tooltip of the search icon in the header bar #: src/exm-window.blp:39 msgid "Search Installed Extensions" msgstr "Wyszukaj zainstalowanych rozszerzeń" #: src/exm-window.blp:48 msgid "Main Menu" msgstr "Menu główne" #: src/exm-window.blp:59 msgid "Search for installed extensions" msgstr "Wyszukaj zainstalowane rozszerzenia" #: src/exm-window.blp:71 msgctxt "Navigation" msgid "_Installed" msgstr "_Zainstalowane" #: src/exm-window.blp:80 msgctxt "Navigation" msgid "_Browse" msgstr "_Przeglądaj" #. Translators: the character preceded by "_" should not be the same #. as others in the same menu #: src/exm-window.blp:108 msgid "Sort _Enabled First" msgstr "Najpierw sortuj _Włączone" #: src/exm-window.blp:109 msgid "_Show Unsupported" msgstr "Pokaż niewspierane" #: src/exm-window.blp:113 msgid "_Upgrade Assistant" msgstr "Asystent _Aktualizacji" #: src/exm-window.blp:114 msgid "_Keyboard Shortcuts" msgstr "Skróty _klawiaturowe" #: src/exm-window.blp:115 msgid "_About Extension Manager" msgstr "O programie" #: src/exm-window.blp:120 msgid "Uninstall Extension?" msgstr "Usunąć rozszerzenie?" #: src/exm-window.blp:121 msgid "" "The extension's features and functionality will no longer be accessible. Are " "you sure you want to uninstall?" msgstr "" "Funkcje rozszerzenia nie będą już dostępne. Czy na pewno chcesz usunąć?" #: src/exm-window.blp:126 msgid "_No" msgstr "Nie" #: src/exm-window.blp:127 msgid "_Yes" msgstr "Tak" #: src/exm-window.blp:132 msgid "Unsupported Extension" msgstr "Niewspierane rozszerzenie" #: src/exm-window.blp:133 msgid "" "This extension does not support your GNOME Shell version. It may cause " "errors if installed." msgstr "" "To rozszerzenie nie wspiera twojej wersji powłoki GNOME. Może ono powodować " "błędy po zainstalowaniu." #: src/exm-window.blp:139 msgid "_Install Anyway" msgstr "_Zainstaluj mimo tego" #: src/exm-window.blp:140 msgid "_Go Back" msgstr "Wstecz" #: src/exm-window.c:348 msgid "_Details" msgstr "_Szczegóły" #: src/web/exm-request-handler.c:99 msgid "" "Check GNOME infrastructure status " "and try again later" msgstr "" "Sprawdź stan serwerów GNOME i " "spróbuj ponownie później" #: src/web/exm-request-handler.c:100 msgid "Check your network status and try again" msgstr "Sprawdź swoje połączenie z Internetem i spróbuj ponownie" #~ msgid "Comments" #~ msgstr "Komentarze" #~ msgid "User Reviews" #~ msgstr "Recenzje użytkowników" #~ msgid "No comments yet" #~ msgstr "Brak komentarzy" #~ msgid "" #~ "This extension could be activated in session modes such as the login " #~ "screen or the lock screen" #~ msgstr "" #~ "To rozszerzenie nie może być aktywowane na różnych trybach sesji, takich " #~ "jak ekran logowania lub ekran blokady" #, c-format #~ msgid "%s by %s" #~ msgstr "%s autorstwa %s" #~ msgid "Updates Available" #~ msgstr "Dostępne aktualizacje" #~ msgid "Supported" #~ msgstr "Wspierane" #~ msgid "Unknown" #~ msgstr "Nieznane" #~ msgid "A utility for managing GNOME Shell Extensions" #~ msgstr "Narzędzie do zarządzania rozszerzeniami powłoki GNOME" #, c-format #~ msgid "e.g. “%s”" #~ msgstr "np. “%s”" #~ msgid "This extension is incompatible with your current version of GNOME." #~ msgstr "To rozszerzenie nie jest kompatybilne z twoją wersją GNOME." #, fuzzy #~| msgid "An Error Occurred" #~ msgid "An error occurred." #~ msgstr "Wystąpił Błąd" #~ msgid "@app_title@" #~ msgstr "@app_title@" #~ msgid "The second feature update to extension-manager. Highlights include:" #~ msgstr "" #~ "Druga aktualizacja funkcyjna do Menedżera Rozszerzeń. Najważniejsze " #~ "zmiany:" #~ msgid "View comments and reviews" #~ msgstr "Widok komentarzy i ocen" #~ msgid "Support for in-app updates" #~ msgstr "Wsparcie dla aktualizacji w aplikacji" #~ msgid "Better handling errors and out-of-date extensions" #~ msgstr "Lepsza obsługa błędów i nieaktualnych rozszerzeń" #~ msgid "Allow installing 'unsupported' extensions" #~ msgstr "Możliwość instalowania \"Niewspieranych\" rozszerzeń" #~ msgid "Display release notes on first run" #~ msgstr "Pokazywanie listy zmian aktualizacji przy pierwszym uruchomieniu" #~ msgid "New app icon" #~ msgstr "Nowa ikona aplikacji" #~ msgid "Optionally sort extensions by enabled status" #~ msgstr "Opcjonalne sortowanie rozszerzeń po statusie włączenia" #~ msgid "Translation updates" #~ msgstr "Aktualizacje tłumaczeń" #~ msgid "Fix special characters in search results" #~ msgstr "Naprawiono znaki specjalne w wynikach wyszukiwania" #~ msgid "Fixes a crash that sometimes occurs while uninstalling an extension" #~ msgstr "" #~ "Naprawia błąd występujący czasem podczas odinstalowywania rozszerzenia" #~ msgid "The first feature update to extension-manager. Highlights include:" #~ msgstr "" #~ "Pierwsza aktualizacja funkcyjna do Menedżera Rozszerzeń. Najważniejsze " #~ "zmiany:" #~ msgid "Dark theme and support for overriding the system colour scheme" #~ msgstr "" #~ "Ciemny motyw i możliwość nadpisania systemowego schematu kolorystycznego" #~ msgid "Shows screenshots in extension listings" #~ msgstr "Zrzuty ekranu na liście rozszerzeń" #~ msgid "Shell version compatibility check" #~ msgstr "Sprawdzanie kompatybilności z wersją powłoki" #~ msgid "Localised into seven languages" #~ msgstr "Przetłumaczono na siedem języków" #~ msgid "Global extension on/off toggle" #~ msgstr "Globalny włącznik/wyłącznik rozszerzeń" #~ msgid "Extension Manager (Development)" #~ msgstr "Menedżer Rozszerzeń (Wersja Rozwojowa)" #~ msgid "" #~ "A very simple tool for browsing, downloading, and managing GNOME shell " #~ "extensions." #~ msgstr "" #~ "Bardzo proste narzędzie do przeglądania, instalowania i zarządzania " #~ "rozszerzeniami powłoki GNOME." #~ msgid "e.g. \"Blur my Shell\"" #~ msgstr "np. \"Blur my Shell\"" #~ msgid "Popularity" #~ msgstr "Popularność" #~ msgid "Release Notes" #~ msgstr "Informacje o Wydaniu" #~ msgid "Theme" #~ msgstr "Motyw" #~ msgid "Follow System" #~ msgstr "Motyw sytemowy" #~ msgid "Light" #~ msgstr "Jasny" #~ msgid "Dark" #~ msgstr "Ciemny" #~ msgid "Are you sure you want to uninstall?" #~ msgstr "Czy na pewno chcesz odinstalować?" #~ msgid "What's New" #~ msgstr "Co Nowego" #~ msgid "View Release Notes" #~ msgstr "Zobacz Informacje o Wydaniu" #, c-format #~ msgid "" #~ "This is your first time using Extension Manager %s.\n" #~ "Would you like to see the release notes?" #~ msgstr "" #~ "To jest pierwszy raz kiedy uruchomiono Menedżera Rozszerzeń %s.\n" #~ "Czy pokazać informacje o wydaniu?" #~ msgid "Matthew Jakeman" #~ msgstr "Matthew Jakeman" #~ msgid "Colour Scheme Preference" #~ msgstr "Preferencje motywu" #~ msgid "" #~ "Whether to follow the system colour scheme or force either light or dark " #~ "mode." #~ msgstr "" #~ "Ustawia motyw na systemowy lub wymusza użycie ciemnego lub jasnego motywu." #~ msgctxt "shortcut window" #~ msgid "Show Shortcuts" #~ msgstr "Pokaż skróty" #~ msgid "" #~ "An extension manager for browsing and installing GNOME Shell Extensions." #~ msgstr "" #~ "Menedżer rozszerzeń do przeglądania i instalowania rozszerzeń powłoki " #~ "GNOME." extension-manager-0.6.3/po/print-source-files.sh000077500000000000000000000005621477302130300216560ustar00rootroot00000000000000# Useful for updating the POTFILES file (run from this directory) # Print out these specific data files echo "data/com.mattjakeman.ExtensionManager.desktop.in.in" echo "data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in" # Prints out all *.c and *.blp files in the project pushd ../ > /dev/null (find src -name *.c; find src -name *.blp) | sort popd > /dev/null extension-manager-0.6.3/po/pt.po000066400000000000000000000601251477302130300165510ustar00rootroot00000000000000# Portuguese translations for extension-manager package. # Copyright (C) YEAR THE extension-manager'S COPYRIGHT HOLDER # This file is distributed under the same license as the extension-manager package. # Hugo Carvalho , 2022, 2023, 2024, 2025. # Bruno Fragoso , 2025. msgid "" msgstr "" "Project-Id-Version: extension-manager\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-03-06 16:36+0000\n" "PO-Revision-Date: 2025-03-13 05:26+0000\n" "Last-Translator: Hugo Carvalho \n" "Language-Team: Portuguese \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" "X-Generator: Weblate 5.10.3-dev\n" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:2 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:6 #: src/exm-window.blp:7 msgid "Extension Manager" msgstr "Gestor de Extensões" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:11 msgid "Manage GNOME Shell Extensions" msgstr "Gerir as extensões do GNOME Shell" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #. Make sure to leave the original strings and add your translations afterwards, so that users can search both in English and your language. #: data/com.mattjakeman.ExtensionManager.desktop.in.in:14 msgid "extension;manager;shell;" msgstr "extension;manager;shell;" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:7 msgid "Browse, install, and manage GNOME Shell Extensions" msgstr "Explorar, instalar e gerir as extensões do GNOME Shell" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:13 msgid "A utility for browsing and installing GNOME Shell Extensions." msgstr "Um utilitário para explorar e instalar as extensões do GNOME Shell." #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:14 msgid "Features:" msgstr "Funcionalidades:" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:16 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:26 msgid "Browse extensions.gnome.org right inside the app" msgstr "Explorar em extensões.gnome.org por dentro da aplicação" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:17 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:22 msgid "Manage the extensions you already have installed" msgstr "Gerir as extensões que já estão instaladas" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:30 msgid "See all the details of your extensions" msgstr "Ver todos os detalhes das suas extensões" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:34 msgid "Check your extensions compatibility with the next version of GNOME" msgstr "" "Verifique a compatibilidade de suas extensões com a próxima versão do GNOME" #: src/exm-application.c:201 msgid "Browse, install, and manage GNOME Shell Extensions." msgstr "Explorar, instalar e gerir as extensões do GNOME Shell." #. Translators: Use 'Name email@domain.com' or 'Name https://website.example' (without single quotes). Do not delete existing names, write yours on a new line. #: src/exm-application.c:204 msgid "translator-credits" msgstr "Hugo Carvalho " #: src/exm-browse-page.blp:16 msgid "Search for Extensions" msgstr "Pesquisar por Extensões" #: src/exm-browse-page.blp:17 msgid "" "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell Extensions" msgstr "" "Digite uma palavra-chave para pesquisar em 'extensions.gnome.org' por " "Extensões do GNOME Shell" #: src/exm-browse-page.blp:47 msgid "Relevance" msgstr "Relevância" #: src/exm-browse-page.blp:48 msgctxt "Sort search results" msgid "Downloads" msgstr "Transferências" #: src/exm-browse-page.blp:49 msgid "Recent" msgstr "Recentes" #: src/exm-browse-page.blp:50 src/exm-detail-view.blp:113 msgid "Name" msgstr "Nome" #: src/exm-browse-page.blp:57 msgid "Sort search results" msgstr "Ordenar os resultados da pesquisa" #: src/exm-browse-page.blp:103 msgid "_Load More Results" msgstr "_Carregar mais resultados" #: src/exm-browse-page.blp:137 src/exm-installed-page.blp:123 msgid "No Results Found" msgstr "Nenhum resultado" #: src/exm-browse-page.blp:144 msgid "Try a different search" msgstr "Tentar uma pesquisa diferente" #: src/exm-browse-page.blp:178 src/exm-comment-dialog.blp:34 #: src/exm-detail-view.blp:49 src/exm-detail-view.blp:291 #: src/exm-upgrade-assistant.blp:100 msgid "Connection Error" msgstr "Erro de ligação" #: src/exm-comment-dialog.blp:13 src/exm-detail-view.blp:248 msgid "Reviews and Comments" msgstr "Revisões e comentários" #: src/exm-comment-dialog.blp:25 msgid "Loading" msgstr "A carregar" #: src/exm-comment-tile.blp:30 src/exm-detail-view.blp:127 msgid "Author" msgstr "Autor" #: src/exm-detail-view.blp:40 msgid "Loading Details" msgstr "A carregar detalhes" #: src/exm-detail-view.blp:59 src/exm-window.c:347 msgid "An Error Occurred" msgstr "Ocorreu um erro" #: src/exm-detail-view.blp:60 msgid "No extension details available" msgstr "Não existem detalhes sobre a extensão" #: src/exm-detail-view.blp:154 msgid "Enlarge Image" msgstr "Ampliar Imagem" #: src/exm-detail-view.blp:172 src/exm-extension-row.blp:89 msgid "Description" msgstr "Descrição" #: src/exm-detail-view.blp:195 msgid "Links" msgstr "Ligações" #: src/exm-detail-view.blp:203 msgid "Homepage" msgstr "Página inicial" #: src/exm-detail-view.blp:219 msgid "Donate" msgstr "Doar" #: src/exm-detail-view.blp:228 msgid "View on Extensions" msgstr "Ver em Extensões" #: src/exm-detail-view.blp:271 msgid "Reviews and comments are disabled for this extension" msgstr "As revisões e comentários estão desativados para esta extensão" #: src/exm-detail-view.blp:314 msgid "There are no reviews or comments" msgstr "Não há revisões ou comentários" #: src/exm-detail-view.blp:343 msgid "_Show All" msgstr "_Mostrar tudo" #. Translators: '%s' = extension name #: src/exm-detail-view.c:445 #, c-format msgid "%s Icon" msgstr "%s Ícone" #. Translators: '%s' = extension name #: src/exm-detail-view.c:478 #, c-format msgid "%s Screenshot" msgstr "%s Captura de ecrã" #: src/exm-error-dialog.blp:7 msgid "Error Report" msgstr "Relatório de erros" #: src/exm-error-dialog.blp:22 msgid "An unexpected error occurred in Extension Manager" msgstr "Ocorreu um erro inesperado no Gestor de Extensões" #: src/exm-error-dialog.blp:36 msgid "Copy to Clipboard" msgstr "Copiar para a área de transferência" #: src/exm-error-dialog.blp:77 msgid "_New Issue" msgstr "_Novo problema" #. Success indicator #: src/exm-error-dialog.c:125 src/exm-upgrade-assistant.c:347 msgid "Copied" msgstr "Copiado" #: src/exm-error-dialog.c:173 msgid "Please open a new issue and attach the following information:" msgstr "Submeta um novo problema e anexe as seguintes informações:" #. Translators: '%s' = Name of Distributor (e.g. "Packager123") #: src/exm-error-dialog.c:177 #, c-format msgid "" "You are using a third-party build of Extension Manager. Please contact the package distributor (%s) first before " "filing an issue. Be sure to attach the following information:" msgstr "" "Está a utilizar uma compilação de terceiros do Gestor de Extensões. Por " "favor contacte o distribuidor (%s) do pacote antes de apresentar um problema. Certifique-se de que anexa as seguintes " "informações:" #. Translators: Button's tooltip to open extension's preferences dialog #: src/exm-extension-row.blp:28 msgid "Open extension preferences" msgstr "Mostrar as preferências das extensões" #. Translators: Icon's tooltip when an extension has an error #: src/exm-extension-row.blp:46 msgid "An error occurred while loading this extension" msgstr "Ocorreu um erro ao carregar esta extensão" #. Translators: Icon's tooltip when an extension is incompatible #: src/exm-extension-row.blp:63 src/exm-install-button.c:117 msgid "This extension is incompatible with your current version of GNOME" msgstr "Esta extensão é incompatível com a sua versão atual do GNOME" #. Translators: Icon's tooltip when an extension update is available #: src/exm-extension-row.blp:80 msgid "A newer version of this extension is available" msgstr "Uma nova versão desta extensão está disponível" #: src/exm-extension-row.blp:98 src/exm-info-bar.blp:50 msgid "Version" msgstr "Versão" #: src/exm-extension-row.blp:107 msgid "Session Modes" msgstr "Modos de sessão" #: src/exm-extension-row.blp:137 msgid "Error" msgstr "Erro" #: src/exm-extension-row.blp:158 msgid "See Details" msgstr "Ver detalhes" #: src/exm-extension-row.blp:169 msgid "Remove…" msgstr "Remover…" #: src/exm-extension-row.c:175 msgid "Unlock Dialog" msgstr "Desbloquear diálogo" #. Translators: GNOME Display Manager #: src/exm-extension-row.c:181 msgid "GDM" msgstr "GDM" #. Translators: Label when an extension runs on both, login and lock screens #: src/exm-extension-row.c:189 msgid "" "This extension will run while the screen is locked and no user is logged in" msgstr "" "Esta extensão será executada enquanto o ecrã estiver bloqueado e nenhum " "utilizador tiver iniciado sessão" #. Translators: Label when an extension runs on the lock screen #: src/exm-extension-row.c:194 msgid "This extension will run while the screen is locked" msgstr "Esta extensão será executada enquanto o ecrã estiver bloqueado" #. Translators: Label when an extension runs on the login screen #: src/exm-extension-row.c:199 msgid "This extension will run while no user is logged in" msgstr "" "Esta extensão será executada enquanto nenhum utilizador tiver sessão iniciada" #: src/exm-help-overlay.blp:11 msgctxt "shortcut window" msgid "General" msgstr "Geral" #: src/exm-help-overlay.blp:14 msgctxt "shortcut window" msgid "Show Installed Page" msgstr "Mostrar Instaladas" #: src/exm-help-overlay.blp:19 msgctxt "shortcut window" msgid "Show Browse Page" msgstr "Mostrar página de navegação" #: src/exm-help-overlay.blp:24 msgctxt "shortcut window" msgid "Toggle Search" msgstr "Alternar pesquisa" #: src/exm-help-overlay.blp:29 msgctxt "shortcut window" msgid "Show Keyboard Shortcuts" msgstr "Mostrar atalhos de teclado" #: src/exm-help-overlay.blp:34 msgctxt "shortcut window" msgid "Close Window" msgstr "Fechar janela" #: src/exm-help-overlay.blp:39 msgctxt "shortcut window" msgid "Quit" msgstr "Sair" #: src/exm-help-overlay.blp:45 msgctxt "shortcut window" msgid "Screenshot View" msgstr "Visualização de captura de ecrã" #: src/exm-help-overlay.blp:48 src/exm-help-overlay.blp:63 msgctxt "shortcut window" msgid "Zoom In" msgstr "Ampliar Zoom" #: src/exm-help-overlay.blp:53 src/exm-help-overlay.blp:68 msgctxt "shortcut window" msgid "Zoom Out" msgstr "Diminuir Zoom" #: src/exm-help-overlay.blp:58 msgctxt "shortcut window" msgid "Reset Zoom" msgstr "Redefinir zoom" #: src/exm-info-bar.blp:28 msgctxt "Number of downloads" msgid "Downloads" msgstr "Transferências" #: src/exm-info-bar.c:107 msgid "Unsupported" msgstr "Não suportada" #: src/exm-install-button.c:127 msgid "Install…" msgstr "Instalar…" #: src/exm-install-button.c:132 msgid "Installing" msgstr "A instalar" #: src/exm-install-button.c:136 msgctxt "State" msgid "Installed" msgstr "Instalado" #: src/exm-install-button.c:140 msgid "Unsupported…" msgstr "Não suportada…" #: src/exm-installed-page.blp:16 msgid "_Log Out…" msgstr "_Terminar sessão…" #: src/exm-installed-page.blp:28 msgid "Use Extensions" msgstr "Usar Extensões" #: src/exm-installed-page.blp:29 msgid "Extensions can cause performance and stability issues" msgstr "Extensões podem causar problemas de desempenho e estabilidade" #: src/exm-installed-page.blp:34 src/exm-upgrade-assistant.blp:133 msgid "User-Installed Extensions" msgstr "Extensões instaladas manualmente" #: src/exm-installed-page.blp:51 src/exm-upgrade-assistant.blp:150 msgid "No User Extensions Installed" msgstr "Nenhuma extensão de usuário instalada" #: src/exm-installed-page.blp:55 msgid "Browse" msgstr "Navegar" #: src/exm-installed-page.blp:69 src/exm-upgrade-assistant.blp:160 msgid "System Extensions" msgstr "Extensões do sistema" #: src/exm-installed-page.blp:86 src/exm-upgrade-assistant.blp:177 msgid "No System Extensions Installed" msgstr "Nenhuma extensão de sistema instalada" #. Translators: Text announced by screen readers when interacting with the list of search results #: src/exm-installed-page.blp:111 msgid "Search Results" msgstr "Resultados da pesquisa" #: src/exm-installed-page.blp:124 msgid "Try a different search or search online" msgstr "Tente uma pesquisa diferente ou pesquise online" #: src/exm-installed-page.blp:131 msgid "_Search Online" msgstr "_Pesquisar online" #. Translators: '%d' = number of extensions that will be updated #: src/exm-installed-page.c:298 #, c-format msgid "%d extension will be updated on next login" msgid_plural "%d extensions will be updated on next login" msgstr[0] "%d extensão será atualizada no próximo acesso" msgstr[1] "%d extensões serão atualizadas no próximo acesso" #: src/exm-rating.c:142 #, c-format msgid "%i Star" msgid_plural "%i Stars" msgstr[0] "%i Estrela" msgstr[1] "%i Estrelas" #. Translators: Button's tooltip to zoom out screenshots #: src/exm-screenshot-view.blp:37 msgid "Zoom Out" msgstr "Diminuir" #. Translators: Button's tooltip to zoom in screenshots #: src/exm-screenshot-view.blp:51 msgid "Zoom In" msgstr "Ampliar" #: src/exm-upgrade-assistant.blp:11 msgid "Upgrade Assistant" msgstr "Assistente de Atualizações" #: src/exm-upgrade-assistant.blp:66 msgid "_Check Compatibility" msgstr "_Verificar Compatibilidade" #: src/exm-upgrade-assistant.blp:189 msgid "_Copy to Clipboard" msgstr "_Copiar para a área de transferência" #: src/exm-upgrade-assistant.c:188 #, c-format msgid "Checked %d/%d Extensions" msgstr "Verificado %d/%d Extensões" #. Set percentage text #: src/exm-upgrade-assistant.c:207 #, c-format msgid "%d%% Compatible" msgstr "%d%% Compatível" #: src/exm-upgrade-assistant.c:223 #, c-format msgid "" "GNOME %s supports %d out of %d of the extensions currently " "installed on the system" msgstr "" "O GNOME %s suporta %d das %d extensões atualmente instaladas " "no sistema" #. Translators: Icon's tooltip when an extension is compatible #: src/exm-upgrade-assistant.c:503 msgid "A compatible version of the extension exists" msgstr "Existe uma versão compatível da extensão" #. Translators: Icon's tooltip when an extension is not compatible #: src/exm-upgrade-assistant.c:510 msgid "No compatible version of the extension exists" msgstr "Não existe uma versão compatível da extensão" #. Translators: Icon's tooltip when an extension compatibility is unknown #: src/exm-upgrade-assistant.c:517 msgid "" "This extension is not hosted on extensions.gnome.org. Its compatibility " "cannot be determined." msgstr "" "Esta extensão não está hospedada no extensions.gnome.org. Sua " "compatibilidade não pode ser determinada." #: src/exm-upgrade-assistant.c:608 #, c-format msgid "" "You are currently running GNOME %s. Select a version of GNOME below " "and check whether your extensions will continue to be available." msgstr "" "Você está atualmente executando o GNOME %s. Selecione uma versão do " "GNOME abaixo e verifique se as suas extensões continuarão disponíveis." #. Translators: Tooltip of the search icon in the header bar #: src/exm-window.blp:39 msgid "Search Installed Extensions" msgstr "Pesquisar extensões instaladas" #: src/exm-window.blp:48 msgid "Main Menu" msgstr "Menu principal" #: src/exm-window.blp:59 msgid "Search for installed extensions" msgstr "Pesquisar por extensões instaladas" #: src/exm-window.blp:71 msgctxt "Navigation" msgid "_Installed" msgstr "_Instalada" #: src/exm-window.blp:80 msgctxt "Navigation" msgid "_Browse" msgstr "_Navegar" #. Translators: the character preceded by "_" should not be the same #. as others in the same menu #: src/exm-window.blp:108 msgid "Sort _Enabled First" msgstr "Ordenar _ativadas primeiro" #: src/exm-window.blp:109 msgid "_Show Unsupported" msgstr "_Mostrar não suportadas" #: src/exm-window.blp:113 msgid "_Upgrade Assistant" msgstr "_Assistente de atualizações" #: src/exm-window.blp:114 msgid "_Keyboard Shortcuts" msgstr "_Atalhos de teclado" #: src/exm-window.blp:115 msgid "_About Extension Manager" msgstr "_Acerca do Gestor de Extensões" #: src/exm-window.blp:120 msgid "Uninstall Extension?" msgstr "Desinstalar extensão?" #: src/exm-window.blp:121 msgid "" "The extension's features and functionality will no longer be accessible. Are " "you sure you want to uninstall?" msgstr "" "Os recursos e funcionalidades da extensão não estarão mais acessíveis. Tem " "certeza de que deseja desinstalar?" #: src/exm-window.blp:126 msgid "_No" msgstr "_Não" #: src/exm-window.blp:127 msgid "_Yes" msgstr "_Sim" #: src/exm-window.blp:132 msgid "Unsupported Extension" msgstr "Extensão não suportada" #: src/exm-window.blp:133 msgid "" "This extension does not support your GNOME Shell version. It may cause " "errors if installed." msgstr "" "Esta extensão não é compatível com a sua versão do GNOME Shell. Ela pode " "causar erros se instalada." #: src/exm-window.blp:139 msgid "_Install Anyway" msgstr "_Instalar mesmo assim" #: src/exm-window.blp:140 msgid "_Go Back" msgstr "_Voltar" #: src/exm-window.c:348 msgid "_Details" msgstr "_Detalhes" #: src/web/exm-request-handler.c:99 msgid "" "Check GNOME infrastructure status " "and try again later" msgstr "" "Verifique o estado da infraestrutura do " "GNOME e tente novamente mais tarde" #: src/web/exm-request-handler.c:100 msgid "Check your network status and try again" msgstr "Verifique o estado da sua rede e tente novamente" #~ msgid "Comments" #~ msgstr "Comentários" #~ msgid "Loading Comments" #~ msgstr "A carregar comentários" #~ msgid "User Reviews" #~ msgstr "Avaliações dos utilizadores" #~ msgid "No comments yet" #~ msgstr "Sem comentários ainda" #~ msgid "" #~ "This extension could be activated in session modes such as the login " #~ "screen or the lock screen" #~ msgstr "" #~ "Esta extensão pode ser ativada em modos de sessão, como o ecrã de início " #~ "de sessão ou a ecrã de bloqueio" #, c-format #~ msgid "%s by %s" #~ msgstr "%s por %s" #~ msgid "Updates Available" #~ msgstr "Atualizações disponíveis" #~ msgid "Supported" #~ msgstr "Suportada" #~ msgid "Unknown" #~ msgstr "Desconhecida" #~ msgid "A utility for managing GNOME Shell Extensions" #~ msgstr "Um utilitário para gerir as extensões do GNOME Shell" #, c-format #~ msgid "e.g. “%s”" #~ msgstr "por exemplo, “%s”" #~ msgid "This extension is incompatible with your current version of GNOME." #~ msgstr "Esta extensão é incompatível com a versão atual do GNOME." #~ msgid "An error occurred." #~ msgstr "Ocorreu um erro." #~ msgid "Return to view" #~ msgstr "Voltar à vista" #~ msgid "@app_title@" #~ msgstr "@app_title@" #~ msgid "HOTFIX: Fix broken 'recent' and 'popularity' search filters" #~ msgstr "" #~ "HOTFIX: Correção dos filtros de pesquisa \"recente\" e \"popularidade\" " #~ "corrompidos" #~ msgid "Various stability and correctness fixes" #~ msgstr "Várias correções de estabilidade" #~ msgid "Translation updates" #~ msgstr "Atualizações de traduções" #~ msgid "Upgrade Assistant scroll fix" #~ msgstr "Correção do deslocamento do Assistente de atualização" #~ msgid "Pixel perfect app icon" #~ msgstr "Ícone da aplicação pixel perfeito" #~ msgid "Official snap support" #~ msgstr "Suporte oficial a snaps" #~ msgid "Improved error log generation" #~ msgstr "Melhoria da criação de registos de erros" #~ msgid "Fully adaptive mobile-friendly user interface" #~ msgstr "Interface totalmente adaptável para dispositivos móveis" #~ msgid "Paginated search results" #~ msgstr "Resultados da pesquisa paginada" #~ msgid "Upgrade Assistant for checking extension compatibility" #~ msgstr "" #~ "Assistente de Atualização para verificar a compatibilidade da extensão" #~ msgid "Unsupported extensions are hidden by default" #~ msgstr "Extensões não suportadas são ocultadas por defeito" #~ msgid "Overhauled error and crash reporting" #~ msgstr "Revisão de erros e relatórios de falhas" #~ msgid "Full-screen image viewer" #~ msgstr "Visualizador de imagens de ecrã inteiro" #~ msgid "Handles new gnome-extensions:// URI scheme" #~ msgstr "" #~ "Faz a gestão do novo gnome-extensions:// esquema de URI" #~ msgid "Randomised extension suggestions" #~ msgstr "Sugestões de extensão aleatórias" #~ msgid "Performance and stability" #~ msgstr "Desempenho e estabilidade" #~ msgid "Various bug fixes" #~ msgstr "Várias correções de bugs" #~ msgid "Remove release notes dialog" #~ msgstr "Remover janela das notas de lançamento" #~ msgid "Fix special characters in installed extension listings" #~ msgstr "" #~ "Corrige os caracteres especiais nas listagens de extensões instaladas" #~ msgid "The second feature update to extension-manager. Highlights include:" #~ msgstr "" #~ "A segunda atualização de funções do gestor de extensões. Em destaque:" #~ msgid "View comments and reviews" #~ msgstr "Ver avaliações e comentários" #~ msgid "Support for in-app updates" #~ msgstr "Suporte para atualizações por dentro da aplicação" #~ msgid "Better handling errors and out-of-date extensions" #~ msgstr "Melhor tratamento de erros e de extensões desatualizadas" #~ msgid "Allow installing 'unsupported' extensions" #~ msgstr "Permite instalar extensões 'não suportadas'" #~ msgid "Display release notes on first run" #~ msgstr "Mostra as notas de lançamento na primeira execução" #~ msgid "New app icon" #~ msgstr "Novo ícone da aplicação" #~ msgid "Optionally sort extensions by enabled status" #~ msgstr "Opcionalmente ordena as extensões pelo estado ativado" #~ msgid "Fix special characters in search results" #~ msgstr "Corrige caracteres especiais nos resultados da pesquisa" #~ msgid "Fixes a crash that sometimes occurs while uninstalling an extension" #~ msgstr "Corrige uma falha que por vezes ocorria ao desinstalar uma extensão" #~ msgid "The first feature update to extension-manager. Highlights include:" #~ msgstr "" #~ "A primeira atualização de funções do gestor de extensões. Em destaque:" #~ msgid "Dark theme and support for overriding the system colour scheme" #~ msgstr "Tema escuro e suporte para substituir o esquema de cores do sistema" #~ msgid "Shows screenshots in extension listings" #~ msgstr "Mostra capturas de ecrã nos detalhes das extensões" #~ msgid "Shell version compatibility check" #~ msgstr "Verifica a compatibilidade da versão Shell" #~ msgid "Localised into seven languages" #~ msgstr "Traduzido em sete idiomas" #~ msgid "Global extension on/off toggle" #~ msgstr "Ativar/desativar extensão global" #~ msgid "Displays user and system extensions separately" #~ msgstr "Mostra as extensões do utilizador e do sistema separadamente" #~ msgid "Extension Manager (Development)" #~ msgstr "Gestor de Extensões (Desenvolvimento)" #~ msgid "Popularity" #~ msgstr "Popularidade" #~ msgid "Supported Versions" #~ msgstr "Versões suportadas" #~ msgctxt "Navigation" #~ msgid "Browse" #~ msgstr "Explorar" #~ msgid "Theme" #~ msgstr "Tema" #~ msgid "Follow System" #~ msgstr "Tema do sistema" #~ msgid "Light" #~ msgstr "Claro" #~ msgid "Dark" #~ msgstr "Escuro" #~ msgid "Are you sure you want to uninstall?" #~ msgstr "Tem a certeza de que quer desinstalar?" #~ msgid "" #~ "A very simple tool for browsing, downloading, and managing GNOME shell " #~ "extensions." #~ msgstr "" #~ "Uma ferramenta muito simples para explorar, descarregar e gerir as " #~ "extensões do GNOME Shell." #~ msgid "e.g. \"Blur my Shell\"" #~ msgstr "ex: \"Blur my Shell\"" #~ msgid "What's New" #~ msgstr "Novidades" #~ msgid "View Release Notes" #~ msgstr "Ver notas de lançamento" #, c-format #~ msgid "" #~ "This is your first time using Extension Manager %s.\n" #~ "Would you like to see the release notes?" #~ msgstr "" #~ "Esta é a primeira vez que usa o Gestor de Extensões %s\n" #~ "Gostaria de ver as notas de lançamento?" extension-manager-0.6.3/po/pt_BR.po000066400000000000000000000562301477302130300171360ustar00rootroot00000000000000# Brazilian Portuguese translation for Extension Manager. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the extension-manager package. # Douglas Silva , 2024. # Álvaro Burns, 2025. # burns , 2025. msgid "" msgstr "" "Project-Id-Version: extension-manager\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-03-06 16:36+0000\n" "PO-Revision-Date: 2025-03-29 14:01+0000\n" "Last-Translator: burns \n" "Language-Team: Portuguese (Brazil) \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: Weblate 5.11-dev\n" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:2 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:6 #: src/exm-window.blp:7 msgid "Extension Manager" msgstr "Gerenciador de Extensões" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:11 msgid "Manage GNOME Shell Extensions" msgstr "Gerencie Extensões do GNOME Shell" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #. Make sure to leave the original strings and add your translations afterwards, so that users can search both in English and your language. #: data/com.mattjakeman.ExtensionManager.desktop.in.in:14 msgid "extension;manager;shell;" msgstr "extension;manager;shell;extensões;gerenciador;extensão;" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:7 msgid "Browse, install, and manage GNOME Shell Extensions" msgstr "Navegue, instale e gerencie as Extensões do GNOME Shell" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:13 msgid "A utility for browsing and installing GNOME Shell Extensions." msgstr "Uma ferramenta para navegar e instalar Extensões do GNOME Shell." #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:14 msgid "Features:" msgstr "Recursos:" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:16 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:26 msgid "Browse extensions.gnome.org right inside the app" msgstr "Navegue por extensions.gnome.org diretamente no aplicativo" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:17 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:22 msgid "Manage the extensions you already have installed" msgstr "Gerencie as extensões que você já tem instaladas" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:30 msgid "See all the details of your extensions" msgstr "Veja todos os detalhes das suas extensões" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:34 msgid "Check your extensions compatibility with the next version of GNOME" msgstr "" "Verifique a compatibilidade das suas extensões para a próxima versão do GNOME" #: src/exm-application.c:201 msgid "Browse, install, and manage GNOME Shell Extensions." msgstr "Navegue, instale e gerencie as Extensões do GNOME Shell." #. Translators: Use 'Name email@domain.com' or 'Name https://website.example' (without single quotes). Do not delete existing names, write yours on a new line. #: src/exm-application.c:204 msgid "translator-credits" msgstr "" "Celso Tavares https://github.com/celsotavaresdev\n" "Douglas Silva https://github.com/douglasilvadev\n" "Tiago Lucas Flach https://github.com/tiagoFlach\n" "Slowayy_ https://github.com/slowayy" #: src/exm-browse-page.blp:16 msgid "Search for Extensions" msgstr "Pesquise por Extensões" #: src/exm-browse-page.blp:17 msgid "" "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell Extensions" msgstr "" "Digite uma palavra-chave para pesquisar em 'extensions.gnome.org' por " "Extensões do GNOME Shell" #: src/exm-browse-page.blp:47 msgid "Relevance" msgstr "Relevância" #: src/exm-browse-page.blp:48 msgctxt "Sort search results" msgid "Downloads" msgstr "Baixados" #: src/exm-browse-page.blp:49 msgid "Recent" msgstr "Recentes" #: src/exm-browse-page.blp:50 src/exm-detail-view.blp:113 msgid "Name" msgstr "Nome" #: src/exm-browse-page.blp:57 msgid "Sort search results" msgstr "Ordene resultados de pesquisa" #: src/exm-browse-page.blp:103 msgid "_Load More Results" msgstr "_Carregar Mais Resultados" #: src/exm-browse-page.blp:137 src/exm-installed-page.blp:123 msgid "No Results Found" msgstr "Nenhum Resultado Encontrado" #: src/exm-browse-page.blp:144 msgid "Try a different search" msgstr "Tente uma nova pesquisa" #: src/exm-browse-page.blp:178 src/exm-comment-dialog.blp:34 #: src/exm-detail-view.blp:49 src/exm-detail-view.blp:291 #: src/exm-upgrade-assistant.blp:100 msgid "Connection Error" msgstr "Erro na conexão" #: src/exm-comment-dialog.blp:13 src/exm-detail-view.blp:248 msgid "Reviews and Comments" msgstr "Revisões e comentários" #: src/exm-comment-dialog.blp:25 msgid "Loading" msgstr "Carregando" #: src/exm-comment-tile.blp:30 src/exm-detail-view.blp:127 msgid "Author" msgstr "Autor" #: src/exm-detail-view.blp:40 msgid "Loading Details" msgstr "Carregando Detalhes" #: src/exm-detail-view.blp:59 src/exm-window.c:347 msgid "An Error Occurred" msgstr "Um Erro Ocorreu" #: src/exm-detail-view.blp:60 msgid "No extension details available" msgstr "Nenhum detalhe desta extensão está disponível" #: src/exm-detail-view.blp:154 msgid "Enlarge Image" msgstr "Ampliar Imagem" #: src/exm-detail-view.blp:172 src/exm-extension-row.blp:89 msgid "Description" msgstr "Descrição" #: src/exm-detail-view.blp:195 msgid "Links" msgstr "Links" #: src/exm-detail-view.blp:203 msgid "Homepage" msgstr "Página inicial" #: src/exm-detail-view.blp:219 msgid "Donate" msgstr "Doar" #: src/exm-detail-view.blp:228 msgid "View on Extensions" msgstr "Ver em Extensões" #: src/exm-detail-view.blp:271 msgid "Reviews and comments are disabled for this extension" msgstr "Revisões e comentários estão desabilitados para esta extensão" #: src/exm-detail-view.blp:314 msgid "There are no reviews or comments" msgstr "Não há revisões ou comentários" #: src/exm-detail-view.blp:343 msgid "_Show All" msgstr "_Mostrar Todas" #. Translators: '%s' = extension name #: src/exm-detail-view.c:445 #, c-format msgid "%s Icon" msgstr "%s Ícone" #. Translators: '%s' = extension name #: src/exm-detail-view.c:478 #, c-format msgid "%s Screenshot" msgstr "%s Captura de tela" #: src/exm-error-dialog.blp:7 msgid "Error Report" msgstr "Relatório de erro" #: src/exm-error-dialog.blp:22 msgid "An unexpected error occurred in Extension Manager" msgstr "Ocorreu um erro inesperado no Gerenciador de Extensões" #: src/exm-error-dialog.blp:36 msgid "Copy to Clipboard" msgstr "Copiar para a Área de Transferência" #: src/exm-error-dialog.blp:77 msgid "_New Issue" msgstr "_Novo Problema" #. Success indicator #: src/exm-error-dialog.c:125 src/exm-upgrade-assistant.c:347 msgid "Copied" msgstr "Copiado" #: src/exm-error-dialog.c:173 msgid "Please open a new issue and attach the following information:" msgstr "Abra um novo problema e anexe as seguintes informações:" #. Translators: '%s' = Name of Distributor (e.g. "Packager123") #: src/exm-error-dialog.c:177 #, c-format msgid "" "You are using a third-party build of Extension Manager. Please contact the package distributor (%s) first before " "filing an issue. Be sure to attach the following information:" msgstr "" "Você está usando uma compilação de terceiros do Gerenciador de Extensões. " "Por favor, entre em contato primeiro com o " "distribuidor do pacote (%s) antes de registrar um problema. " "Certifique-se de anexar as seguintes informações:" #. Translators: Button's tooltip to open extension's preferences dialog #: src/exm-extension-row.blp:28 msgid "Open extension preferences" msgstr "Abrir preferências da extensão" #. Translators: Icon's tooltip when an extension has an error #: src/exm-extension-row.blp:46 msgid "An error occurred while loading this extension" msgstr "Ocorreu um erro ao carregar esta extensão" #. Translators: Icon's tooltip when an extension is incompatible #: src/exm-extension-row.blp:63 src/exm-install-button.c:117 msgid "This extension is incompatible with your current version of GNOME" msgstr "Esta extensão é incompatível com a sua versão atual do GNOME" #. Translators: Icon's tooltip when an extension update is available #: src/exm-extension-row.blp:80 msgid "A newer version of this extension is available" msgstr "Uma versão mais recente desta extensão está disponível" #: src/exm-extension-row.blp:98 src/exm-info-bar.blp:50 msgid "Version" msgstr "Versão" #: src/exm-extension-row.blp:107 msgid "Session Modes" msgstr "Modos da sessão" #: src/exm-extension-row.blp:137 msgid "Error" msgstr "Erro" #: src/exm-extension-row.blp:158 msgid "See Details" msgstr "Ver Detalhes" #: src/exm-extension-row.blp:169 msgid "Remove…" msgstr "Remover…" #: src/exm-extension-row.c:175 msgid "Unlock Dialog" msgstr "Desbloquear diálogo" #. Translators: GNOME Display Manager #: src/exm-extension-row.c:181 msgid "GDM" msgstr "GDM" #. Translators: Label when an extension runs on both, login and lock screens #: src/exm-extension-row.c:189 msgid "" "This extension will run while the screen is locked and no user is logged in" msgstr "" "Esta extensão vai funcionar enquanto a tela está bloqueada e nenhum usuário " "estiver logado" #. Translators: Label when an extension runs on the lock screen #: src/exm-extension-row.c:194 msgid "This extension will run while the screen is locked" msgstr "Esta extensão vai rodar enquanto a tela estiver bloqueada" #. Translators: Label when an extension runs on the login screen #: src/exm-extension-row.c:199 msgid "This extension will run while no user is logged in" msgstr "Esta extensão vai funcionar enquanto nenhum usuário estiver logado" #: src/exm-help-overlay.blp:11 msgctxt "shortcut window" msgid "General" msgstr "Geral" #: src/exm-help-overlay.blp:14 msgctxt "shortcut window" msgid "Show Installed Page" msgstr "Mostrar Página de Instalada" #: src/exm-help-overlay.blp:19 msgctxt "shortcut window" msgid "Show Browse Page" msgstr "Mostrar Página de Navegar" #: src/exm-help-overlay.blp:24 msgctxt "shortcut window" msgid "Toggle Search" msgstr "Aternar pesquisa" #: src/exm-help-overlay.blp:29 msgctxt "shortcut window" msgid "Show Keyboard Shortcuts" msgstr "Mostrar Atalhos de Teclado" #: src/exm-help-overlay.blp:34 msgctxt "shortcut window" msgid "Close Window" msgstr "Fechar Janela" #: src/exm-help-overlay.blp:39 msgctxt "shortcut window" msgid "Quit" msgstr "Sair" #: src/exm-help-overlay.blp:45 msgctxt "shortcut window" msgid "Screenshot View" msgstr "Visualização de captura de tela" #: src/exm-help-overlay.blp:48 src/exm-help-overlay.blp:63 msgctxt "shortcut window" msgid "Zoom In" msgstr "Mais Zoom" #: src/exm-help-overlay.blp:53 src/exm-help-overlay.blp:68 msgctxt "shortcut window" msgid "Zoom Out" msgstr "Menos Zoom" #: src/exm-help-overlay.blp:58 msgctxt "shortcut window" msgid "Reset Zoom" msgstr "Redefinir Zoom" #: src/exm-info-bar.blp:28 msgctxt "Number of downloads" msgid "Downloads" msgstr "Baixados" #: src/exm-info-bar.c:107 msgid "Unsupported" msgstr "Não suportado" #: src/exm-install-button.c:127 msgid "Install…" msgstr "Instalar…" #: src/exm-install-button.c:132 msgid "Installing" msgstr "Instalando" #: src/exm-install-button.c:136 msgctxt "State" msgid "Installed" msgstr "Instalada" #: src/exm-install-button.c:140 msgid "Unsupported…" msgstr "Não suportado…" #: src/exm-installed-page.blp:16 msgid "_Log Out…" msgstr "_Encerrar…" #: src/exm-installed-page.blp:28 msgid "Use Extensions" msgstr "Usar Extensões" #: src/exm-installed-page.blp:29 msgid "Extensions can cause performance and stability issues" msgstr "Extensões podem causar problemas de desempenho e estabilidade" #: src/exm-installed-page.blp:34 src/exm-upgrade-assistant.blp:133 msgid "User-Installed Extensions" msgstr "Extensões instaladas pelo usuário" #: src/exm-installed-page.blp:51 src/exm-upgrade-assistant.blp:150 msgid "No User Extensions Installed" msgstr "Não há extensões de usuário instaladas" #: src/exm-installed-page.blp:55 msgid "Browse" msgstr "Navegar" #: src/exm-installed-page.blp:69 src/exm-upgrade-assistant.blp:160 msgid "System Extensions" msgstr "Extensões do sistema" #: src/exm-installed-page.blp:86 src/exm-upgrade-assistant.blp:177 msgid "No System Extensions Installed" msgstr "Não há extensões do sistema instaladas" #. Translators: Text announced by screen readers when interacting with the list of search results #: src/exm-installed-page.blp:111 msgid "Search Results" msgstr "Resultados de pesquisa" #: src/exm-installed-page.blp:124 msgid "Try a different search or search online" msgstr "Tente uma pesquisa diferente ou pesquise online" #: src/exm-installed-page.blp:131 msgid "_Search Online" msgstr "_Pesquise Online" #. Translators: '%d' = number of extensions that will be updated #: src/exm-installed-page.c:298 #, c-format msgid "%d extension will be updated on next login" msgid_plural "%d extensions will be updated on next login" msgstr[0] "%d extensão será atualizada no próximo login" msgstr[1] "%d extensões serão atualizadas no próximo login" #: src/exm-rating.c:142 #, c-format msgid "%i Star" msgid_plural "%i Stars" msgstr[0] "%i Estrela" msgstr[1] "%i Estrelas" #. Translators: Button's tooltip to zoom out screenshots #: src/exm-screenshot-view.blp:37 msgid "Zoom Out" msgstr "Menos Zoom" #. Translators: Button's tooltip to zoom in screenshots #: src/exm-screenshot-view.blp:51 msgid "Zoom In" msgstr "Mais Zoom" #: src/exm-upgrade-assistant.blp:11 msgid "Upgrade Assistant" msgstr "Assistente de Atualização" #: src/exm-upgrade-assistant.blp:66 msgid "_Check Compatibility" msgstr "_Verificar Compatibilidade" #: src/exm-upgrade-assistant.blp:189 msgid "_Copy to Clipboard" msgstr "_Copiar para a Área de Transferência" #: src/exm-upgrade-assistant.c:188 #, c-format msgid "Checked %d/%d Extensions" msgstr "Extensões Verificadas %d/%d" #. Set percentage text #: src/exm-upgrade-assistant.c:207 #, c-format msgid "%d%% Compatible" msgstr "%d%% Compatível" #: src/exm-upgrade-assistant.c:223 #, c-format msgid "" "GNOME %s supports %d out of %d of the extensions currently " "installed on the system" msgstr "" "GNOME %s suporta %d de %d das extensões atualmente instaladas " "no sistema" #. Translators: Icon's tooltip when an extension is compatible #: src/exm-upgrade-assistant.c:503 msgid "A compatible version of the extension exists" msgstr "Há uma versão compatível da extensão" #. Translators: Icon's tooltip when an extension is not compatible #: src/exm-upgrade-assistant.c:510 msgid "No compatible version of the extension exists" msgstr "Não há versão compatível da extensão" #. Translators: Icon's tooltip when an extension compatibility is unknown #: src/exm-upgrade-assistant.c:517 msgid "" "This extension is not hosted on extensions.gnome.org. Its compatibility " "cannot be determined." msgstr "" "Esta extensão não está hospedada em extensions.gnome.org. Sua " "compatibilidade não pode ser confirmada." #: src/exm-upgrade-assistant.c:608 #, c-format msgid "" "You are currently running GNOME %s. Select a version of GNOME below " "and check whether your extensions will continue to be available." msgstr "" "Você está atualmente usando o GNOME %s. Selecione uma versão do GNOME " "abaixo e verifique se suas extensões continuarão disponíveis." #. Translators: Tooltip of the search icon in the header bar #: src/exm-window.blp:39 msgid "Search Installed Extensions" msgstr "Pesquise extensões instaladas" #: src/exm-window.blp:48 msgid "Main Menu" msgstr "Menu Principal" #: src/exm-window.blp:59 msgid "Search for installed extensions" msgstr "Pesquise por extensões instaladas" #: src/exm-window.blp:71 msgctxt "Navigation" msgid "_Installed" msgstr "_Instalada" #: src/exm-window.blp:80 msgctxt "Navigation" msgid "_Browse" msgstr "_Navegar" #. Translators: the character preceded by "_" should not be the same #. as others in the same menu #: src/exm-window.blp:108 msgid "Sort _Enabled First" msgstr "Classificar_Primeiro Ativado" #: src/exm-window.blp:109 msgid "_Show Unsupported" msgstr "Mostrar Não Suportadas" #: src/exm-window.blp:113 msgid "_Upgrade Assistant" msgstr "_Assistente de Atualização" #: src/exm-window.blp:114 msgid "_Keyboard Shortcuts" msgstr "_Atalhos de Teclado" #: src/exm-window.blp:115 msgid "_About Extension Manager" msgstr "Sobre o Gerenciador de Extensões" #: src/exm-window.blp:120 msgid "Uninstall Extension?" msgstr "Desinstalar Extensão?" #: src/exm-window.blp:121 msgid "" "The extension's features and functionality will no longer be accessible. Are " "you sure you want to uninstall?" msgstr "" "Os recursos e funcionalidades da extensão não estão mais acessíveis. Tem " "certeza de que deseja desinstalar?" #: src/exm-window.blp:126 msgid "_No" msgstr "_Não" #: src/exm-window.blp:127 msgid "_Yes" msgstr "_Sim" #: src/exm-window.blp:132 msgid "Unsupported Extension" msgstr "Extensão Não Suportada" #: src/exm-window.blp:133 msgid "" "This extension does not support your GNOME Shell version. It may cause " "errors if installed." msgstr "" "Esta extensão não oferece suporte à sua versão do GNOME Shell. Pode causar " "erros se instalada." #: src/exm-window.blp:139 msgid "_Install Anyway" msgstr "_Instalar Mesmo Assim" #: src/exm-window.blp:140 msgid "_Go Back" msgstr "_Voltar" #: src/exm-window.c:348 msgid "_Details" msgstr "_Detalhes" #: src/web/exm-request-handler.c:99 msgid "" "Check GNOME infrastructure status " "and try again later" msgstr "" "Cheque status da infraestrutura do GNOME " "e tente novamente mais tarde" #: src/web/exm-request-handler.c:100 msgid "Check your network status and try again" msgstr "Cheque o status da intenet e tente novamente" #~ msgid "Comments" #~ msgstr "Comentários" #~ msgid "Loading Comments" #~ msgstr "Carregando Comentários" #~ msgid "User Reviews" #~ msgstr "Avaliações do usuário" #~ msgid "No comments yet" #~ msgstr "Ainda não há comentários" #~ msgid "" #~ "This extension could be activated in session modes such as the login " #~ "screen or the lock screen" #~ msgstr "" #~ "Esta extensão pode ser ativada em modos de sessão, como tela de login ou " #~ "tela de bloqueio" #~ msgid "Updates Available" #~ msgstr "Atualizações Disponíveis" #~ msgid "Supported" #~ msgstr "Suportada" #~ msgid "Unknown" #~ msgstr "Desconhecido" #~ msgid "A utility for managing GNOME Shell Extensions" #~ msgstr "Uma ferramenta para gerenciar Extensões do GNOME Shell" #, c-format #~ msgid "e.g. “%s”" #~ msgstr "por exemplo “%s”" #~ msgid "This extension is incompatible with your current version of GNOME." #~ msgstr "Esta extensão é incompatível com a sua versão atual do GNOME." #~ msgid "An error occurred." #~ msgstr "Ocorreu um erro." #~ msgid "Return to view" #~ msgstr "Retornar à visualização" #~ msgid "@app_title@" #~ msgstr "@app_title@" #~ msgid "HOTFIX: Fix broken 'recent' and 'popularity' search filters" #~ msgstr "" #~ "HOTFIX: Corrige filtros de pesquisa 'recentes' e 'populares' quebrados" #~ msgid "Various stability and correctness fixes" #~ msgstr "Várias correções de estabilidade e precisão" #~ msgid "Translation updates" #~ msgstr "Atualizações de tradução" #~ msgid "Upgrade Assistant scroll fix" #~ msgstr "Correção de rolagem do Assistente de Atualização" #~ msgid "Pixel perfect app icon" #~ msgstr "Ícone do aplicativo perfeito em pixels" #~ msgid "Official snap support" #~ msgstr "Suporte oficial para snap" #~ msgid "Improved error log generation" #~ msgstr "Geração aprimorada de logs de erro" #~ msgid "Fully adaptive mobile-friendly user interface" #~ msgstr "" #~ "Interface do usuário totalmente adaptável e compatível com dispositivos " #~ "móveis" #~ msgid "Paginated search results" #~ msgstr "Resultados de pesquisa paginados" #~ msgid "Upgrade Assistant for checking extension compatibility" #~ msgstr "" #~ "Assistente de Atualização para verificar a compatibilidade da extensão" #~ msgid "Unsupported extensions are hidden by default" #~ msgstr "Extensões não suportadas são ocultas por padrão" #~ msgid "Overhauled error and crash reporting" #~ msgstr "Relatório de erros e falhas reformulado" #~ msgid "Full-screen image viewer" #~ msgstr "Visualizador de imagem em tela cheia" #~ msgid "Handles new gnome-extensions:// URI scheme" #~ msgstr "Lida com o novo esquema de URI gnome-extensions://" #~ msgid "Randomised extension suggestions" #~ msgstr "Sugestões de extensão aleatórias" #~ msgid "Performance and stability" #~ msgstr "Desempenho e estabilidade" #~ msgid "Various bug fixes" #~ msgstr "Várias correções de bugs" #~ msgid "Remove release notes dialog" #~ msgstr "Remove o diálogo de notas de versão" #~ msgid "Fix special characters in installed extension listings" #~ msgstr "Corrige caracteres especiais nas listagens de extensões instaladas" #~ msgid "The second feature update to extension-manager. Highlights include:" #~ msgstr "" #~ "A segunda atualização de recursos para o gerenciador de extensões. " #~ "Destaques incluem:" #~ msgid "View comments and reviews" #~ msgstr "Ver comentários e avaliações" #~ msgid "Support for in-app updates" #~ msgstr "Suporte para atualizações no próprio aplicativo" #~ msgid "Better handling errors and out-of-date extensions" #~ msgstr "Melhor tratamento de erros e de extensões desatualizadas" #~ msgid "Allow installing 'unsupported' extensions" #~ msgstr "Permite a instalação de extensões 'não suportadas'" #~ msgid "Display release notes on first run" #~ msgstr "Exibe notas de versão na primeira execução" #~ msgid "New app icon" #~ msgstr "Novo ícone do aplicativo" #~ msgid "Optionally sort extensions by enabled status" #~ msgstr "Classifica as extensões opcionalmente por status ativado" #~ msgid "Fix special characters in search results" #~ msgstr "Corrige caracteres especiais nos resultados da pesquisa" #~ msgid "Fixes a crash that sometimes occurs while uninstalling an extension" #~ msgstr "" #~ "Corrige uma falha que às vezes ocorre durante a desinstalação de uma " #~ "extensão" #~ msgid "The first feature update to extension-manager. Highlights include:" #~ msgstr "" #~ "A primeira atualização de recursos para o gerenciador de extensões. Em " #~ "destaque:" #~ msgid "Dark theme and support for overriding the system colour scheme" #~ msgstr "Tema escuro e suporte para substituir o esquema de cores do sistema" #~ msgid "Shows screenshots in extension listings" #~ msgstr "Mostra capturas de tela nas listagens de extensões" #~ msgid "Shell version compatibility check" #~ msgstr "Verificação de compatibilidade da versão do Shell" #~ msgid "Localised into seven languages" #~ msgstr "Localizado em sete idiomas" #~ msgid "Global extension on/off toggle" #~ msgstr "Alternância global para ativar/desativar extensões" #~ msgid "Displays user and system extensions separately" #~ msgstr "Exibe extensões de usuário e do sistema separadamente" #~ msgid "Extension Manager (Development)" #~ msgstr "Gerenciador de Extensões (Desenvolvimento)" extension-manager-0.6.3/po/ru_RU.po000066400000000000000000000705521477302130300171670ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the extension-manager package. # Aleksandr Melman , 2024, 2025. msgid "" msgstr "" "Project-Id-Version: extension-manager\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-03-06 16:36+0000\n" "PO-Revision-Date: 2025-02-24 10:03+0000\n" "Last-Translator: Aleksandr Melman \n" "Language-Team: Russian \n" "Language: ru_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" "X-Generator: Weblate 5.10.1-dev\n" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:2 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:6 #: src/exm-window.blp:7 msgid "Extension Manager" msgstr "Менеджер расширений" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:11 msgid "Manage GNOME Shell Extensions" msgstr "Управление расширениями GNOME Shell" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #. Make sure to leave the original strings and add your translations afterwards, so that users can search both in English and your language. #: data/com.mattjakeman.ExtensionManager.desktop.in.in:14 msgid "extension;manager;shell;" msgstr "extension;manager;shell;менеджер;расширение;" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:7 msgid "Browse, install, and manage GNOME Shell Extensions" msgstr "Просмотр, установка и управление расширениями GNOME Shell" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:13 msgid "A utility for browsing and installing GNOME Shell Extensions." msgstr "Утилита для просмотра и установки расширений GNOME Shell." #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:14 msgid "Features:" msgstr "Функции:" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:16 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:26 msgid "Browse extensions.gnome.org right inside the app" msgstr "Просмотр сайта extensions.gnome.org прямо в приложении" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:17 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:22 msgid "Manage the extensions you already have installed" msgstr "Управление уже установленными расширениями" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:30 msgid "See all the details of your extensions" msgstr "Просмотр всех подробностей ваших расширений" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:34 msgid "Check your extensions compatibility with the next version of GNOME" msgstr "Проверка совместимости ваших расширений со следующей версией GNOME" #: src/exm-application.c:201 msgid "Browse, install, and manage GNOME Shell Extensions." msgstr "Просмотр, установка и управление расширениями GNOME Shell." #. Translators: Use 'Name email@domain.com' or 'Name https://website.example' (without single quotes). Do not delete existing names, write yours on a new line. #: src/exm-application.c:204 msgid "translator-credits" msgstr "" "Danik2343 \n" "Aleksandr Melman" #: src/exm-browse-page.blp:16 msgid "Search for Extensions" msgstr "Поиск расширений" #: src/exm-browse-page.blp:17 msgid "" "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell Extensions" msgstr "" "Введите ключевое слово для поиска расширений GNOME Shell из 'extensions." "gnome.org'" #: src/exm-browse-page.blp:47 msgid "Relevance" msgstr "Релевантность" #: src/exm-browse-page.blp:48 msgctxt "Sort search results" msgid "Downloads" msgstr "Число загрузок" #: src/exm-browse-page.blp:49 msgid "Recent" msgstr "Недавние" #: src/exm-browse-page.blp:50 src/exm-detail-view.blp:113 msgid "Name" msgstr "Название" #: src/exm-browse-page.blp:57 msgid "Sort search results" msgstr "Сортировать результаты поиска" #: src/exm-browse-page.blp:103 msgid "_Load More Results" msgstr "_Загрузить больше результатов" #: src/exm-browse-page.blp:137 src/exm-installed-page.blp:123 msgid "No Results Found" msgstr "Результаты не найдены" #: src/exm-browse-page.blp:144 msgid "Try a different search" msgstr "Попробуйте другой поисковый запрос" #: src/exm-browse-page.blp:178 src/exm-comment-dialog.blp:34 #: src/exm-detail-view.blp:49 src/exm-detail-view.blp:291 #: src/exm-upgrade-assistant.blp:100 msgid "Connection Error" msgstr "Ошибка соединения" #: src/exm-comment-dialog.blp:13 src/exm-detail-view.blp:248 msgid "Reviews and Comments" msgstr "Отзывы и комментарии" #: src/exm-comment-dialog.blp:25 msgid "Loading" msgstr "Загрузка" #: src/exm-comment-tile.blp:30 src/exm-detail-view.blp:127 msgid "Author" msgstr "Автор" #: src/exm-detail-view.blp:40 msgid "Loading Details" msgstr "Загрузка подробностей" #: src/exm-detail-view.blp:59 src/exm-window.c:347 msgid "An Error Occurred" msgstr "Произошла ошибка" #: src/exm-detail-view.blp:60 msgid "No extension details available" msgstr "Информация о расширении отсутствует" #: src/exm-detail-view.blp:154 msgid "Enlarge Image" msgstr "Увеличить изображение" #: src/exm-detail-view.blp:172 src/exm-extension-row.blp:89 msgid "Description" msgstr "Описание" #: src/exm-detail-view.blp:195 msgid "Links" msgstr "Ссылки" #: src/exm-detail-view.blp:203 msgid "Homepage" msgstr "Домашняя страница" #: src/exm-detail-view.blp:219 msgid "Donate" msgstr "Пожертвовать" #: src/exm-detail-view.blp:228 msgid "View on Extensions" msgstr "Посмотреть в Расширениях" #: src/exm-detail-view.blp:271 msgid "Reviews and comments are disabled for this extension" msgstr "Отзывы и комментарии отключены для этого расширения" #: src/exm-detail-view.blp:314 msgid "There are no reviews or comments" msgstr "Отзывов или комментариев нет" #: src/exm-detail-view.blp:343 msgid "_Show All" msgstr "_Показать все" #. Translators: '%s' = extension name #: src/exm-detail-view.c:445 #, c-format msgid "%s Icon" msgstr "Значок '%s'" #. Translators: '%s' = extension name #: src/exm-detail-view.c:478 #, c-format msgid "%s Screenshot" msgstr "Cкриншот '%s'" #: src/exm-error-dialog.blp:7 msgid "Error Report" msgstr "Отчет об ошибке" #: src/exm-error-dialog.blp:22 msgid "An unexpected error occurred in Extension Manager" msgstr "В менеджере расширений произошла непредвиденная ошибка" #: src/exm-error-dialog.blp:36 msgid "Copy to Clipboard" msgstr "Копировать в буфер обмена" #: src/exm-error-dialog.blp:77 msgid "_New Issue" msgstr "_Новая проблема" #. Success indicator #: src/exm-error-dialog.c:125 src/exm-upgrade-assistant.c:347 msgid "Copied" msgstr "Скопировано" #: src/exm-error-dialog.c:173 msgid "Please open a new issue and attach the following information:" msgstr "Пожалуйста, откройте новую проблему и приложите следующую информацию:" #. Translators: '%s' = Name of Distributor (e.g. "Packager123") #: src/exm-error-dialog.c:177 #, c-format msgid "" "You are using a third-party build of Extension Manager. Please contact the package distributor (%s) first before " "filing an issue. Be sure to attach the following information:" msgstr "" "Вы используете стороннюю сборку Extension Manager. Прежде чем обращаться с проблемой, обратитесь к " "распространителю пакета (%s). Обязательно приложите следующую " "информацию:" #. Translators: Button's tooltip to open extension's preferences dialog #: src/exm-extension-row.blp:28 msgid "Open extension preferences" msgstr "Открыть параметры расширения" #. Translators: Icon's tooltip when an extension has an error #: src/exm-extension-row.blp:46 msgid "An error occurred while loading this extension" msgstr "Произошла ошибка, при загрузке этого расширения" #. Translators: Icon's tooltip when an extension is incompatible #: src/exm-extension-row.blp:63 src/exm-install-button.c:117 msgid "This extension is incompatible with your current version of GNOME" msgstr "Это расширение несовместимо с вашей текущей версией GNOME" #. Translators: Icon's tooltip when an extension update is available #: src/exm-extension-row.blp:80 msgid "A newer version of this extension is available" msgstr "Доступная новая версия этого расширения" #: src/exm-extension-row.blp:98 src/exm-info-bar.blp:50 msgid "Version" msgstr "Версия" #: src/exm-extension-row.blp:107 msgid "Session Modes" msgstr "Режимы сеанса" #: src/exm-extension-row.blp:137 msgid "Error" msgstr "Ошибка" #: src/exm-extension-row.blp:158 msgid "See Details" msgstr "Посмотреть подробности" #: src/exm-extension-row.blp:169 msgid "Remove…" msgstr "Удалить…" #: src/exm-extension-row.c:175 msgid "Unlock Dialog" msgstr "Окно разблокировки" #. Translators: GNOME Display Manager #: src/exm-extension-row.c:181 msgid "GDM" msgstr "GDM" #. Translators: Label when an extension runs on both, login and lock screens #: src/exm-extension-row.c:189 msgid "" "This extension will run while the screen is locked and no user is logged in" msgstr "" "Это расширение будет работать, пока экран заблокирован и ни один " "пользователь не вошел в систему" #. Translators: Label when an extension runs on the lock screen #: src/exm-extension-row.c:194 msgid "This extension will run while the screen is locked" msgstr "Это расширение будет работать, пока экран заблокирован" #. Translators: Label when an extension runs on the login screen #: src/exm-extension-row.c:199 msgid "This extension will run while no user is logged in" msgstr "" "Это расширение будет работать, пока ни один пользователь не вошел в систему" #: src/exm-help-overlay.blp:11 msgctxt "shortcut window" msgid "General" msgstr "Общие" #: src/exm-help-overlay.blp:14 msgctxt "shortcut window" msgid "Show Installed Page" msgstr "Показать «Установленные»" #: src/exm-help-overlay.blp:19 msgctxt "shortcut window" msgid "Show Browse Page" msgstr "Показать «Обзор»" #: src/exm-help-overlay.blp:24 msgctxt "shortcut window" msgid "Toggle Search" msgstr "Переключить поиск" #: src/exm-help-overlay.blp:29 msgctxt "shortcut window" msgid "Show Keyboard Shortcuts" msgstr "Показать комбинации клавиш" #: src/exm-help-overlay.blp:34 msgctxt "shortcut window" msgid "Close Window" msgstr "Закрыть окно" #: src/exm-help-overlay.blp:39 msgctxt "shortcut window" msgid "Quit" msgstr "Выход" #: src/exm-help-overlay.blp:45 msgctxt "shortcut window" msgid "Screenshot View" msgstr "Просмотр скриншотов" #: src/exm-help-overlay.blp:48 src/exm-help-overlay.blp:63 msgctxt "shortcut window" msgid "Zoom In" msgstr "Увеличить" #: src/exm-help-overlay.blp:53 src/exm-help-overlay.blp:68 msgctxt "shortcut window" msgid "Zoom Out" msgstr "Уменьшить" #: src/exm-help-overlay.blp:58 msgctxt "shortcut window" msgid "Reset Zoom" msgstr "Сбросить масштаб" #: src/exm-info-bar.blp:28 msgctxt "Number of downloads" msgid "Downloads" msgstr "Загрузки" #: src/exm-info-bar.c:107 msgid "Unsupported" msgstr "Не поддерживается" #: src/exm-install-button.c:127 msgid "Install…" msgstr "Установить…" #: src/exm-install-button.c:132 msgid "Installing" msgstr "Установка" #: src/exm-install-button.c:136 msgctxt "State" msgid "Installed" msgstr "Установлено" #: src/exm-install-button.c:140 msgid "Unsupported…" msgstr "Не поддерживается…" #: src/exm-installed-page.blp:16 msgid "_Log Out…" msgstr "_Выйти…" #: src/exm-installed-page.blp:28 msgid "Use Extensions" msgstr "Использовать расширения" #: src/exm-installed-page.blp:29 msgid "Extensions can cause performance and stability issues" msgstr "" "Расширения могут вызывать проблемы с производительностью и стабильностью" #: src/exm-installed-page.blp:34 src/exm-upgrade-assistant.blp:133 msgid "User-Installed Extensions" msgstr "Расширения, установленные пользователем" #: src/exm-installed-page.blp:51 src/exm-upgrade-assistant.blp:150 msgid "No User Extensions Installed" msgstr "Пользовательские расширения не установлены" #: src/exm-installed-page.blp:55 msgid "Browse" msgstr "Обзор" #: src/exm-installed-page.blp:69 src/exm-upgrade-assistant.blp:160 msgid "System Extensions" msgstr "Системные расширения" #: src/exm-installed-page.blp:86 src/exm-upgrade-assistant.blp:177 msgid "No System Extensions Installed" msgstr "Системные расширения не установлены" #. Translators: Text announced by screen readers when interacting with the list of search results #: src/exm-installed-page.blp:111 msgid "Search Results" msgstr "Результаты поиска" #: src/exm-installed-page.blp:124 msgid "Try a different search or search online" msgstr "Попробуйте другой поисковый запрос или поищите в Интернете" #: src/exm-installed-page.blp:131 msgid "_Search Online" msgstr "_Поиск в Интернете" #. Translators: '%d' = number of extensions that will be updated #: src/exm-installed-page.c:298 #, c-format msgid "%d extension will be updated on next login" msgid_plural "%d extensions will be updated on next login" msgstr[0] "%d расширение будет обновлено при следующем входе в систему" msgstr[1] "%d расширения будут обновлены при следующем входе в систему" msgstr[2] "%d расширений будут обновлены при следующем входе в систему" #: src/exm-rating.c:142 #, c-format msgid "%i Star" msgid_plural "%i Stars" msgstr[0] "%i звезда" msgstr[1] "%i звезды" msgstr[2] "%i звезд" #. Translators: Button's tooltip to zoom out screenshots #: src/exm-screenshot-view.blp:37 msgid "Zoom Out" msgstr "Уменьшить" #. Translators: Button's tooltip to zoom in screenshots #: src/exm-screenshot-view.blp:51 msgid "Zoom In" msgstr "Увеличить" #: src/exm-upgrade-assistant.blp:11 msgid "Upgrade Assistant" msgstr "Помощник по обновлению" #: src/exm-upgrade-assistant.blp:66 msgid "_Check Compatibility" msgstr "_Проверка совместимости" #: src/exm-upgrade-assistant.blp:189 msgid "_Copy to Clipboard" msgstr "_Копировать в буфер обмена" #: src/exm-upgrade-assistant.c:188 #, c-format msgid "Checked %d/%d Extensions" msgstr "Проверено %d/%d расширений" #. Set percentage text #: src/exm-upgrade-assistant.c:207 #, c-format msgid "%d%% Compatible" msgstr "Совместимость %d%%" #: src/exm-upgrade-assistant.c:223 #, c-format msgid "" "GNOME %s supports %d out of %d of the extensions currently " "installed on the system" msgstr "" "GNOME %s поддерживает %d из %d расширений, установленных в " "настоящее время в системе" #. Translators: Icon's tooltip when an extension is compatible #: src/exm-upgrade-assistant.c:503 msgid "A compatible version of the extension exists" msgstr "Существует совместимая версия расширения" #. Translators: Icon's tooltip when an extension is not compatible #: src/exm-upgrade-assistant.c:510 msgid "No compatible version of the extension exists" msgstr "Совместимой версии расширения не существует" #. Translators: Icon's tooltip when an extension compatibility is unknown #: src/exm-upgrade-assistant.c:517 msgid "" "This extension is not hosted on extensions.gnome.org. Its compatibility " "cannot be determined." msgstr "" "Это расширение не размещено на сайте extensions.gnome.org. Его совместимость " "не может быть определена." #: src/exm-upgrade-assistant.c:608 #, c-format msgid "" "You are currently running GNOME %s. Select a version of GNOME below " "and check whether your extensions will continue to be available." msgstr "" "В настоящее время вы используете GNOME %s. Выберите версию GNOME ниже " "и проверьте, будут ли ваши расширения по-прежнему доступны." #. Translators: Tooltip of the search icon in the header bar #: src/exm-window.blp:39 msgid "Search Installed Extensions" msgstr "Поиск установленных расширений" #: src/exm-window.blp:48 msgid "Main Menu" msgstr "Главное меню" #: src/exm-window.blp:59 msgid "Search for installed extensions" msgstr "Поиск по установленным расширениям" #: src/exm-window.blp:71 msgctxt "Navigation" msgid "_Installed" msgstr "У_становленные" #: src/exm-window.blp:80 msgctxt "Navigation" msgid "_Browse" msgstr "_Обзор" #. Translators: the character preceded by "_" should not be the same #. as others in the same menu #: src/exm-window.blp:108 msgid "Sort _Enabled First" msgstr "Сортировать _включенные первыми" #: src/exm-window.blp:109 msgid "_Show Unsupported" msgstr "_Показать неподдерживаемые" #: src/exm-window.blp:113 msgid "_Upgrade Assistant" msgstr "Помощник по _обновлению" #: src/exm-window.blp:114 msgid "_Keyboard Shortcuts" msgstr "_Комбинации клавиш" #: src/exm-window.blp:115 msgid "_About Extension Manager" msgstr "О пр_иложении" #: src/exm-window.blp:120 msgid "Uninstall Extension?" msgstr "Удалить расширение?" #: src/exm-window.blp:121 msgid "" "The extension's features and functionality will no longer be accessible. Are " "you sure you want to uninstall?" msgstr "" "Функции и возможности расширения больше не будут доступны. Вы уверены, что " "хотите удалить расширение?" #: src/exm-window.blp:126 msgid "_No" msgstr "_Нет" #: src/exm-window.blp:127 msgid "_Yes" msgstr "_Да" #: src/exm-window.blp:132 msgid "Unsupported Extension" msgstr "Неподдерживаемое расширение" #: src/exm-window.blp:133 msgid "" "This extension does not support your GNOME Shell version. It may cause " "errors if installed." msgstr "" "Это расширение не поддерживает вашу версию GNOME Shell. Его установка может " "привести к ошибкам." #: src/exm-window.blp:139 msgid "_Install Anyway" msgstr "_Установить все равно" #: src/exm-window.blp:140 msgid "_Go Back" msgstr "Н_азад" #: src/exm-window.c:348 msgid "_Details" msgstr "_Подробности" #: src/web/exm-request-handler.c:99 msgid "" "Check GNOME infrastructure status " "and try again later" msgstr "" "Проверьте состояние инфраструктуры " "GNOME и повторите попытку позже" #: src/web/exm-request-handler.c:100 msgid "Check your network status and try again" msgstr "Проверьте состояние сети и повторите попытку" #~ msgid "Comments" #~ msgstr "Комментарии" #~ msgid "Loading Comments" #~ msgstr "Загрузка комментариев" #~ msgid "User Reviews" #~ msgstr "Отзывы пользователей" #~ msgid "No comments yet" #~ msgstr "Комментариев пока нет" #~ msgid "" #~ "This extension could be activated in session modes such as the login " #~ "screen or the lock screen" #~ msgstr "" #~ "Это расширение может быть активировано в режимах сеанса, таких как экран " #~ "входа в систему или экран блокировки" #, c-format #~ msgid "%s by %s" #~ msgstr "%s от %s" #~ msgid "Updates Available" #~ msgstr "Доступны обновления" #~ msgid "Supported" #~ msgstr "Поддерживается" #~ msgid "Unknown" #~ msgstr "Неизвестно" #~ msgid "A utility for managing GNOME Shell Extensions" #~ msgstr "Утилита для управления расширениями GNOME Shell" #, c-format #~ msgid "e.g. “%s”" #~ msgstr "например, “%s”" #~ msgid "This extension is incompatible with your current version of GNOME." #~ msgstr "Это расширение несовместимо с вашей текущей версией GNOME." #~ msgid "An error occurred." #~ msgstr "Произошла ошибка." #~ msgid "Return to view" #~ msgstr "Вернуться к просмотру" #~ msgid "@app_title@" #~ msgstr "@app_title@" #~ msgid "HOTFIX: Fix broken 'recent' and 'popularity' search filters" #~ msgstr "" #~ "HOTFIX: Исправлены неработающие фильтры поиска 'недавние' и 'популярность'" #~ msgid "Various stability and correctness fixes" #~ msgstr "Различные исправления стабильности и корректности" #~ msgid "Translation updates" #~ msgstr "Обновления перевода" #~ msgid "Upgrade Assistant scroll fix" #~ msgstr "Исправление прокрутки помощника по обновлению" #~ msgid "Pixel perfect app icon" #~ msgstr "Идеальная пиксельная иконка приложения" #~ msgid "Official snap support" #~ msgstr "Официальная поддержка snap" #~ msgid "Improved error log generation" #~ msgstr "Улучшено формирование журнала ошибок" #~ msgid "Fully adaptive mobile-friendly user interface" #~ msgstr "" #~ "Полностью адаптивный пользовательский интерфейс, удобный для мобильных " #~ "устройств" #~ msgid "Paginated search results" #~ msgstr "Результаты поиска с разбивкой на страницы" #~ msgid "Upgrade Assistant for checking extension compatibility" #~ msgstr "Помощник по обновлению для проверки совместимости расширений" #~ msgid "Unsupported extensions are hidden by default" #~ msgstr "Неподдерживаемые расширения скрываются по умолчанию" #~ msgid "Overhauled error and crash reporting" #~ msgstr "Переработанная отчетность об ошибках и сбоях" #~ msgid "Full-screen image viewer" #~ msgstr "Полноэкранный просмотрщик изображений" #~ msgid "Handles new gnome-extensions:// URI scheme" #~ msgstr "Обработка новой схемы gnome-extensions:// URI" #~ msgid "Randomised extension suggestions" #~ msgstr "Случайные предложения по расширениям" #~ msgid "Performance and stability" #~ msgstr "Производительность и стабильность" #~ msgid "Various bug fixes" #~ msgstr "Некоторые исправления ошибок" #~ msgid "Remove release notes dialog" #~ msgstr "Удаление диалогового окна примечаний к выпуску" #~ msgid "Fix special characters in installed extension listings" #~ msgstr "Исправление специальных символов в списках установленных расширений" #~ msgid "The second feature update to extension-manager. Highlights include:" #~ msgstr "" #~ "Второе функциональное обновление extension-manager. Основные моменты " #~ "включают:" #~ msgid "View comments and reviews" #~ msgstr "Просмотр комментариев и отзывов" #~ msgid "Support for in-app updates" #~ msgstr "Поддержка обновлений в приложении" #~ msgid "Better handling errors and out-of-date extensions" #~ msgstr "Улучшенная обработка ошибок и устаревших расширений" #~ msgid "Allow installing 'unsupported' extensions" #~ msgstr "Разрешить установку \"неподдерживаемых\" расширений" #~ msgid "Display release notes on first run" #~ msgstr "Отображение примечаний к выпуску при первом запуске" #~ msgid "New app icon" #~ msgstr "Новая иконка приложения" #~ msgid "Optionally sort extensions by enabled status" #~ msgstr "Опциональная сортировка расширений по статусу включения" #~ msgid "Fix special characters in search results" #~ msgstr "Исправление специальных символов в результатах поиска" #~ msgid "Fixes a crash that sometimes occurs while uninstalling an extension" #~ msgstr "Устранение сбоя, который иногда возникает при удалении расширения" #~ msgid "The first feature update to extension-manager. Highlights include:" #~ msgstr "" #~ "Первое функциональное обновление extension-manager. Основные моменты " #~ "включают:" #~ msgid "Dark theme and support for overriding the system colour scheme" #~ msgstr "Темная тема и поддержка переопределения системной цветовой схемы" #~ msgid "Shows screenshots in extension listings" #~ msgstr "Показывает скриншоты в списках расширений" #~ msgid "Shell version compatibility check" #~ msgstr "Проверка совместимости версии оболочки" #~ msgid "Localised into seven languages" #~ msgstr "Локализована на семи языках" #~ msgid "Global extension on/off toggle" #~ msgstr "Переключатель включения/выключения всех расширений" #~ msgid "Displays user and system extensions separately" #~ msgstr "Отображение пользовательских и системных расширений по отдельности" #~ msgid "Extension Manager (Development)" #~ msgstr "Менеджер расширений (Разрабатываемая версия)" #~ msgid "Popularity" #~ msgstr "Популярность" #~ msgid "Supported Versions" #~ msgstr "Поддерживаемые версии" #~ msgctxt "Navigation" #~ msgid "Browse" #~ msgstr "Обзор" #~ msgid "Are you sure you want to uninstall?" #~ msgstr "Вы уверены, что хотите удалить?" #~ msgid "Theme" #~ msgstr "Тема" #~ msgid "Follow System" #~ msgstr "Следовать системе" #~ msgid "Light" #~ msgstr "Светлая" #~ msgid "Dark" #~ msgstr "Темная" #~ msgid "extension;manager;" #~ msgstr "extension;manager;менеджер;расширение;" extension-manager-0.6.3/po/screenshots/000077500000000000000000000000001477302130300201225ustar00rootroot00000000000000extension-manager-0.6.3/po/screenshots/_1.png000066400000000000000000002063671477302130300211450ustar00rootroot00000000000000PNG  IHDRbKGD IDATxKH#Iwgݙe3eaWa"*>P E (Q/EOAP <$ _>z>ZۉIIGu?_U;N8q =;X.w{O,Qj"]7gП,Ԏ?#'<<\MЎ>KB0^+~ҫ@*w䙱ԭ /Aš"##M*"K*`}}]vqvv&*++s7"01 x,yFXXx(3 U{Ftt4zv #(`> GS[ܾǼP-oww7`@RZ[>LyMLL`4d2&''Ԕhoo|ttTttt`yhhHˍF*ty60` Cb~Նawr\Ħ+ nO_UUy$ڢ -Zڴ(m28h` T i4ѥ')0`ބqpp;;; 񌒒uq~~.ZZZpVs/qђS0nooEYYvp#$899[P?tz+**0WlD^/w(>?4~ciiI5%e6} Uɣےe5 ÄxIg2t$0*sG %q5] ." Ο8mJ_ρe}]}I];u1!O~38b6v]ڄ[.ձ:hDzm6E\3pb,e F ܑa&zG`YMwG/J%"ϫQ?"hj*;gjv T.s'HHvZD d[s ñt ֯9kJ(6V3"D D`i^gFiVW謉xJ#2蚘(k*Tdo)a>UaUS`0Zk4  eb\bzF BrCarlߏ׳3 hGAwOq\ &  HVRD ~kۥ QCl:F p*[>!?맧'{ldOswwqtR/NoZU1&  X jJR,L28` fA+QF\.2.=<<% Κ  bS $MAtHmR)M'5v׈Da2Nv<G IC:Z/b p8t_AONNfzW>_>,6Z9'+4 A: $ !BQJ6(R4eق@+5ȉX  2҇$xQ͍1&   diߧ(,n ?K=??GBj50MP B{H>>޷ع_wvv~w<a z ^s)%g,΂bg} k?_ZJ*B @( {o^7f,.??7sPT*%ruݮN!ZR[#EP!h7N G?Te{R$"#fo޾1V1_^^%cVUIRàngjI%p!dߚBEpb l Щz_mQ"DMp_ چ։{|%\WW,5bd"6@n&錰L ;Y #" B|`0 `0  bB +!e)8v": d(Um |0j_@2C.11lX 1;ⳣ)MA 4)ހ)z,0_r+d SuǕ$c>:X(dG|!4gYl(4~uYA`o7翼cV"IG4݂"(**."* 軏> n`CTSLe 8Ȩ̬"Nef>1ܒD`C򤀠h;88G @IQJޑn Nd;YNxU]] ZؐByyyPn>~q]TTcuww;IPrssV(a Fܽ&''u0siJdd$Ҧvl3Pe}p=r\\hjj(U kυs;S4?65r}"MR$IA$AR落X ${Ha-Kl< !@x}D@iUo??*ؖ G>)L Ғ%^?=CFQj'P$TM = kCHWQQuKKcb._Xu`AhҙwSPC/agŠ:*++a%To#9.D.%i)5s)i8Gtt4 $@h@n<[DPr2%c>VMMq,uȝ=11aw/ H ) ޾6P#)Naay4} h#,//[^~~Az{H,ˆR///<ȉE6s9E iRBWS"B{d`L^ lX`>;x9ao!%̸: y ϩE:0]XE'ؖ0N' ) H )H )ӲXm._\\4bS VK#m+NJ8?>a  ND88.g XS R巃O9X>D.WWWY}Mb&iee9nqg I0D;a@A:Aq!)\'%%ŠHi Cēgm>n'Q)?)\p~(yV^^g?~|;@c#$[WWgUVV!IFޖHOCHjzPRR;-9ep4ڧp'݁/ڜ}"H )H )"t>MOOcXب(3٤QחwZؓ>4$ŗ$NTNH IOOO%IšLE,T=xRu< ." l__VϦ>ryM$--aMX~DQTƉ  (Q(|-%OH!! (-% |vɐ>W:xv=syo~}|}- 3L)S` 0XBlˆ+HZ)4;No C%ߢ`~xxd% λ1-n;L1MΕn+եJYa U,N_W'ޞR<}cK SA{wwW'{cc#pQz˼T o {˪'۶rzjB↺@&@!3Iz};|T&àJ32Փg ~}1` LS`:OOO4 ;?/"o gL#B)O0Ptf_+ShlYimHe0i~lٸ?>>j_^@䤗ZlVN{vvv5^gδ̯gSgY뷷݋ }N]]]叅R)LZf\^^jyO{M M5WVxù2J"e՘FՕJ1g(P>Qj23ElALQ7}óƢX^]]m@8kV!Voƒ1g(`BWco?ec 3Či>$SW7G7Ȓ ! g[&7D!3G3z83 i HC3GDBLE L$֗Ī$!B!B!B E@LЇFT"(axh8M4 ( '7Z Pps#Q DFE}0f9(z. j1EYfYx)!%cXBK)ufn{[EvdfQL*f111byi}ZԨ-J-SyLyHT#AP D "/PAA a7ߜpw{o̙3s{>=8YzQT m_M^j_àA`pW\1k/Tꫯ6iPZ褹@ӹzU/df6Dfc@.5m/n/ѡgK͋>%SNi&5 TD{7ge^{mX@O:}4[RzVf^a쿧l̹_C 2Lz}w?7xy:!S#L@P.#߸q{z2].>Cׯ뮻p@\F rH}e}^{-/)S|7"%<[PwD (d ğDDBI GI W0A%IE:^:'Q \W]u׷o_L%X>p z] W ӧ~Jsap,l$9;# Dqq1r6D J.vn:'HO>$r?n\$'N"@9̙m߾]vm뭷z~{^2~_~C=e͛7{gmtzBtN믿> zħLnںuG ,Ry 7xO?n0`r)f͚]{͝^G{9N"z"lunɛ={W__ 2[hZ M1yKK r[˖-s4q)g!D9-^~Pcc#Or //O5(AQE( Hil "@:u*# O<@رcl,?rE֭t̥Bi߾}?H ~W/ /IDà_8o}3S?BLA@7h#31;mt(`]hr'8|8p98S¥   a $ EuCP/(@P(鸟;vetQbҤI^H (In23k.g9ƱL! K ٳ劊 ,0|\Ϝ9ӛ8q 0X/2|ƾسg@*N]@XBx#){K@}stz(OӾ=DGs_sɄ(s\[{{j(Z3g# hm.)2 kQ0A@hLj?׏4z{/nԤ܂ +"///=U xϘ1_F&G)SД!lE"@ (xDQEB?vA cá@l۶6lN.)=wY6űLvZ7ʣz ǫ-[xG[d0wѮYPI%O: *0TVV'@Ɍ@?:^@wu xs^ylKcN^ @ކ بb0~۷@}@"s6${%!7.8s2K;Fy'+M#8l}y r$ B,ZWPXv¡q;_0 YK[H=+~0 544 xap2,X}4Haj̓E/tLV1'NC('Ov& 8\kc~;Ӆ(^tKj\;wܲ;3S\C{Çx4?-?%%q"E E E E E E E r1')t܌ `!tE#n\۱c nl4"J ;t˙d(SݢEhrJ:s{h tiբr9Iq ;el#TL.ݛx /8F1c&,Yd4b.Loą-I7at?}؂3DoX|?9yi*!CPERlAQ]$42-b+AQP@Z4ҳ! )xzIB.A#9{[#SǸ]؈`Ot~J In `b/gQ;K qɴ}vbÆ {gwAy[[e̙3Xooo[LкR؂  86mBmW!)ӭHe?UUUumP4Dqa?0Ww9}i.ۼy3}9rj7⩇رcrdj.;oRк1u,"Do#:tUTTte$)8uC:tv5m0 x՘U[sVv؍R~z8~`<ٮӛpCD_"ŝjǸ~jkV ڱ똭̎3b[{y^,vީ͚9HK%\wb Qx?F!Xr.[,DWZU,>a"~}!"ۧ'<:7*X!23ȩ4 S"7H_Fr-?(NUyX~ȍe ɶ KK:2K{)(/y/r%C]P_GؔR\˭Wwd"#˥" avdk+X.d\;6 `]ʸ\*fJX)I_(љ 'TrӡBZ•-t+ԕ!t1%(ShI(Q+U8 —!Q|)P8\,S"B)5īTǥbPTԀ B!B!B!B!B!BU0D4p4pW:G#PRS6MLQ1nB~7yF1Pht^d{u$ ?,j*; phЗ \F2 8R`wu\dXTj@=m8j[YɃ<c{Gyr}gM$8!KHN-(Y"!oS&"M'+EBT+k PADQ|nvXDz?vwtWY7ϳ&!MY#ŪYi!51%9l'PU(txx@8х*2 D  bG~BvOT3 ̖(ABHDCBHB ^Z UU.//83&֌RF!np"e=-vTp"u]D"mq)`& 7éO_(N+3Vǔ>$&% Q:`T>_ez}}䘩TnooяSh;\3Y,4|>o, cI$IlXĂIbeTc$ `=]r8ڬ?>>R2C .l5T*|lLX NG>f2>Fr31dJiqww7$vƐI$ A;V^^^(P(rA$Nd$K:eY$~7Hhz===vM>8%yh4xi^PŤd$>AHH\r`TU@qXcI- H HHH%aJl6,m"M $N'.@Rr YKp,SFIRػvU *[R 6*^Jo ">`eVᰄx)&&v2fn<@$A${Ib۱|/rHUH^IC8IHoOVUZ<].7 "hdN=HWjRbU$A`ł ].l>' 1Q!(A14N L0$$I(W_R&kQƲ$x#@k|>)$=F=Nl6B<0EٳnDdIye&H6~^A߸@\.Yo@~ eg|T*)YezEf2x=!h4hv z:Xy^ܞf h4i"j!Umtn#"$ME$>˱H$" R f۹N/Ua]22iAD>=X+̷Z-l;n|)~c:)e2IlN|^G WS#p8|sLBjX7LnH/n8GJ'?^A`$t۔e3VUciem'|!6`bgea 66ZXdX#=/Iul⬎}op߃u(Jv ^ۅ$}?縚# >G m/ڡv{t:O ['h< Q{ʱ4N]04M jIA\#0  dS]*[Ju~JQլ'H4˚ :3kPԊ!o}NøMVo,Rx rl#h4Tj]: Rx'uV:0MWkH>lGk֎QS+N[@H @!$@ $B@H @!@! $BH&ʲL\9\'.E-,`0SkZ<V|fPr~X !NQjߎǣ+ːP^=U4]Hh >t:T'IN=Dw$~;$KQl} _3۲e JsiöǾyؗ|VZ~gUr!ߖf? ZQtgm:Mܹ37U CƸ L7b{63<޼^fM(ױ 4ԩTS^} eCH96pYHR!KV Y8rV>D[/21L2%>ض7ߖt[ 4ճ 1$uBY!aH!aH"bH!!"!aH!aH""!!"bHMpu`H%Y$FᬸpJ볿ahƢwoV}zIaÆA#]u.u"52hDC:l"6WnS0$bsd!!R'|8~xu1c0!C '`HiHе7$+$b3 :!tKӄ$$j"lذ;w5j_&452%KBbٲe/Mӯݹ.s\. jts72]hBt,z={"O#DGG#u1k|-LD-DW6+Wb\^x/HǷȐ!ވ:믿 CիWo&BbĉŞ={pZ`Hرc1GGE/^,N<^vD[ԐΎk1EFJ0hX/H 7nT,zqf_p z T7X]v/H VwYݻl\kCߵ!Q?!Q{衇t͐1z?P &իc|;O0J^hQ%ϟ_4Wm~>}i.(GєriZ6 B)NךD CC0$DĐ0$ C ;CD+`Hx&!"♄!!"bH""!!"bHB JÆ 4q3/u ,hZ%tRC-Μ9cpv!IC"5b Z*J|IݻkH !CCUZ=$ڜG_}U_huiN!Ѩkf:EpHp(._0g\BLLgH4gHt1 Ҋ\bBw-':9LC ZNoߎ ؼy39b"M6ly8+Q?wt=WYOBj ޓ! FskI */! v7{섵qSn 7mqj #~iCbaDh$!I7 . rzsc… B1_~' ,ґ79nkio۷o(,$Cq벐|Z/[OZS7wX&O>d^={ ({|s75 }כD x; C[WuGSĐ0$DD CC0$DĐ0$ 1$ CBDĐ0$DD CBDĐ0$DD C$ %K>/]5$h(Bt;!k&M##$*B}4 HJO_m$1/!aHtH;:p@ ;v!?]#ڱ'$*KiOf^ڷOLSg*ݥ=|exuGCh? ;F"P#t:#4$1$f̘Q4tʆDp}5WPiiK--mݶm[xb^>~3Xxe z Xl!0mk֬8PN8Q/NCy={ǍWر#"$Zu)<מIKHp7ߌa 9r$5qB$+m(5: 6܄{@N~)^߼yӠAۻw/ ˗/OS:涱cD1LqalSeΝ;cN^64y`xCbŊ~SO=b&nǣU)NuժU/ •SNY` L3zX7v;t=Lc΀O7uh(_y&ǩ-Zʕ+E= -B9zhCUJ\ (ak>$B2ĶDuVԦm.ij8Kg͚őcXؿ2eJn@⺃v,E CBDĐ0$DD CBDĐ0$DD CC0$DĐ0$ 1$ CBD Ch1$ ,m1ꫯei8_fЍ7bŋH*H>|8Iѣ*Ӯ] Қ~HĐ0$:2$(.\ܹe*>x6w}ˆن<<ާOj޼yٳg}G1$刷W^]e =7Hdآ%!!"bH""!aH!aH"bH!!"bH""!!"bHOHc3g5tQ:r vP|"DGtwKB":{JKO.SF.]!KѣKd"(`= n#! ,`(o6!Q>rAәFyHL8Ѽcǎ-N<_Lvs!C"oO(TiIJ8U8DD5 : ]ut&D?=!\ʽ|2AZ^nDuN6d޽{#ISi&N/͉wBb[kѣ+^3ggƌ`!qF>N.L" ZƵO7UN:uҡ mnٳ! %KD8$-[H#sϦv({X>ִSG[l'GDYȁxgϯa Z9?k73EfӧS5 ntM03fL018Qcb9cMիޫMa s|ŋٷ%W5$-ZTYvM͋QSև/B~4EqFvZ"$`,ES!!FA& CB^rPC(0$D4i3$۷o_eȑ# :;vgΜߤxX<8Zs 5^w 6oL )Q>Z·q#3< 82ΝpR7L6r_j޼y) ˩Ez=Ν+Z؅V"7B"!L:ׯO?U\2mxq$85\'?x TyHBGq&z)ݾ};} ~{y-{aK,|?g:lS:9HiH Nf樳ÇӯG8#k%!aH"bH!!"!aH!aH""!!"bH""!w-Q d5@Y%E6Y 7](E QQߢ i.:mֹTWtު}}sr @=J@ fV )&-tR\(.05 ĉIkAqAaL$$h2"P\$,L\ud2ɞtmvk6J=A->ofCtr2zyy/tc6j\:I@5͢<#~7kGOUs^& MV' WUUju@ؔNl60J>WHBvM `?mۭVdd2Q$,iw$_DHOVGm/IB84Ch#Ǿ@"Kȫz^n#,Y#8@Zv ӊTQpq-[g~`Aұդ 82H(>$Z^Ǥc.`?IYIQ@R)( Uv`0m<Á';NfUWi~}}$I<>>Ff-V9>}tIBx>FbP+lb1$<.Ĝ>3y%l7N px@v<N#[\.Yq"$b}.9.?(LLI7EܒBq!)H~A߬H?$q0( èS 4!%j~][pcz5_2eҡs,`Z;Ÿ8OjUk?}ٽz{{̼'冑HAC1N&qA'q|>\.}K-ay&Nɻ,9-N<];MX$Wbc5?u!?1sb 8E?MCQzc~c r\E8yr̒Wg/ Gy(Bb,v F<' Nji2)S<]|h<a5;n 0q19AUmNvd/99 dTC9-CQ,B<xE9 a0d՝:T`P('4BV5d zlpUGR@1$I$I$I$I$I$I$I$I$I$I$I$I$I:`8 0 Ƣ1>EuO{aǢ` zj`⯆aX8aX@ k)@5F^ǡaFa #O Ehqr'6qFM0I <^"v=)cHXBn?GV&, P_\'d4B\paZbDD!\C,$>kӃ= 1C(▨1n~$aC KR%`XsP8 l IL22 %MDR`xwB#? 0 W[B(rF Tq."PxVY1EELHC P&VM(A 0AjZ^erD@VN΁秚q אh0DtXV+=`0n C!#P 죉|CT/ 3f^rz-^qêz{Fc8f'}?w}ED3.`E17WԏA"M]_윿k"Aǹ pu L" B,lA BQ -,P+AEADG'}0YD40¸ÛY>1d\뫶Et2UDZ3!t:H8z|>'}ՊR5 K, 4)h%!ƭz іDr}>yd2X,t^n'5|>Rá$m&D$j&%ڑx3{I" $ď$hJ"n7bp8H Ǜ 'ueM+F9" I .H:6$ۓuurX,&ϲ#>Ϲtt$`F:ZYYq"aD $츶fb:;;ӑUպfff$ؽSyܡ}GGö&Q.ECrtJٳH:uWw\^^:e:dt*aRq܈]y}}gi]F0I"JƆrs,LJP P AG;$Id2iZ9@Am/~w$D8z I 5Q5ڐQ D"s &&5Dw]vIԔ5Q $=6-MVWWZ35őDMYD"$A?kʐ@Ǎ:x[y||bh)矟emI"bU8X6"go(6"Z(~6"[ 0GvuN&qaI2cI H\W/1.5H8rn7u +nz'`PoJXM`G q>}CsFai-e{ȷjc0nh2<< I!ʽ= v+ @^# >R.0!(Wg $-H$H$ps =ZCfVfF# K QqDxǢ{ d2iH{VfG&hPh1/N7|>ϊW Z-& 7^;|%+Dg vҺ.m͔7iÁoJ@zMKԏ>qBb0}lt߀|3^"Հ?LX.u>Cƙv+!@N:MՏHitקJ3/@m""@v ` HE6N9VEL rc `@Pjx<*Hp'yGwW_~?>j |N*B!{Oꦟ)nu%ϏO_5 Ï@* *y6J+ m'-Dr8޳ gfgwgw73kػ;kMV*w +4G'_$L8ܽNy$.S{Z>w~ B4~9ej:I(:<2I@yB֓Q+2s5 zxxT$pղcVPɒmgGB<5ႪUc5GDIZزC,CQ:gZDuu%-ݗ!MȬ|I:%# >: Zxyy񒰡M}$qy^Oj5sYF֛t2R$j)秖s$aۅ"c?u)0OP*+VY+^# pQȆ$iXTْ?P$B аQCpu|OLӐIc$ $EGﱨ$$'B] $$I $HI @HI@HI $$@HI $$I $HI @HI@HI $$nK 3]l6|<<HI\$4]V>/@HD^>@?$\.$Z=KFvzN6@R777iXn{֞DJ$bt:GUࡂm* *ms~T>@ffےx~~NDAdJBrzzzJԧoR$?򫫫P 9Vb(.ܨו\ nTEDAQ*}i(}QBw-uEs vn''3̤67_H:$ժD *߁x(Hx<'B* \.> ?R444H{K[%eHMlf!^$j]N>CLCOdRr9D@EellLHFyލ ŧis}CHhv&$:3Q IJH 45SSS_; HPb1599ɶQ8v P$:V 1>>._$rj"E|ss)$NOOU^WjuuUJ%z%͍ aеGCyxxgH sD'C"4HJ7%Ad5>ǞQ*b~IPnooZXXP4y-bttT ɐ@Fbmm6;T^^^?v$a- ~/kUVSh9$\^^f['{@P,$v 2'+"iz? ~&Q?C3-.mNu||l 󕶶;88vvvd'ϸNm{RLt b sƆ8ɉVąͱs?MϝOw%hASO۟dD@¬\O;zoo3uqq၄]#&6[@`>::2Ly8*SLگu1\mbz ?{̶ yk?mX`9fl{!quuE?̹ĕ?A n =~@sWM%)B MB\^ ؈ be6>;hgrA $~‡e;{Eg$sS>Fuq־%xu&/mJ6|]W G'%Q׭GFVP$aZIX?CT}Ͼ'a:Ɨ_^^l%^,Yϒ^آ秶i[ $cIXflZsnDel]:ߨ.owkJ@1=}Ub:p?$>>Qۓ%a PM ŭ{Hi8Ku9[NG4T(Z-DPi%[tڮW&XiI`?f@[ܕU'%ik.7񪮊Wʹ2~bߨ.*4w$H@۾iߕsv-QVOAAtDPtQA%/"^x~/ /(y/aeyp Yf̙ . $ PF#Cnooq4AT*___SRW* lK]DbjssS 6H#aXy )Cj44^S\p=n6ttX, k𵆺"* ԅއ@5Pw0HJ@ӷ;;; 'AVML{ hcdy?`+p$8^ '[Ajsj@b!nB` C !9t퍾Tz*H,8$"Mh6'ID-Le???)#h $8ܤKD"k?R>jjeI$D"f7!ak{ՒM2֖:Qۼshמm'gbam:;mll#|> B3c!t||I8U  Y'&H}Bz!-2$lGe===ٶbL&MD279u gq2iH '''TW5ªjcy0D3NjwVKrpp"sqq9|_Gx>s!s3$t{vΰD"Zh)H 1>J3wyl6xޣ#e ; qz2${7 ^GV R3 < kyy^ H!FQ^65$~ǨK3vMB)v(ЂЭK m.ED7Ip ΂ .p?+ yx߅K1rO y*kAI\^^+|>RDD|@g%D"& m/kRRX$5(b1SOOOF}2]!/wx~~R $tYiw<<ܸ$$`ӼI @HIp@H@$$$@HI $$@HI $$I $HI @HI $$D(fӖ˥ -8qP?޿$IKŢF#[Vt?ݝ_Vm0f''zn.NMKŕek4PHIkIz=j; JBm;jJe'n6wNCSKӜPprrbWWWH'Kb^[TU˧MX?>>ޑl6kZ$d#k'8C]Iojޒ8|L&U6rCb\.gx󹝝t:Vbs./DQ " AD QQѦ6=].\*(q! us|psWb\r_g Μ{gժ9881㸠ZfW(:oHH@^K;J9vvf*@s)Ht:"t`.3^*ĭSTlu(/,LZm^__5xTHr9XGQT$avv֗ }KX,R$lPHo)BAEB2W3:+"X"133T$*A4+dJEB& Ӿ3&ɈHXcܜDPEEEB(ƚ榈ꪳA7kACPntMM;BM KKKBt{%οPd_9J[cN;;;H`;@t%___w^ڏ8>ww7?!zwJ* GJ_;::rYcĞ}‚O_Ds,B!̅aeoϏl[bgϹ% عJ_`Pf?<>n666 WW j #Ԟ%=-b1D"b{zzJg }GyHיcyW .,u/[tJK΅n"10D%D#$eONNhGα6i_^^S{ mOOO"1??hnlp# ^D1a( ,QQz ^D `(m{ggg0> mu{?U=v{=sʉցG200]I赺h999E_k7- )HqHB }֓"Tr$`T`bU_m۫kK5+-$ZRSS꦳nuE{Hxs  $ϗ:I-s $$@H@$@HI $$@,gϞ<- ZHI $$@HI $HI @H"$($$3 lllMZm^xaΜ $$RRRLQ@,?==>|0fttԌp $qߒP)T\KqqY^^)+ %իW ID[_|1?~o߾$$4KI\\\r(Ih^VV$}T#xʒˣ% kGfooϼylmm}CJFSD\\\---A ¢J]}W$K ,IH 5FFmC_0h[$C$n.} ."<||/Rk`mmmoMQ(DJr@t5i_7fmmJY$\Q .,# LJ&+377g~(JY$40IĨ$eH{|)6$''EwY0؝ igt3)--  Q^$33-@lPA˗uH;tۿI cH%d黮*t[9992(** C6!ѱ#B"HIK[>oߚϟ?%DJJJN1|PYϹaG_TV -RHHHPFPY0k4 #Anדgff|㑄'z@5<44$ ԢFnzX]]$Lk%b+$d.$Ts3IIIbnVf+ 9RՊi9Hn9>>^e{<|+ _G޸$$W$Fbee3ija|6 %M7UrKLLI($tI6# J"++mIm%#@tykX]zzWWWg. vO쵮ZL-q%ባt6j$ojjROj({no(mVߛM6=6IH1cGr$$o\G*7'&@UkˋV$$DIHI @HI@H@HI $$@HI $$;Ԣ(YAE= jVhP DE'Lq*DD8-"@QAem۸j}6[s9@$$ HI@@@_p !ĺK_X,8~}}$ĺK" ?_?$8Y>.K:%IjZNbn $I$iTtݹ$t:ITN@|~@PP=HRppp@'''9<$ (ʽztvvF}1$ƶv[>}㡭-ѯ`0aI:OHK"Q/o)f3UU|$~?b1PRl6"Ve`?'ܿj@]0&~aI؀^b4Yh4JDDIҨh6s>$6QԋNb{HD,;=>>M;{b ?)V؈`)"hvZ)b! h#{2.{S[5a6$YIfFGo[n].~vBP-g eN$$ $WV=! v9ȑ v{q&$ :nzT*.'f2 ;'L&m~߷V٬l6i j4pƱ h$Fdu>ħT*EB$;c,0p#gFGW'I pY oT*9 ,&qځZ-X,ƳL@&⢮VqyB8͑BEF-c"뀄|_@\UłBYj Y6ϑ7u@)xg"@\ZO .z]ǣQDaA(2Q|GA r e1pяnk9T4HqELӒC͍֊ L+JZ' ҝy$lVQNE8 eW.wB?Rt}"H G9N?xz>E@B9f҆!\$˥/oۥKXb MSp)䜕c7PLt$2:& `[c$HyǫE͇#ցk뛽WM%"HҥI&URK.MXXZXށXV" Z(be1=烇Ywv6eE]7M*]Rp@uůp+w+ŃP:S7z _BH' }fՙXV'w_dtu Nߋ߉SR߁$I ~tr[|HI $$@HI $? $$I $HI @HbX# FHI $$@HI $HI @Hb#%߁ $%PΎE:@D45*[߷IL&'ՙ E.3yW[& {~~Slִ阖___$IJ$jL"_XHNNNC$ *Ϥl"JAVޞQ3ϭP()XgIh*Gh4TT*KԓL'X- %zg@* =bxzz}||X B@$6iJwI$ApI" _ -3e?KK#AģAPEP("8PD=$!! BN9wSd278j(f:׏/Gh4F4j5_^cT $BP$ 6 333 ab@L&F !ymmmU S*A"`ٶ#I g"00 AժneeWHh@؞DZ!2?Q(KOa~d3ھ&&)1-J}7-\.uSZ! r\3:Nʆq|[[[K%Cjdhh򗗗\ MxxX2K&-'1@XP/g'9iY7w@"O gtrrw#Z?ޓ`ӓ{||^322"G{}}q,?8R yvvv;==oqqяzuymrccc _$(F<ntYZǾ^Y,Ax 68!cf9<<=}5M|3 Lb2e ftt "2Waoo-&~y. ;9:ޗ:hHȒ"֧Qa"ضK}p W QqMC]__3%ob1G6ufh`˨8LrHb p{{+K9 #Z]'NMMI(+ pK(+etRHէuQ#ѐ} t~fQqɌ!/3 H & ! `ylP읿kPۥR)BǂҩCB'tjg]]MݜD$ "NmԊ\9DO5i'"DQ,^-(]5\3'^XA{xx L/+l]xK>.wn agrJaD뵥LJW%(*-9mB $nnT+ 57vŢ0Lh@/ W $$@HI $$@HI $HI @HI@HI $$@HI $$vrvuu廎mgϯ$t:mwwww $$v- =d֎Fv IvR˛q{}}jjdML&&e24$$)tI5$$VDV3P(ā:i[K$qX77XLR$1W?n"02%waf {I$Z $$FY65 M2$ޓۛVՉ> oA. kpQ'bT*"8DIAoXӱrJbFIPny [+.99Q n\J31KŅ (( 7.z;.z|<1o%3͙$vy&'?áL&.//y\ 1 t:kyyYմZP!aXXX$FkABF@}vl!H I즤ޯ.7f7)_o`k=Dm>>>}ѷ7ﻙօEx{{{C~˞X1_5Y~8~~~v~I. y2==@AjgXfǕJO+njj x޶^oW*|t]IؠWwttjĄf8`{||ZYY柟w^>ʏժ ;NB;bv ?y3G'''@@1Xm9 v 1$_9b588$= 3iѺ+z???-?8$lF:8/9ˏwxxk+Nk Q[K_t`ss<'Mr9F-::K/_+$xzJ$tIzyy$uY9S;O$!EFtcq}\k |>yns6M$5ȳs-IHV]?:d﫫+:O s+\XGHʟ?==Y\{A b8$bmO kiO̖r':vűχsa^S v_ ABbA$ d;àwC AB$I$$I AB$I$$I ABw,Ea0}PAQSQSC[QCK DKQA""8 "*Ί @$$$(YIII $$@HI $$ $$I $HI8T9J^zM$tf $1秸\.# /J|}}5%)dl|6r, .$$f]:뤾20#{{{R(llo&neeeEMFrqq!TA0:t3mY[[CH RI% Ps rss#>u:^IommI.3___syyɀ +Q@. m$lL8fiU&H&qSѐ9>>@ `vzzʠ ,} yFo 6EoCN5G.ަ+y?$1 ,C蓼E㞟Mj-bD"1$zE$ j#WVHnooaLb($envcGC@KYM6iIh 'Hb1$,t8tz}X(`O)?JV[H_fYSnrƵ7j# ]qf8;;3Dׁ///O|||2˻;Y__;粪0 u#Nt+*p+>os@RL6 l[ӐO3)QVEpA+!2ZVns ID $'{O% H;>m6A I_N:+zw>݇!itȭp2L4rti%fqITRL >jK+ 1PSނY%Eچ|.BgUleN 0^D22RBZLi:m?э$Ė<:FBLFX<|7Jf|cE>$Ż}}c)n a9FNn7Kc "{ho [, pIh0D*vg_w@nچQN&$IxЭ&:@{g87 eօe],V[PJDQlJB>$3I&/ČB`ğf5KxWT1vWU*#U9(^q+B5(oR|z/<@j6QB_uMJKyV)nLPB5\ʯZj?K®$$! bă_FaD_Pؓzj' ?o6Ā9$c$$999!% Ȏz$]7QF@cz.& *\{4׍Tfb0ȗVޱXL:H$?< (CIqFB W,z4Npk~$¹?==uo|>"myZxV+ǚa7I<>>f"Kؙ㿽2%6Jlar)xx\eYf o%mcܗ$u$te8 t&,\;xv[F}tt:=S‘&)~GD2eLOp pB?6=[[g ;IYz=3;a Q`c5H8P]-cL&J<@"m!Rtn7$3IR)qG$ 8qN\BTPLBF2N#Vulr|@@ȲoI96bϺ x3q[C༼^/Hf]&e;Xw&qGͱQؚlK JƒFvo[ E&ćd'9I Da\"B$j MJ),Rj][p\Me' y_4BOCeY {y{ `+bp;s2gD׋83! 0|]:hQ!lG߁t ^swKnEb8>l6 O}҈d2񋄿:NX,~6Kq6A]? G:fylfVg/xxB? ܱ}D-l8&o|=m3g>( "qI.Edh "hŠD"Ɉ."aEb/H` BlEED^C.vHdֈD  v}/9Ml]r9-[>. !NHU$ .NOPS%U*+lEH`#٘}ġH4ogʼW@ڒλ{xW؇HӱPN&0%"AX V F$4p"6w"4$nZG(U gDѸyR8 )@I{* "wqE]5AhE K5G1d/*gO-.c\ ?B[#f^KQDS(Hl{vP8bL]8Ni !dh|H#(m/.Sb#5?;e(vNa8XPc FFCμ4~CqXt+I+&Ma[>8iC1*v:$: h f7GEH$imSq(1"9:u0VP8"""]CVuRa)m4ˢ$: C6h$IlS:b =KIZqAm"H [f,$-Xg8$)Q&Iz*!I* $ $gI$i~7G$I#8$I I$9. /{6Q2 -\0AGdt;[`g['!FΑ<njH4ED狇(0J:vVFP\c *~XQ@8x57F@XDEOזpr 1q̀(M I U6*F(چP#~ܰpN*y#"(p(Vb#72( ?("bSpE苁K>Kc/zF\NPPp:q!. bdP+#چFA\/DEK1qL窩BDO ~4$F܊T܉;[݊IN\ TOE[aL:T&/ 16 4Zn6IPKO&̶a(L\EsژuDDDW\蛀T܋r},b7#ێن-9m+}A90a#b/u$nD_| n>@)v6d%^Ltkt{mL|ݣ&DaTI!) 7$W%*XDpw7VAKarNGHwC||g1L0:"2EQo4ԽM; 84CJ ȊXŖ T-cXdM3q&RD9 HڕLč qUT L8Ę-u)^7M< 7̄i%gi A!lX"n=E$Cl.|$T*ZB𢡊 zM[S$Ed=om2A"ؽx0mD,DA|$NKT`B#$H|xi%D$h%$.<#Mi#LQ_ _jt:nZ9r@@Ls % x2DqN 6H&NP:mkz&H r CkX~fӵ\.]<2^k>;]X$x`08qw]hp(i5L\^Ot޹&DaYHE-:u)B|hic%>@A;V+NE-BPb(ݼ:+3(Aտ?{qEAB<+!ܟ2!W qs$n%HHKKhbF Î9% :._Ai:^T4XlЧL&C^% (\("(Fi4QVp8Lvat:d"|Z-ezCm[}PN&Z-7 0']NC@z&A.Eݯg@F$D@ !_ĵ iifEPX<{fy =TT#T.yBP:tcKppRhp~ F j5ofhnÃߛٍ !tOOOҁ&3ҟ DAJR|u\PLq14;ZFB(`2آaX,"e5H\,A@+ o 9j ̓<WP[plyph`쪾j%(˝rՊl6z||z>\RXA]*ػ0ôGJ~U"At:7:܁3SD܀:-S)9bRX<l/W999il>m?^deML%J.y=򲬮\15=nV%\msm6B"&_lQH!!Cs޹|\__ ulE%)f*777CrXH4Dq׭ylsA#>ևs9??Mu%rvv|d\dMVr$弪ƾFe'5 %+}ѐ!$$<$~ !1/$1X628z.Ol e+N8<sBqqqշNDo%. !RDrmDLRH|AP4bB"`VRv~sNDH !B!!$BBH JLi NSV666fF2e6ʌT祯6u:!ak[^^~ev ek/!! +++Y˷)zT2c !1!'2c !1!QW#l[Bb"C"{rf]2k !!$;Gqj h (ZDZDjݪF P]*889H =Ϲ;-~.@$  D"Hh4JT*v)  ĤEV+r9* p8Muj4xlj")j5a@D"H8NvGZ-@`*"Vl6g4Dpz777}gg*H.|> t{{9率<;NnW&+jIד` @$  (x2>Վ: y^K8W:Ls/t:MR{zzqq}}-J-H3cަYH@$Y$.//wfG?Byuu5M...yIޔKsKYh4RReaa;J ^p{"3 FD"1[2I~2T&QT1($d2Q8&T*%˄Fckkk[KTU Eoccf3yއXp({W$B" KKK%݆f)bXxd1eޙDQDLD Y1'QQqE@DD 5m{W5Omꪽ7dӭiAجWĿ@$8M9b |M>AA=@si{TrwdE$D$D$*Hp{0 컷7A|L^ <眔hCB鸡nNdڅ o  J"M?a0 "! 1潿nooI"Aݭ    # AA(?~h0D 9@¸|vvAHe mȝLp W*D$D$D$*HԸk๶OO<4H BGFM9>Gee677]{{{P#xY$:6HHTuW45HDBAE$XYtuu1GZ \]]Խ!ak J#t|ax___H B1MkSnF^__9]PHD9_'|t M0;MMMv 2`v(NLL͹U`۸FMMMk['''PvFIwvv~\6鰰םĺ---xrm,cl9!oZ A0 xN$.ϩ-1vrY###ړ YK(}?doll,JzzjC8 }./Ejy3OJqQ>ݴ0ġF(l1OGڲ_dر.m^޿aߛB}C/)s(H:%.4ωpE~oNFD$D$D$c$#ǗYM6 m|g1 ,q"sCC~="ayQHĞ%=ɓfI{ff$"A>8Q!< ,Ҷ9 m̉3009)Ғn~lhoM|@ IcCIK?C{}01!gAwU0%,H e);Kb='H?S,0fm`<(N@~&Y,cM旵2W/]  #Cxs`b ePe2"""+hmmE*QPzpp?vGa\PR\#r]_W̏#) Iol0zx<ƎU\.M[Ek "1 *Hp.m~yEbVsRXN , ϳ!o/[-9nSτ"4︞f]TV0N'0Sz-]5ab8:[sD ~]f4,gDnDN~Mˠ"H(oON-Y:,%wQA~V=Da»!,{`YMVdrD$3d,8b Rǵ`BMP3Uۯ+a"pBYF Tf qㄛg+|;꺨bDT(mQh34#KTO<6E$swꞵC]&{|, EnO<3x?8!u߷9HL/_ëDUC("H_Uݺ0(և"H(("2 fa.D EBP$DDDD EBP$DDDD EBP$DDDD EBP$DDDD EBP$DDDDDP$ EBDDDDP$ EBDDDDP$7bסH(H7{gR?("*"8 ( qQPEq@os]z4{{r5mf$ D@$ D@$ D@$ D@$ DD@$ D@$ D@$?K. @$ DoYYYkV\{{4sss6>>2ׯMH "ɓ'ݽCygΜ1EkkC+'SSSyK8qĄMNNZ}}&8veggXUU]z<,11FGG@$ Db?EbchF޽{"ׯ_7А>|ػ_DΝ;qy͛.ϥ%>@}q=8w]pCy)O@Y= "Hl&996FiiieBW\#GیŋMYu"KI$޼yOZS'7nXbߠQ w7ó"H  vDyyy^'yc|1HOO$ )>>a.mEb``(hJJJtj&PY\\ʲ&\@0hh;*Cx5z@$ Do PN>>w)m4lDni)||=Fz<{,"H (ڠ|e Qma!q^ i =ډV¢7zB+ VC(_D@$[$=fBEee%o3Cִ4Z{=~555YTTUWWmi@JJJ"s=P ""qHӝl|trV166F#{Nw:]2>DB= -//kqWO{m}EI8vݺuT{)޾}tȓpდHS|ݓ'O:G= DZ$QC H-waa*rrr5J4xhPo_eΠ ]{'ݾ}O*ƲȧO$:mP3FN}HDB*|b=򄤷bcclJגM"3S|G=@G@$`^7kzPltl⢖MZkLS4x{g@ FE JA KyWvȱYv\Xfad'3?#)+Mi`gB6)P  S5d_b%EY?xr5~_^Vi#VdIul٤-\.qo>ȶ5Z8+ed ﬢaΩns.Ks:GDB~9[撫m; JߤKsl=W+)B%lsNZN ?.B0<"p~p(w<WB"^dzNwj<f3@vي؁'  gqe D7“1;m3+wW*A \3:H(#i<ጰ={9qpLGa{4-SH@+!GDlFQԱb)Nm{USރݼ-'d254(|7pLI:w!`)dw``ポh~yx1Vx7~tt/c XPB!KpO^'3) '4.qs$_^ۭu[.@B  {Maq0 $2r6jXRIrxlK_p$gnnV[J[ިUxHTĸzu5ڏOt!]VwH縰7ƶ|P6k[Aw Eb*gn=׶HsTonn HԢ׭OX{~Asژ{ck1b^;~]6߳ݻ{|89 "A$jjaWpHT׊ĨDUQR0EgC1VRcD[f7LJmZh:$p!]$ Z\1o.;C@.vƤclW1hݰkDcUZ ̫5U;̹]Dwj^v"1ωH "zy  {EIK*_l UHkxyy{./U=+"QKksVRQKIj]Z] SaXz_sy߸V"U{O*kرu̝q-nGXwḶS)0[jJj7.ND|nq_7ݜO @Vs DH `Ig&WmkK H "A$ DH "A$@$ DH "@$ DH "@$  DHH "A$ DH "A$ DDH  "A$+tQ,",+N)Y(Ŏ5ellBJ$6V򮔩ykf=}o9LO37֧:= "H "H4vvvfHIJ٬Dh㛝5emm @$ DYYY1zzz筭сH"H AАxO+P-T0<>nZ; B_ܜDu\D"rrҔ]S$R~;aRhoovD}/D@$~H)xul úp677Mю8Lp<O x<] x;Tʽ*YOLLS^^^܄X-~B$!ԐBc@$ D⧊ć||Eg%,X2Եﺯׅ kDZ-ЎH TO,y&Z"!~=??kCDg\MWẀƂH oJ[3 ~U3ۅh"\__`"H4Htww F$:;;׏Lbv潳SS;V0/2PR& U @QrKK2Hz>Q{m9W}y<{yZNJM! 0Sv6 "$n7!:m)؏D"X#(~l|S~$(($($($SHF|'jӉBByV}UT*nv1iNhBBB=[.$^_8S!_>Y;"uvFOPNmBHB!o#ErA&D9|>t:m&|C@p5ӿB!DSwڤHn` ӿRHPH|0$~Eix-[oZ&ݮX:t3E2~WÿOŢZl#CHO%JdD."lZ-9 0H@#  U׺lL <>Ѩq1l63my\b}kr(2*.ˀdF> |`A: *$ǣxU; 3N \AP'r, m[}0h9HX,rj\.' j?U4 %$۔/~>lH_S}[l6ߒnC8Z)OJbx={ɩ(`# $F=Z%R_k'N$ >w ﷷW}Cg"2kCbqG]/~ww׋"/:"A$Ŀ*Q_3׳\]_AXxv!0ݶ^<==myE!6 VO x(4X|:"ޟު=wmsuucyO{F$f^z(0W`[a7esj$C)w@$ jY$FCf$m>}ГYy"ձ {ʨA$E<==Oao;5@X/ N)!D^,? Uu}ig"=Ǵ.`Xk w,Di)aK"f";CmG$e&ooo}Qo"A$ET/,ď0<^7^m_85m6{b)UCQ/uڦY-ĮOdծ}fZ~a ڦu{DbW[6w>0qDy2 "A$0j "A$@$ DHH "A$ DH "A$ DDH  "A$ DE F$`DH "@$ DH "wf/Uuah( *"&( p@QADRTE /gEEߏ7|ᜳ|^x:kozzzZH "H ""H "H "H "H {+//7577;ĕ]ӫ@$ DO쬝9sfZbbs---+^ueŋ;|uvvXdd{Z;}4_"H"q V_iWu›7oLQVV˗/ʊءCܱ߿B#z}%q#G6綺*I6555v7Ԯ?~=:w]p!k#"E6>>n={LuG}DÇΟ={ AWW{'SnXؘUTThh۷oЕU|FBɓ'թK D/"q5i|}屴Sy=QBVRUUK)*((peMWWWBM.iqqnܸ`nr# =Z'&?4^:uݻ箝g644dO@Hݽ@$Y$=PY(+޽{Ǘ>@U'OK FkmmU&"H -EcǎrSSSF!_z|MBOiK UC!PZVE$ DbD6 'IJ 4h|LgRJׯޱo߾y>D`S8@$ EB [ rLֵh`'^_xQ9sB333n)JuVHlXnCBf'D@$|m-?~6B#4A%] -??FFF$߿k=ע%V mwXa8<"H ~Djj4TQ$[ mc"%%'7o޴e+--;wlPn["{@0G@$vC$yF G< rJgPj"HHx2la T۵V$/_츎h{a]+,#""U8ێ둑I?{v9wO2224e ڧ'N|v4u"**)_OxFm_z_ѱ@~EG M؜@$ wD*<*Tד'OTwQVOSᙽ^6Ƶ GJ&k}ڐN !hH8c' `0W]"1!p>g K^Ҷnjs?,w^]WtdOxxZ b3_Ӊw2xfA")O3vdۍHTe'2J^i-p,Hx>2?ė~ME8w,݈xɚI7@}UW@B $$#>|2\C㰏ǴV.&&ye؊fY]l6eg岊/2Xc?*7L:wN* dvwn71 iEH$z~F,ۭ  R'{ 1Arv|L& $@CH;l;#3gN4F@ xfQg4Tk xJT=& }$$0(8H6LH`<ݫ@S8 Q]4@B& @⇽WI58~[M4u BPKt -]BKQCCEpg'E\p󃓞8~'چlp&d{G&_gγ ۲=b_?g3Gי|v{{{[giM*盛Lېeysq~FI%SsVc~3ϫW??ePd;X;ԆDMn}t:Y:c}+Ͳ6$Zːfk!!$`So^nXBBH $@H !!$B@H !!$BBH $BBH ! $BBH ! $ !!$BBH !!$BBH !!$BBH ! $BBH !eN>??k4|>x\uzzZپW|6n|߯! $h}}t:M3d^WGGGl;<2x ֢6Dj-//%)綶LŽ~K%Nڈ"HH(v{Mu(,l]RwWab)} D@$FI$fggHOO988pYP[__{әLZLR'D@$FH$4(-h &;LZ>WWvvf*綺jTJJ<"ѱ`$$)ڄH ^!IғH(+aٔHկaUBKNT*IW~ @$ sɯC]OW$E$ 6CcShrkwC8}fߎz>~ woX}c3V}@:DwFPupss36:)L:N5Lvxxh?읿jPGOQJۡkiЩC蠣(":TE\|??.cS8P&snnr~C8-0:XzsC{L}~Xo00+fxF<._*ci¶}n!z٧Z9'WWWGnWm!9tNBH(ğ3= \$0?}W,p{{߫T*!%aZ0c7 6D1@NPW6ǂ}>񑺜Mgr936UoH}\fg;H_C| ="A[BP$s zuHDgZuhiZ?4MMH$hSh4n֡z2jJ$rU x_O`uɮ\ |'#:Im޷#Hޢ"9&U:v"H('#~ k ס+/// ahMj{gh %0:M"/Hǥ\zd>??ֲVXNO+uDv=ms =v-,jp8md{pLsvٯc[Ȫ7YO2̸OhW$Q$ EB8C|as,""H(jz鯯eA>z EBP$ EBP$ EBP$ EBP$ Q$ EBDDDD EBP$DDDD EBP$DDDD EB81áH(^Ǿ$q[-*QD]A-Mz6-A׺q#QP c@:EgNt9;!AH!AH!AH!AH!AH $ B $ B $ B $ BSfN羟L#p!AHkkkj<u5$% {dҚͦ#$vwwM+JRˋcnZ Vebў~xxL&c^jb1 !AH[ZTɉ CFzw$NOOm2( !QmuuմCL}{{;>>> kl:c.5{. B $f|>[pWBbeeMQ"v666ggg|nnnLAm!ER- yXwww|oX\<!AH_o;;;}7k!CkkK3!quue =ǵ9z) Z1/..Lw;^=??[Z5k8pы`gJ4\!񿇄F(2](x#:?xm97W"asT*3w$%" && 'x⍷⁈L&bR˯{zzfܞNOw^gW2X|G  B$ZZZ " Bl5[\E ­e(@ nnn r^  l'|U#) D"4::jnoo)aCs22fq;nvww|xx8DŽ](D6 rHS1A!Aa~3 \ !W;t롡!C_o%RX|+걨{2::*[[[1!BHP$H`d}܈899IMM0<6tc)&"(###())WD0;;; ͈x !XϏzP$()ҒIȂᜩ)]y"VXt"@^kG jYZ555:1bCH!X!^*P?E"Eb@O2tBiC -&E#W$LhSr@@JKK?-Ø $bonn"W $!xzzA=)  $Eee%:xf&pB=B !ښ LJ"AHH`%M C |(}}}A6"BY  m`3""",*'&&F2zA booeS$( LFhh0Pu ) !+"궅<8==[DV E"A@&>nd2Xd !!b%rҎOLLHmm RRRcdllLZʒ`:NHLLHʔFtQyjgY^kXXpg|.E"a{Џ4<9 eKjG.ؐBa~#Zfffd}}Kc|fD K ҁ}x2 ؇XĊ< #G# 6Q$($%joEYO-GSFvv6B!v")o B'fE e_Nz^^%- wMÏ)NF&aIT&ZB!L =HHHDKK F%L&HP$~R$@SS.~Kwtvv?읽1KEVBkJ;+DP˷p "puI{N&rT{X0UKSf!矔JB;6a"Cs򮤲Mʷ7e`W63"aD׈DVs>xd++DV y`!`ߘwe>E;W|Cn9l#bD?yҷ!x2up^s\.shSwE-l_> 5l:#F$H,vRᝇ&$I/SIH>~]Wum7f0H`0g@r(]FRA?Db #F$~H :.J,K#|z=鉄jFJ8"!vIJ0r/ &HH]4t:2l;Lax1DKҤOiB{ :?_ da@ enNspXwo]e[tXFmM#>|choH)׷quLNsuzC"YsWmBBHV;/Q䲆u^h>_i]Ld:@e0Ư rF[\%dsaՌf@iePyd`ksyRB\R#5:q /e`7)BW|u۸:էY$*>;].+ek[w5! !!$99{]rYm|^6G|nB ͑Zr/;vn}? $ΐ/ժ\.3~/1fYe4fSw,QXXbڨXXZi,?6ZAAQ%4B$Ȃ!ٍ vؽglRl6k6KpՕ)DZ>8 m7D~N$T.-ÃbH D^ZZ,%_@$&144Ԫ.ѢA.%q"xYsH w '155!D s ǑPPH t_J/"H 1 -= cccZ !L{{{*ō_( D :["666Lv؄J($ܢH DlEdkDe_#Țʙ$ڄH 1 M~#t-fOO% ;99PF8maa!hjՊO$OnmhaZ n\.t!!JJ"j ja'˻Z{ֳ֬f5vUQ-KaL`0hds[*l6l/~c{OD""˝L&+""rN' ! ! Rpp9STѾ0HpZ5cEmL&41Z|>;rݮp8=0""#ԍ r ėۻؚ\ d<+w[b r4F#l6_98DgH-nGzs4U D"D]."Dy[šB$nm}`Iy>l<rw>?*Lj[[,zn'zTf'c$4x^3xKyt3#E"}H%"݇ԹaΞ HHH|+H "em6xf P\Nz=.O HeOҜv$cS9pvLM;Wv1ET*Sf;;@  $+t>KC?} $V~ :FeFBDDDD@B@B@s a:8p\> B'N%uP A{>sMЩɺ~H!ќhcd "ߟ {W}` l$lZ1C=Ҿ@Y@R)@3@'}m;b uuFC@BDDDD@B@B@)Hn,%ʼX,T 2{lP 4ڗN|X$Ϝ/{kZmboZ/L><}>51 M] <}jeYRZZZ".kKo ZAPG߀@7CyzN+ɋ޼P.n4$c \.y"/VۼE>{+JYs%WۮvĖ"$5BBHpsǹ@H !!$`\ȿ: BBH ! $BBH !B!!$BBH !!$BBH  !!$BBH !!$BBH !!$BBH ! $BBH !n|ztF#.//me,~8??#BB"\Fy~~!l6#ƹ!!$8HRDd2NY)J>j5rz^XVswwy)~jx{{{߫y|||DRVBBH ǘf6 ɋם6=<޹a_@RCH"JB_`imk#"6" 7K-v9ewqށ̺q癙pô_'k( EY0c cWA`,r(. |ё!" J. BcMK@HP$~H7m-"ϥT*`0l&jU>>>=:sӱڶx,Zݮ$ !8јWԅ"AHFص`*LxmZ?B wYl  EBQ@Ϲ>gnl6!rgKkIF,KiZu=B tpnE"HԼV-2aFRG>8nS$!puuet:z.777f^O"AH φ sSS$!`$ (@ hLS&E"APA$0hV /BBH !e /2.g'9BBHq7$n{ƙ䘀8gc&$B@H !!$B!!$BBH ! $BBH ! $ز !aE+BBH !!$BBH !!$BBH B@H !!$Bb]^^hp8LqkZx3`0ԾZj7>x!!$ĮY)O🟟#."Ç!q~~bji2N"L_*kRG eBBHUz^[`&4]__gfl6a|c4S^_x|6!GGG${HB!~sQڮmBguXI$+pq (8n"8ȹ \E<7IsҚZ۷m}A a6H\^^Ã+}4ZZgXB tZÃz4 {u{`0KǡPHá4MD"l=t:5X89C:(}}}=&]mŖ}]~u}ĩ MGw~~.gggruuJ.r^"d{yyyyssuOkD"!d$L2y`0P%s]^^kR)纜stV/67Uۏ1~+A&xG\D H`oF AA[$?^Қ ;mc~~C A8 8H_/ Q!gpD y/j$*Hp2)_}R A H ~!¶&A Aiz{{S ~3LpWAtAjrnkYVR*\.NH5Ѩf):B}ݗj6NP\~||^>r30:"}4ϥjh4f#Xlڣ`F!JA_S>gh_qq9WU=i^K86NNM A0w"bռD(AE_"( "(Х;A("*""s  (((BQ<~ws_g;sΙ=&h:t:M^>J%ѿKH6F#NOOųCbjh2PӡP(*9yD"Ag|ut+ 6=ѷOYG0<4@uT.O|7ԾVR\9r ê:p|||&-Q2`@ H$de[phsQꙔmw\i`Ǜ&v e"~/*UbM#M$? WDH$>>>d2kU q5o4WDD[, ]|FŗutQY٬xf\Q \\\h:[zƫWѨH#}Vo7 4ᬐ7?PV%8ρ@ê:#? vyfDBJ3n$t}˃B0_ Q@ >f3Q{Cp^lR::svvF7q#:H$DH$6ewvv`TD~ jA/ 3y&TlT ]D @EN$daQq8`>NRs}}& P⾣#l8sextR_m _tQ/X + "(.H&,akA| RA;+[K{K Lyaqr$I.3\|$kޑy|~Ǚ步Mkai(2gaRˬиl˙tGB󊓓arnt,n-m[&ewwwc*,`$ƹu2K\ޔq1 DDڜ μM*ZЌUwy}୙!$w0htAF";NFt\ :O///\4ch[ YCf B'wM)ͦ Rw0ye:v|}-̨_\\ @@R~=??wt_vVN"FžIu7Rc$!C#a)9hZZ%s}ڨ3.,+;UC_'uL0 oՀaۓCͣ 2?G)C10#@}o@L^0 X`$:Ri W.FA"\WS/ $XX=ziJiFb='##0}> ;C7`ёxw48Zsk-E7# XIbOWb;m K)6j0H4ט%9FFbd4K>Е72(ooweGRv7_-)$ ~9445ל[}TMD1IJ+ 3$&:ۻÜ60ZC %XD""=WZzlݬ~~sj73c ?,K1"+#b6b6h[m.䯭urjg^y8L9nΈzgLJ8Kަϙ&Lj6b̐p+1uO.DZu[[ ?7y*" ^# ?ֆC0aD|LE8-g^e6%}x# 3,B}`>B}8tٌ"|U X`DhRQ Aât2)/lp#b\.FE8-T𛇬1 [&ŰآxQ&ۚ&#cȷ #4ld h6 5:* vɌ0: 2.0dh`(H~I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$i_XצXmIENDB`extension-manager-0.6.3/po/screenshots/_10.png000066400000000000000000000233171477302130300212150ustar00rootroot00000000000000PNG  IHDRr5HaPLTE888~~~}}}|||{{{zzzyyyxxxwwwvvvuuutttsssrrrqqqpppooonnnmmmlllkkkjjjiiihhhgggfffeeedddcccbbbaaa```___^^^]]]\\\[[[ZZZYYYXXXWWWVVVUUUTTTSSSRRRQQQPPPOOONNNMMMLLLKKKJJJIIIHHHGGGFFFEEEDDDCCCBBBAAA@@@???>>>===<<<;;;:::999555333""" bq$)IDATxݍSgYkPzH}A[7ڮz;^cfr@/ )bSZ V*cOoH zB `rwչ;y'x>NY36G3#(Ca:Afd)mC| 0Hڪ" 1)F?^%.^H/|;sPsdkUHP X!^ax Ҷ[T}ϿZXL wͻ NV~[J+@6F(P9}mDf&,bb (( 尖L㾃7yKiV4ba5ӎRо`נTod{ 2B:( A9zo{7r]2C0_aXt"nࡗ4Ui⧇Nt]b6OЃ^1NyD0:5$G9y}CKtb?Eה_2Ǟ1 28F۴#:LC-VjT,#85 9*jbAEZXe ]ZU%F$6%,!1K΄ΏA( 4[2LMJupI[xQ&E9H+ AMPL hQ@MGaj]v1v67K{Ub/F;g#dIcн4[ W5':d6AB3QWi{,m2Ѝ#G _y"> h3΀ȗ*:i,FcI &۠m`mcs-r>I6ay,0y0y]X0+D#v".?V)=I"geC"! P׆. p1-C(\ ǃ;%wn e4[DB,SRDs=ъ\Dy#Qa^TI"u_JIGj(>n7~mMpOngOW; :n u:?i;_~nGOz <߾:Wkv_e'(sqHV +`P0O"8P˭^퀞~{L-< 8FE~SH~i_ w͸pJuQlN<$#xbOQu' Yc~?PWaΛ{woh۬蒸jrc &{ o9y?' f,m=A'5F<"֚%ةBD}GL!3D ,`' 2^oX|:?rPKVTC?gShD>֟.}KH?$MXY$@۰زmoUFsG=2mydqxVJrVLd$ Pb(FfDNР;A=OUA!Qx * >蚡CЂ΅ \&d B0!;t1"X,j.p<~oF{i⺟Ii]+{fsW.y;X *q-RXNCҊTPSоq 'ZMf:A$ըrb"]س lTܷů[!*'O4 nT0N"EhD;B'qETϖwKg Vr0mhl 7v`DNsxuIef YH4tMC:.1e39,r.Ox"_ȹ}jDn@bwdw$,ǭiś ! ;9K)@Q2cʧL Qs&mȄOʬ!pPκq9d@o%Z+~8Pˠc07n(.HJe\RFHiVE- צO`(rZ_k%jc'j r1h&LMn7 ~;'٠ks8Nw/2Ea]Fk vE[^ u m:I"EhVI!#me7xNdݽyӶf);wVϧ3sΝ4~{y'p**0D( ъ܊_eD [1$0@@:Y_Bk0>}yRS퐆7ix*Co-:u`{x0 )Əd9Ha.W*VL(J p+EAU)a_ais$]4ba.$J'{hCəm|OH[Ͳ(#ڋ/5deyF4EN*MIm0`v~vEx`KMd׮& @qgl{mv O)2xEl{O7%bJF8QD֞P_h d'R |;F-:WpF+D9Hd2nJo#^Joõk#'[}@3| LtC!&q12캝{\!EːꆮM[p%z.P#v\ֿ`.>P\c:=17=DQEwE' ox{[@ھto3շKcW['vAKq+շۣ$ܭ {idKEbp7TiO h] 3{jJ8a*)zԢxsfj3Lk=NAojV"AQlEPHbn̟u|d  糖IޫuggQۍN0]ogϨBȏB1e>vbpQzXVO7ъHsm`LK=:o 1~6-?I1c2of.1biЕD*l-FH7@*Еmɮ +Ya7q頷r,mT^ȂH63W9Ǜ~ROK=Y!Bqabl  h~[_pb'!*@I\aPS*C8*pƨ<8l /T<; tNhU qU1F]d6HjS]98Q= qUŨHi=T*>A 3spQRU_FW,@i(~< Ze&oB!(~(Nuk=}z{Iӓݣxȓާ'GmۿOa!bRa#l ;t~{ ،;t5 ."2z\QҸC/\*7-!br;AL: B޿Eov8(ʓݿEo!T~R}$\y5`;]TR>w}*[fR P 5\Е2*NU؉G(ff%\o[G]CcTxoeʃe ߢ{(uH8J E׬ST\?浒KT)6"QGj#rrtHRy\%5 Ԭv?'r+gǫWynEgϡ )]G?ΞO"QA%<~ቯdgF2ĭ'ǯ*I0syH).U!0GI 5ʹTm\-8E*p8t2;CҔRSS {9ANo%,H* &\!B1cH/#/ */PI,RB2BGE31S'^PZ.cs Ts~ k50T{獮#`g:S~>46u{ƪiϨgH/a;qb_Wo?u h. P{n\XV`dՄ\7VFcQn'' _h |TB\XUWՋ B>gG |r>n,+p:" ԡ*o&=U9UW70,peMG64dL a ƪ籚{z?ݣ+?{.^oGTxZ.RKސB!/gP,|z)]bi<'*O~K;gBk\5 ޾ب_V;K:6o=7IPb0v, WM(=wy;7Bz$Grc9 &C_-/Q=;}FF.\X\;y^+WWvkQ=53:lH!}p'M*B1[^|N50Ѽ72BHߦ̈́3g3-ym?N6?D݅O(}]gcnuQg\&id3/3@y]ݦ_X&Z名xeo[tϢ,76=]]8W5Y|X!?PB!& eV e1\\TFԓSɳ~ɉӦ=~"nN'^ .Yl%/['1K93?YFhN_ƒO=)ZiՄf4E "w3|Ӛq5K?JY7xg~k`D ~/"EDA#L7;̐;-9ux7-h/lFv}L: "o?V~]OY3xKEV?^؜U|=swI>Y64"r>^Shic͒y:reO S;~R wN x?,F!B!c~:е?c l<|8RQMPS#{Fpvtrŋbȅ+1~2Qם4f;?qlgRg7l ]_嘑cWTcW=pbY}3H*jr 8QY _ ?&/g *F/zmr,B!/}4T˖t2;͏n6;{8,m|LZݴ\ G̥]uvTp3J\:Y?E7mpH7y\:?d`\!B!B! ys? ~5@[\ͷ3N]C(D^`\:q3N]v ;ע"ԯK4wFEޑs {Ϻ-yёnm+I-sUS5r-xlYz2w޼V~}#-4*t5 w_[+fh9D9@e_Y.b(ZmF`ZSE֬?ah"kNԾޚu`ue4uA ߗ5p9Pj,ꌧaNؒqP=_2HF۳ e!B #F6!B!&ܵf6k!Tv{agJ. %-]M0WC0\u,ཾGus;#C%Lm>oľו%xEuGv3p G6!axP ޱ _[=aߵPjP;6p[v,캨͡&j:;"oB=FaX_:7-̡&=##%8Hؕը0\}(Z)7B!B! 3ln?9\cU2{~.0f~.0ðfSsycam{%r!B!B4{6dz=#HOO'!=͞\9yӘzan3smBOgG#sIB!B!(xqtT)LT^F 9.x,Î]Cwn;4\%{;Q[еEŭ8K9Qn6*=JǢ/pa{nU *ơnm#"mRW^fx,GY"G.9^Wȍ}"gk^7cw^}4 9[] %YgXE^ =q]z`d$o}#x,汏OEļhF["O%D&"'*qP*OXDțy"WP3K ;ħ w$xU.,S$q~r/'.qz3߇yJ@S:' =yف{{#nm+IoSQG^n=C$YnQ/4bNV2KX'I_RVZWP }qGڤV 2&yO8 8&^: R5ӱ(&&gpcsQ*#nY%h[Gc/Q>^QH=wҋ3T^ ë +GK;{#[$a-s͛mS|a<8= LnAGW> TH DHQ<؋b+62L;93gt:+/T}HZY0}5lZ}qA՘W&okJWt; S;(U~qU}mop\yo~l\ ߂nȏHRcyaO|DL'wB!B!B+h_\DXa2&^9nˆ-|8PaMۺCA\[\U#j!Z ⻐By>FD^iM1L ӕ-~@~U15An|#dtsuK[TQGXBۋ;x:BFQ=`F,rwծzy\c[eza,ב:G~}zX_彖i-Qa'fZڮ ]6vDG~ǮoGEބz4w0#:r=0Y{9*"ggTi:r6͹?{6-Z9CXyj r独Yv#7G. ז.iY~˺d]C˚]8 R X[rB=^˽yp P¢]H؞Al6JB!BMaB!XTO"agvGnjnm NZd}ԟuPG%/[Giz_юeRc{6gԋ_\9QWfh9ȨvK>ZԛZn3eǷe+PQᕴz;oc*n4}e%}ihϭdjh|˛7 _s'zs|=QY^6gՅo14}>RuL#֯Z<5}V?_e}͠|-,_(KB!B!RF Y?l 窹˝qL"'w]Vs&rݰ m3f71<7id\}D `ivZn f9Hou~?&rʪ[Mft۷$;ZCEuzyD74~~֍bl=Ww4f۷L$NKϒ A!މߤIENDB`extension-manager-0.6.3/po/screenshots/_11.png000066400000000000000000001753541477302130300212270ustar00rootroot00000000000000PNG  IHDRpA%bKGDIDATxwxTe{J %@ )* DŲbPDTbY "]q_T(*""* Ny3N$s&\W99L&eqqשǨEu 6* LSu ÈDUÛPm|)O|9U ZG3ZPɆ@ tNuKT7aBjx- tnu;d[NjPÛp7#=?uz& 'B5T\WSX6s@=s*>y q2DxS8M(sLol_1!Pjأ[_Mu@9+T?1;1LpJ>/9@"D:,/ &7_=p9ނ8 o n|8X/}TUp"@3xW1;T6T%ý1`B`1tc'м7_WxcU&NRBNNNN*>>Tl6p8v=dӱcm۶O%,q7& qaKŠWxFm eaR,k8YxlKԩӀFM?T6Mv]N^I&IEVUqqq*))ȑ#n۶m1ʮ?zxzm>)㞼mV8zѸ&mU)osڸzXT>Iѣ /..Vqqq%$$(// 6ܫ3qݯ8q@G~IyM8ڸq87gxs?QPPҐ>!P3vl6;uUYh#y 6nǾk1 pjb+SqؔYeѣǿ3;&#@Ms:*--URRR&MܳgJ8z̸2ɊkJ=(UgT 8t5qER'f͚=s1Ϸ;v)ԞGjbQrr;[!DeAM̋ v| 6J{vjV 5P[K%%L...-& {իDYF{Il***RaaaK )!!A22 NSC%%% v+%%eU* n*{ﹴgRq5P 7F羊N9tʢ*Ot~~hm3бX,jذal65٬dY,9 v1mAڷoߍ}݇*[^ܦzoU*m/PSA9!-/-ԉ_ULX\&IZjذa  v_UUy -z$/eUxpybZOlbzEUxbZU^HD\BB hE .f)>>1MJNrh[T0P&>͵lҰD50%&&H!11p#] 3fەPL>^JNNVQQ ±0g#$goB nj41j7@cΩx[ TCbb4h9W56^`{xnxooe0g.V @U$%%xjРSX-*DNynJ|--΋ vXVM:UVUwYfYݺug-Z(11Q/_~!={jĈ:ӔÇkZh6l %11Qn'99Y=qeNކHywv'XT3V\\F!CqAsa}Z`}ffϞ<]s5jҤnGч~~ItRAr9o߾ըQ#]{!`-ZԩS7xC|򔗗sѣe_O~au֭qHFFzY3f{9j׮Lx3ݻrJY,]ve꫃'6&OaÆڲeFbС꫕ ԆTf-ZHG"&:uR۶muUW2F o\\?.]LLJ]VFMIII$ݻq.RWY}ڽ{ڵkG}T<:t蠽{{Vۈ!T^M"ko>$Զ:O>ZfO.{ժU+ڵKO?.=cj߾^u}ג]vZt{`ڔGkfӕW^cǪGղeKY,OZtߡ sNp l:5qD1B|X unWffZ;z%jӦZn$-[K/>}{oZRo>?^6MÇ-Wvnmݺ5%z'g+B&MҠA5f͚/\P|1ZxA5rȰʨ JKKSf믿l6uAR/?a…*..__iQO^n_9wy7o >lrDbapf yD_I+n_H"5$i͚5z۳g$I&)ġ5j3QiiPפk̙›}ow7Rk+64rxckd[a-ZH_~Ν ޽{ռys 6LJHHPnn{xql~続>};4i$Ӊ'|JN=۷t nqP] UsJ+U8p@˖-_W͙3Gӕx@ɚ8qrssu 7hΜ9Gio^x!`رz!ZJ%) 駟_wޚ;w~uY*--K/mݒ?_tI'B6o߮oV]vUNNvءk#_ .i֬f͚͛ٳGzkjkNe[2c L&1BǏ28N:tHM4Ѽy4v*JKK8;v5ydwoI&t=63zSqkQ;M9xRSSժU+~yڵ?[G%\sE/R{}O>ۧC+oN&I7t裏3gO'ꦛno:3Թ瞫?X?6/d2iΝ0`g=ڰaNnA}Q>}yf+6mڤ^zI]t=\YF}:v6Lo]=zjէ~rqu@]r61*Wol\2UbkճgO믵h"ڵK999رc8FĸX>СC~{xfUPsTTaG&e屩 ]] ://29p癖Vv333uWT?/u>\^j›L.ZvEn̙3lٲH3D|IuPAAG{ƘH )9(CRNS&#V Za*S?}\s(!!AqqqZ28l66绩spbf/UUXp8dX"] 8@h\M*0XZ]֢v \*~w@"aQٓf0eGT@(v#]pb@}ˋf)///eq1B@@v]ǎtj "Qv>|XG5tctQ>|7á|n~rJ@q:*,,T~~>@läg>Ú;vR2, bt갘p 'N*yb)8TSM l&"]p $ WFT!TǎS~~~v;4mT G{UkN~~"]`&I.#"b2W+8zտj٦իsc())?JL&#]FD0nmT qqc`|FYԶX8f\8P\? '&Xbz8EJLL'l6t1HC,N())I))).VYVկ__Wnn "] b1(%%EIII.x 9b|x㒒"2q8%''GC8pKLLt q M 08c lI'.]I&駟jϞ=.E3fPΝ4jyuV Ud|׿Zi>UOJJSO=Uiiir8ڻw֯_>H.1bV.bG|}w1cuP3f̨J2ܷo{$f /UV:իW/I9sh۶m2ﯫJ嶷iFmڴСC5o3L5j?)77W999T!$Ƶ$\MMMp8mWbbb*T]uU_~Yo |PEEEڲefϞ˗l6k1\Y,5h@vox#I\r"eggСCS$AZPSaKvcWNbb&MBkQrr>C}.2222իWӔ)SB1NSK,QtI'i:sd_~tI@T҄ :6;;[O>d Wc@U b:3'%%E%%%Zb$Ds7߬sm۶jٲ?WZw.ItW*!!qNS|Asbɓu=~mݻwwdzcv  eoGS T?,[({GƍӇ~W_}UO>4}t);;[zW#]nX,jҤv~w|~w JOOj]v?m۶;vf.]իWkɚ8qbKVp&4 #GԸT&9NOOĉոqc5nXztg뮓dRff^~e}1Tdn׸qիy:tHH\:MOԮ]|uViFo߾*ѐ9{L'NT˖-%I}^~e9W-sΕ$wCxS585_kTEF.\TwxSUW]R^6K7j2dϟ<-]TGv5sLeeeTO=l6[ꤹsW%y뭷$I[lԕaQu7fϞ=Z~z!$L&]|1{0`;v?v+((ЦMd 4H'trl GѴi"]#]BT#ɉt u|^;ǏdXBv]wݥSΝp8sϩ8e*ݮ|5h@m۶uOKǎ%IPFCs߳gf̘#ǃիWd2뮓nפI4c f 1er8իW/ի1zuTy2224yωc"!8}7֭sR@^z%eff*??_O>;qYj$+޸Ǣ5kh֭#F̈YdNFVv;|VZW|x,m;={ |mؗի nu9!$#9f55Mm縢hhTqǎt a>u gە2 !77Wv=ep<|H@l"08:opç]̜&p! h֬Yҥ$iͺ"ZçpB o$SN{{kJGH222}=hРA76js=WN@"1e˖i%+VD`Lb͛7KiiX0GeE:{k׆4O23C-j*33STBBVZJz뮻NmڴrJwo`\8!zuꩧJM819U|9UjvM7)55U7|V&M1c'T5e裏>RӦMPA"Wx#IݺucǑ#'r3L:iqRR;}˦"Ы9sHoW,>|~á;SݻwWFFL 6hԩaNnHվ}TPP}j>۸q6nܨܹsմiS8p+" ѬYԥKIeKW\s f#Gy2LlQFi޽ڰaRSSոqc}jРu)??_ݺuSQQ\#8!r7t){~=ܣCg _]rڶmSW^QIInF^YgѣG+))IM"v7ylwݚ<x,m;={-!N6nܨݻK6lN@j N&M@1>D`p8G`p8GfE1=!PTT ~Caa! Pl6 #]# //@lˋt5nÇU^=%&&j)^6MEEE4  ys !TG`p8G`p8G`p8G`p8G`p8G`pHt7 .PӦM۲e&LCE:`kȑIҥrrrԤIZ^Sffq||[Ç5{>8tHF77iD999ر>r߿_oy?X۶ms?3fZn+!4I… C:'33SNSO>dX3gNX*ٳg!N^xaױX,?jJRM#GԘ1cJw}޽{륗^իꫯgϞ}8 Ν;k͚58>SNNڴi@,Nٰa?z[nQ޽u-ѣT֭pB%%%yBժU+=CڳgƏG}TÆ zHWzzN覛ns= /PEEE!NzĈ]ve6m{޽[=XZdl٢Cijڴ țŋ~oStjСUX@#Zj%Rnpؽ{ TKJJ~zk.uP*,9_rYd @]B#~W9Nvi!g6MRaaa4dR׮]}@,!f̘#GJ;e˖iڵ4ic=޽:ԢE իW/knܸQ_|Zh͛K.tUW]Ν;I&dXbŊ??bN߿_ԣGqo>ǙflRm,on 0`u^^^NRfff}5gΜj]?55Ujf>|Xqqq.0Fiݺu%ddupz|5DJϞ=}yJIIё#Gw^YFH5k>,F>am۶M^8ˌ*oN:*j۶ma(x%8oQ\p6mZnߖ-[4a:t(BPwnZ:JRSS.]hԨQZj&O~-ƶN;Ҷ޽{nFPE5rJ$uE999jҤIخ׫UVA`zŋ7ޜyz7ԣG ٳҶ=x%8tHF={?Q;vԇ~׻?{=eee)..3fNZjJ1FSGkĈ5j{Ic=cϟ?_Ç)79A~*m[hs͛Wk^͛kĉꪫ8ugsUVVv]dy睺e2ׯVZiРA5~x߿gGV&M4hРr[l覛nʕ+~zUi{zO?]\rϟ{o[ũ^z>tVm_X,effj„ zt]ݻw%\KБ#G|յkW 0@\r{[ZZZaR$}N>l_YYY:5jԨr>}k׮z`QZb_EIjܸ=\C)))JMMUUN8r w^ )==cǎ{9srŴit{o>%&&{yкu뼾YdZuk֭z7_/A}p=.znᆀ]tEWnFnj5J/"`$N-fϞ-[Z/͛T['=b:*>>^f?/*==]sQ4jԨ<_A;x *m?5|p/D>}z뤲!`Yʼ]v^{!y'IצMrJ^RsOkM~O?tAݡC~͇>~o[Gu9 wI2L+v0*~ ы8u/"өN;@t颔͞=۽[we_*99yX,~{4nܸҶÇk Ţo]_}C ђ%K$&_oT6/(7D[nYx̙GG.ڵ?𔕕 &)---!G8++\ht:wyGfYǏ׭Zs=;hJHHP||JJJCD @oVSLю;tg*;;?%۵kZ{~ ы:v옖-[ɓ'kڽ{wV8p@ץ^>@}I'~}޽{]-ZPnnnP`T/ũu~'F=_^d5sL]|ԩRYoϕrss˽رk/]k詧ƴUV~ϗ]vcǎ2dz֭[iӦ_~c;vh7|-8rV^wyGp8Okj۶Ν;qڴiz~.]z[݃wզMԽ{w`^չ~EAWZZz.. x#<'*;;[Zt~IΝ;5{l?^7|֮]5k֔;7Yg^{M_}n喀`T֭+Z2339j wnΝ;8!X5k\_ヾBqqq~INNփ>??k$$$]K/TIhCqƕrq:ھ}{Z-d2|\}^3juWN+NP@^߳`DЛoL+Ylٲi>}{SO=徿pB-\źm tFbŊr+Hҥ^w}WVtA4lذrJJJbŊۢErIf m2+FHl٢ ;H s|a{ަMJU-[L9995Yu|;v}mVUׂ GiǎjӦ r+KҫpxD~!ϨQ* p-p1kA 7ɤ۶|rM2ERrsp?v]N=T~iz7$rԥKr]6k&'*N Regg+;;;ҥP9{z 1=zF~IO9瓈2BDDDT{c?+W" 22...VcϘ1MҬY3tرZ1Td޼yeN .h Tn5%%%3g˗X`o^~O;}VsB'xu.__~ݻ7t邆 HMMq=|}}_M6 sv܉G?''֭[1flFvv6q]\x=Dt <^^^ -[D͑oƎ;ͦW>}Yu u>DDTVU]^,TP8ٲ!ײg ''ؗ/_V9DDRH +V(ر#tQgaaxYJ++_gsNJ?cqssT*Ś5kћ :uCyc?~|}H5mذaٳ'>3HRxBi?կkDvbGtE};wm۶a&pBCCqa|'hժݻPWWW 4vj,rvvvy&={V_D7εkꝊ <+WĐ!Cp lذOOOӧOǨQPXXM6,"" '''ƍ8q|}}b1fΜ3gҥKXx1LLLJ1qDx{{cHLLz쉰0\~Bn*]>6qa޽v`oo//g8~8n޼(/3gʕ+Xx1~> ʕ+ҥK5k|]:u[?CWWWDGGʕ+ AӦM5ҿpqqq5|JT_࣏>Btt4]۷ymBA||RVB@@RYXn]ߓQtap-&ucyS^]-—_~!C 11R:VuYW?)ꜣ@Myg~g̙3G~`۳g_4XO`hhcCrr2>|???W^2X~=8GGGxyyرc~~~hѢ 3f(UNHH֯_#Gm۶J_lll0|  hn2Æ O> ؾ};֭"ܿD@"ήm-N8={֭b1+_ףGlDo &p"ׯ_-6m $&&ʷƍ3DDDm7X,ӧw͛3331k֬Azz:<ի$reW={ )) >ĬY Jѿ~~~HJJBjj*|}}aff>}̙3000@Νҹu8uTޓQԹnߪuި[WUhds3+񃃃 "-SRR|A(B$A"ȷ@?ŋ'Ob4oBk׮T*33*#ĤK$\zU%~hذ!Z@$) F*m-ϲqe;:W^HII.]Vmll`jj*OT*_n*C˖-accXyyyvZhhĠO>z*zSN!//j'գn[ˣsEXUJ]U19ћ ZN6ލLeB*K.|2Woj/_~֛gz)))C upExyy˗^ݶsW% `bb ::k׮Ǐe~  J?T% mT'NP(ă/7"##ѬY3\rE?! QRR1UiSY*ײ ?~{tS]:WKuS1s&QE!7o<<<ЫW/ԯ_055ʼn'bΜ9h߾=4hӧ###.\uDDTܹsw֭Դ.]̙31b7ƣG޽{]geJ@boodۣ^zXl Jѽ{wŢπW_{^zɓSNk׮ݻ7.\2UTB`͕Q6~J;vdܿTD"tIII^cݺuѮ];tkWuo)Kuϕƪ~y1s|uѲTw\LlB훖/^_Ccǎ0a=Ο?@۷uօ7/$""Znɓ':u*:um۶x50СCѸqcԩS=z@nn.^xblڴ pppH$uɄ'O{hڴ|T|A>}`ii رcHKK9FKKK 8m۶ .DǎѠA|WU>^}})_qU;} `޼yh޼9LMMѻw2gn~quuEРA̜9"111`ۣaÆ3gq9l¼ypU_zÇiӦxw0b6M+Ս&Ɯf͚_s;>@ ϒ_KRl PXTᵢ2WPQQPHGڵkKi Lՠ-ZEt6l___l޼YaQ-¿3D8ѣunݺB`` e5& Q1p!""""Riĉ8DDDDDDDDz """"""""=cH1CDDDDDDD!"""""""sL9&p8DDDDDDDDz """"""""=cH1CDDDDDDD!"""""""sL9&p8DDDDDDDDz """"""""=3uo3X ooo8;;aÆJn߾ ddd(:"""""""GZ*yڵƍaiiȈH rvvظq#Zj'N(3>|(**xH7!+++?Xc Jf-EFDDDDDDD =ХKܹ3mۆVqppW_}-Zٳg8~8駟0h ox"`:t(,--q Uo U 8ok׮;e[.b ;v 5>3f+|rxu;W1gk׮NcH-LR5X,Ư/_˗ Fdd|Y$/753Yj?qqq C@@zQj|Mo߮0H LR2e +W{9@(ǂHz-⣏>BFÇ h׮] FHDDDDDDDaѨQ#G^^^xQ1YYY8y$f͚;;; &&&59гg`eeΝ;gHΝiiignn>}`055r[`O[B,#)) UQDDDDDDDqj@aYbYqqeC߯eNNNfei'O[ݲe ֮]ለHdffB,: """""aaaxYJ+ ΆD"J£&DDJKޔ `nn.o&o&"oLJ[䍌UhMDߘ!""""RvyɒJxChMD!""""2D"]Pmj.6/DT9LQ)+;j@6h ruAm""TG!"9L9&pHoYYYaѢE8unݺӧOc尰YL>|'z:""{s$""Z?#nݺI&!337Fݑڴil&&&HIIŋ]n݊wN:7o!"=%{{{bРA())<##ٳ'Le˖ƍDhٲ%>} :u½{W^pH$q-Çbۿ?n޼ ظq#F ;;;$''k/T666Jر~!V^-=I&HNN3$c 022A(N:D"RH|#M&j'&pHo $$۶mC޽憰0 :bBk׮z-aff&?xQ~}4lJu+-TȣG+u'-- U)))Att"*QFn2e ?5ROVPN\|/^T8DT&pH#&&'NV!jfذaxycLLLpDGGcڵx1lRa]^Z.<&%%fff?K.:H|װjcbڵ00P}yf4nXRӮ_͛7k"x饬,fF~~>n޼1c!FAAammtlڴ 7oĽ{l2L2ӦMCll,Ν;Vݳgܹsgb$&&")) Zk/Qmvҥ2oqƏ/_vpp(Ϻun:'?z=ZjmUQ ˞**'[=D?ZlJ4H7233951D"D"AFtFA(jdp}MMbaaxYJ+*}A$LLLAه괻 . 22RjoYSXQ>|ڵz777ݻuLdP,8+..FVVR[4A}6ٮ}:FBlڴ bX~|=pB 4=Bhh(4iɓ'ch֬|||ʍ2e!55ӦMða ?b͈AnݰtR^WQD"-[wbӦM3fGȑ#ѬY3L2Ekqpp%K7n`ٲeJb1ԩ%ln 9dDFFه괻֭@DDDO>ipĉ2cWXQ=25{*W믿P\\JR㯿BFF$V뫉6~z3%lRj7 DŽ G$/7^ X;vXL0???DEEW^8~8ȑ#HJJر~)v؁gϞ"##6V}_oݺ...h߾=RRRʭ"+0sL믿bȐ!3f 222֭˕EhÇݶm0l0?T?n֬Y8vxbpvv."u]Vb+^|/_YGuc޽?~<ڴiwbرTY>kDDDP(D"@ 2ԦxuTUhMDߘѡd+:iӦ011۷Un300^]p 4o\ey/FFFJo:eԯ_~):wzASuErva(,,B(bŊ>700i+CCC|2_zXj%Un7!,, +qeUXVdggc߾}pwwҥK1p@ >\e6D5SX>;575&"_L ٧ddT{X(^a}zC###BD"/ i&&&رc?M6ɓ'Vr/_ ;;;9AAA vرHOOv,uÇ! +(HnݺaРA ĕ+W0uRTXVСC(..ɓ'U&Y#""B!R7ej1T}Sm""Ĵm-%ޮ]RRSS!JAB۷^a*i׮իիW?@NN/F/ou}1fϞq?ENNѲţivvvpuuE`` f͚%O(⣏>BFJcFFpB۱|rVϟ ÇGѿiFiOk׮j]e˕ƍpBؠ۷oɓBM4Qd;+U blhhUBd…ؾ};v܉~ ӦMzVNѧO޽OƐ!C+[u>xwJ]ԴiS4hwy """""*mq+*WvzٳPŲ>Bd˲g_˞-b˛|?كH]BT-NODDDD@||,%%(< 2ekEڬ1x:hѢ>|P4 uƏ?׮]u(DDDDDDD*"<<<&""""""zqMUJJJ7: """""""8DDDDDDDDz """"""""=cH1CDDDDDDD!"""""""sF$I#7x8DDDDDDU$J!Jall cccD"QRR|C h"LUT*P(9 J fff066Fvv6$ 8Do^GDDDDDTI+oyۃ """""J6U3CaǽYI8DDDDDDU ʺH7!"""""U/DXV7!z{0CDDDDDTI8ч0CDDDDDDD!"""rJ$''#9952CTT&L(###ԩSVVVXhN:[nX|9,,,GG"99Z񄇇ck鵚󎈈~',_u~b*}Fb򂭭-NZj!~Gܺu &MBff&7nݻ#;;[oXH:t"%%%uk֬ALL :uꄩSaÆHNNƢEhH_1CDDDzFxx8,,,UΊ+4aakkAɿ=\)aX#ɓ'Jͱd|W>Ǝ%KSGQ>-TDDDFCabbB...ؾ};]>  鉘#$$M6mFb3gę3gp%,^X^+qyy'N7 D̟?_H###_z,"| N>+W`ɒ%JG}h\v ۷oGΞ=Ǐ͛7RS"ҬN:ݻHIIT*Ů]`mmDva(VVVxrssΝbĈz*`Ob׮]*C-0d <6661c|ĉ1tPDFFBBB~z9rm۶-~:{nL4 M4prr'\\\ڪNФIL2HOOGhh(ԩ"ܿy>%"JgI$}Jmff#F`͚5HOOǓ'Oj*O^p-<}F^^^q`ĈӧOcʕxToddcbܹs=zNXeك$<|f͂T*E{.RSSaĶmO~~Ҳ b83yyyvZhQ͛C(bڵJ^2nff&/7oެRrrrm۶wpssCXX;w]$).IXU),,D\\Zl 3}ԯ_ 61)U1p1}tx5;ޭ[J`G/˖-P(ĩS*}3f z~ӧOTg֭֯_@bkN>X,Ɔ PN_)))hٲ%<==w^#--M^:u'f̘l޼AAA@>}p 1'OƁRf"5@6ma$%%͚5C׮] !Q-$jcddPHD"__XX/_ 򋓹9W?z("SYň'JB(B(*Ůne@tt4֮]Ǐc˖-UnUO||<3n8[NQ>-T:fii @(bժU6m>}Aax kA(bWZe޽;>s9rݻw!O|_>p9<|gΜK(YXX Ϟ=Cdd$6l؀ѣGҰm6L2r=z@qrcݿ?w={߰aкuk1ǎCJJ =zK.!88Xt&J ܿRݻwDСJ#w*KMMP(}u5*%%%HKKCAAZW&V@cǎHNN=իe˖!99999JWQ @ !qRWL_|SSS:u ۷oСC?c֬Y9s&"""m۶̙3033ȑ#*R4vXlٲ ~z 0u-W^z/vXaÆA `ʔ) AVVV|oahhX~_~%֯__''' `oo bΜ9HOOǹsJ_\\M6D'l^x̛7͛7)z-ɓ'޽;6m4 )ts|f͚`oo(Xp!:v ૯R;VWWWt 4̙3!4cԨQѶmj9U^ (ܹ%%%u)Bczj0f͚oŹsxbiгgODDD 44z-nꛙ nRի- 1 j*|(,,9Sa?#G0h bnݺhܸ1*n- ?e^mشiٳgcܹسgb1\DDDW^8z(.]I&˕kkk͛3f ݻ2 b AQQp}c/b055E\\ƌbܻw˖-Ô)S0m4ƪLj 8PgϞݽ!78:֬Y3@bb" HN~Oٳű\dff5 ##C\deeʪ6H֭[;vPv1|3gO Yd vڅ(}mR޽{e z???+WM AHH*=Ϟ=Qy4iDvCCCÇuGFBB\~aaaf{"33ҳfݿv·~[jۣG('mGGG8::Õ^hٲ%RSSu Z1Yr]v8wJJJ0g4l7ҥKoJ]ʋ/rB׮]UnС$R}#z쉁ʧ]QQ+Sm۶Z>eLnn.?~, ߠW!"ۄ g~!"""wLٳgcƌÇw ѯ_?Q<"v˽ g޽puuzPOOO޽6.,,Ē%K 333m[lQ`ggvDh߾=ƍ Zt9g#z0cwFNNz7772d.] 4Ą l޽[wڅDO1bZj[[[NNN۷#;;;wеkW[ؼy6_˗/ŋ:t\xvȑ#ѺukX[[_~ڵk3nꫯK]BDo0@4VM+))@ YDT8eff?&ON:!44T>K0k,8::B"߿)e/׿%%%?mIcƌ'acc\p6mt݁pttTZ'H0uT 2| <<LUP(T*'n}ko"z{1CDDDDDT Q^Li,DMqH1CDDDDDDD!"""""""sL9&p8DDDDDDDDz """"""""=cH1CDDDDDDD!"""""""sL9]@DDDDDoD*E(߫kojMD_!""""rIRHR"@a$JQRR|C h5֚蛚n'&pLRB000331!H𨩾6wDDDDD7%y:ۡIm8DDDDD֠71y#c``ccc$pt7j7&pű]td7n?&pL"H!Tڠ˾ U8:A@hh(\\\|vyHHH@fͪ\'Qm!6 +k&Q,W4&"LPuiܹsGajSr@c>@D5k׮uDDDDDDD+ptK.*'"44ϟǎ;жm[=aaa8wV\ˏŘ:u*pIDp"##1yd6PwwwDDDٳ ;C;v܉Xݻ¶:::"<<Νƍakk+/GmŋJw˔H$=ӧO߿%""]Dq5:ts΅bZr%K=֬Y8z(<<}:;o?Nt" ceQddePt (fa  CEd);VJ)t m_C$|9T >\O|\6_V,Y@T||.EEEiժU_g$?P3gt[!IZv닰C뮻4h ծ][:zNǏ:4kٲ}YUREIIIZ~} =pJNf߿_ ZdL&,YSNرc< I Q5o<]xQgϞܹsծ];Iד)VU7n˗u!ׇSG?tA>5Dz2z7fYFBBB$IΝ;l2EGG _\o>׺TٳG5k1ӧO+55mV^l6r-0T"$`p_;dyٳg[n t}ҳ>O>D?-[ cZ5j(}ڶmN|r ujʔ)1c$iʕ:tKuɛJ>V^]III:vT_^G ۫xuozZn~;wկ_?mV:q[l6~:tPcʚ1L{]RSSoF'$$=%%E.]RDDkҥK{n={V.^?O UϞ=[o)!!AgΜٳ ]bݫ͛7O˗uhG޽g[Az44Z.^%Kh7n+YbEb9΅ Tb/_^O.(H͂ QF~%Xx~}RHH;#FfIOÇk֬Y֭[5dȐ 2ͪ\úӎ;4k,hz\3Ϟ=['NԲetyX"׫YI/+>vXծ][/O#FhΜ9vbccuĉ=@qJLLԥKԴiS߿?Ov=pvRSS] =z…   iGUhh7om۶:9sFђρӪU+~#G;Pݺue˖;vl@Bfݻ۲fV͛裏.]Kf+ɓx6M3fp_/Iu$e9C[pa۲etZNKKԩS5uT׺sx,o|zb ]rŵb(**JK,q]I>oNV 4ЦMt)]zU?>Sş#xsI&iڴieUfMz˟~,X *x4lW+N|.\q)66VskyJzJIIQ=^zIիWW||6mڤ~5ȑ#85wQzzƏJ*)!!AO?XpL:uhȐ!>m۶:jϞ=۷k9222>sJOÇ.)_~K@Tk0|9m7eY7簜us97~?vއnzsN!$&&z c/_>&nuv]vJo%ٹsd62F<'$ ׮]"%%Iʔc{#͹,ʲeGY7kt#`p$p(Q^seݔ acP*t!dRfffW*)233e2Oc\yseݔ ! G&I)))u(EUx 8/Mm6T"8JJJr;˺90=v]xQ b1láLzx2Voԍ 1#,J(%%aX)SWus`l$pʙp> {x*ͺ90.8d6p8\ɉ2|C]7 n]$p˙80z'o&9U7$n[ F!w Ob$088GH #`p$p 08?_pq}Æ I/٬4׺?\k֬… Oq(]聃[5qDu6lЯjxs@Bܲ~m_ n:B1,u;oՍ7 1Oц Զm[ըQC6m5jݻB ڱc&ODIj~zJII$EFF_TZty]Vs̑tͤ_~zTlYӧ][NڵSڵu EGG:,zjuQwy9hݻW%I:tвe4m4>ӊ+%&xڷo^z)33SZ|lٲ9P``eXd2|V2334L&J}]xQ .TrTZ<ϡeu9JLLTǎ TO7^uS׮]ԩS5x`jJ]tq%g9{Pō:DWus`l%-bt3$>>^իl67p)$$DtaܹS˖-ƍ|rm߾]Trei߾}SSSgլY3xN>TsSv~GU^=ϲoY߻wouSPwW_}ٳgk:|9$&(^S\nFnI9sxf&Oŋkҥڻw^~\ٛ4`pCq͋BuSIn,X45J+VTBB/^_~Eaaaj߾cǎiĈlӧk5kuV 2XT R֭[5|p/_^?zիղeK}ڹs Vc&1ͪ\Ν;xKJl2}ھ}{ESp&|SSi)z9<ϹY~>u֛/_\Ӂ>ӊ+| PeZ}Zv]v=a%ɹsd6e6|G{&wF<'$ ׮]"%%Iʔc{#͹,ʲeGY-,/t\5r'..Nuy7g6tP=ڵku\o]S 4[|?[y97ou^QR/^?\-ZpT`| =zW\Ecƌ)Cn\l_>yWz5kj޽^=& ҠATvmѣ:u?м}ׯ%&&j׮]5kV)[bbbԧO]pA ЪUlٲR3aEtwd2\r:$i1b`t$p}G֭z!}^=vMZZ233 0|E6lf̘={bv:{$)**J:zoujРA5j9nM*Uy.]Rtt.^(I^>S9edd:t^"44TVR׮]}!T(z7PJ%%%iڴi8qsjjԨQom6M:U'>׶m4zh׺ ۷OUV-T|yW>Lŋ?衇r2d/_Qׯ~/?wyGe˖u++됧˗kZl~GZJM4q5f]V?/Թ`,W_U\\233eٴo>K^8ԩvuv=:r$ڿϳoe_~b(33ӵuAʕ+u<7njժݻ[nZF)IZnM4jU\5kǏĉ-:ZrzݻwGFFjرj߾N8?{NOoϭjժlq>ujʔ)1cmzС/թS'o+I~C=޽{L2ٶL&M4I˗/ײeԬY368ÇWڵ?P}V„ND8q5jd={ꭷRBBΜ9ٳgG$}wuwJZny||A_P1w\Z|߯T+Wj߾}p,X ɤ ɓ:r䈖-[Q+Vh޽JHHvN111:pN8w}WN_sDV%Kh7n+WbE>^VS^{N-Rs={5zh=Zxq:,.ެ́J#Gh…8qb!5k֔lo-U;VBCC%Iھ}ZhCu7"rqQyڶmљ3g-/4aKWVllXLL飷~[~~9wO`UPfffhX_Q)SFVll֬Y_|QǏ R7u7!Tę6mڶmwQzzƏJ*)!!AO?gݺuzgZW'Ow}WX r\_8rf̘aÆ_͛i&}.\)SN:2d"-=mۖ={o߾l̝;WsX|NÇ=V~\\kF7{Vrv47֡'xn\vy8JOܒ_9m7eY7簜us97~?vއnzs:YbbVRnn+""סsι.,&wF<'$ ׮]"%%Iʔc{#͹,ʲeGY7.-J088Gp.Our~lA4ɤL_q233bM|]78'FphOur~lA4ɤedd:"PJJGzP79ex ܲ_6JJJ* %%%Kqnr˺90>?_nŋ@Y,pp8TZZ''cnr獺90&8fvח└:{cP7y틺90689;KƿL=0LM6U-fʕ+nTIҖ-[:uQzjnڭMj˖-WVI&)>>^ ڷobbbA w1g˗5k,ןgl"sI?~\7%I~zM<٭wN&M'b( @*Uɓ' tmذAm۶U5iӦQF޽*T;vhJLLtѐ!CԩS'kӦME:O85k̙3߿YV,k͛ոqcC=M6i T%IkV``٣~I￯B Yf\O? Yh}rN 67N~^{5=3VZ_H1O̓#Iǎ| ݾk;v(88XjRƍ믿&"ްa[gͮ]zU-RN4j(EDDhҥ&q%In낃%IUTbѯZda<8N .ԧ~;SƍUF yf6nܨ &4i7|3322n:mذA˖-#<|e6]! ҂8ͦ^{M#FPhhhpƍ]/]={SRRRgffEPF'NPF<Axro߮['̶-IټyZl:tm۷~{L[lqkРF-ZrʪVyիWO$I3gT~|NW^ժU4vX{*[{"0 <9͍f͚VZe[SO驧r[sNdȁe[ >m˗/KF+*--My=zTfY+WֹsnꜦO#FhΜ9vbccuĉ*0ܜwޛsXκ9Λ{;[nٙX#KLLjuak׮]$eJro=͑\VeeYw#Q=4B`p$p 088GH #`p$p 08?_PL&eZ'",Pv233k׮fp::Jz[{$p@@:xdbbk}zzҔrG[Զ 8H/00P P@@2224_$VShhۯ@V~~~+W(##gqVU$D RٲeBWٲecVQl(qBCC0P)44kǣV P)88a JR孶 d JPXywmm@AAAAf@ H橶 d! Ϗab7mRm@CIپh$pk# -00/ãxViVL$p18m@;n] 42eʨW^jժW.I:v6nܨ>H> `x^V-7V\D5i$uw駟7huQp8t9m޼Yo+uvܩ{m]믿ѣs=nשSt͛7OtۯVZٳG}裏4p@ڵ1'm۶M]vɓ'=v@*o ,b*f*o^3f̐l_~ET~}=3jӦ^u+J|g3g,jժQFiڴi[UVfXVU5jPΝq믿vWNjJ}]c 0 /F@a20JIҹs|1d2#S^hUZxQ*-[V&Mlٳxb;wΝ;տEEEiҤIڽ{.]Tm6\"Iӌ3`իɍjU5h ͟?_ڰaCJLLT\\Μ9QFiJNN$%$$h8ժUSF\V6PR&X,ݻ|Aծ][ _5|o>mѢESNy}DzҥҴvZr_ Fhοڵk5amfRյkW]xc1?q%LrtR;`IQ*/QHH֯_YhvG… uM6իy"/--Mv]׮]+"##u۷O[nU%prtRWիWKV^nݺQFڽ{kO>SO=Ur 6m۶Q5m45jHݻwW cM<5bhȐ!ԩiӦPtV!+88Xs=ܣ$߿_իWGlRcƌю;|lْkZZ>,ݞWjKjM[lm&J*)..ÇOioEiJ68>֦MIYl]"cbbԦMnݺ ɤʕ++**J˖-s{Z rf Qԩ+ai&1BV5Df]2KRjjbbb4`W'""Bڵc=c 1ިYf9jժ.wݻky޼yٺ>Sْ&Gv[֭[륗^t=3a5kL}1?^~ۺO>D}]wݥO>˗s,#sf߿_d=Zdlllx I׻S Ё$Iz}páyy[ZnuiڵZbnvEFF㏵b WAAA4hZl0={k(ڵkam۶2Zb,XPsXvl6:w)V]؇~~y]{=իWO/#ժ+W_<Μ9P}Wڵk V8 Ϝ9]z\SSSզMeffjڸq{GΝo~UV6ko_W5kL˗Wbb֯_Q1:[]n˯7o|P'On϶OLL6lv˚iӦۧ СCСCb(_?.99Y~ puUK.͵bO||$M0`IiEkxl)UVjՁro$լYӵW^k.UPAZj>e=矵qFhBӧOwN:ԑ#G롇3#FhҤI?\s,HIuQ+WNŋ .VZo (J*IRž={V2\C[ڷoɓ''ƍuw͛5qDI/ܮ];UZUǎ$]r5,O>c=z }dv;Hw}ug73ϸSVҠAԫWw Sddm۶W\YWVƍ}\߻woG駟V6mԿWO 7p@jJ裏t,ͦK>CHy`gϝ+)))4N:{CŢ5jszG7o֭[xy(I3g?E>zVZcjر:}zUpǏp讻R \=nM99wNRRz-}ss&^7(}f9FjC3g… m_A6m_կ__w}.]˫iӦjܸn}E8UNZ̙SNiڴi:z/_^2(m@IKLLeٳgiӦ Vpp5k9s_n]o|El2IRϞ=]z)m޼6w\IׇO}9+ծ];[g9|^}Uf5pN t˼b4ͪ\""" ^9>}vء9s渒dEe P<>5%%EWjwWBFiӦwfPIRӦMe2\ Gn{URR?y*VSbECeʔq=jժz'z,ԪUKݻww#*J3b['|5k泑 wu΃ӷo_vܹӵnX,ENss_[nݻsJ23Flw<87hĈ|㉊R6mTzuo?*W͛'I0aN?ʹUQz5Сۏ\ig{QRR"##{n(%%E}ݧ+W觟~*RLFhy9u$k׮ujs٫<1>u IյkW͟?_SJJ^}i޼yڵk7tιb,11Qׇ~3gЪUԧOlsx\|YOVVoiȑn̞=[2223Ϩ^zJIIs*!!A?|ٵkܮ}v%$$hϞ=u[nshVSSS5{lvWs :{l߾Q=p!9'(펶 _8.ëӋ|**m@FVZZC-fmD{nM\ Vzz222W?t! 7Ջ4UͶU%=pG;hg04&GlbB[W[P2w_R8mDnm$pedd(99aJNNVFFFG[w[P%Bjj*s?X(55˥y(YHʕ+|AHMMp**(Q݀aNU,oU% P\r/5(dfV(T]vMu808ͦ+WdX* ×m%VFF.]@Ϗ6p<*b x%^ZZ@:$XzzҔPVq#UCJOOdVdXd6e2|"nWff222t5l69_'ꭧUA:02* 088GH #`p$p 088GH #`p$p 088GH #`p$p 088GH #`p$p 088GH #`p$p 088GH #`p$p 088GH #`p$p 088GH #`p$p 088GH #`p$p 088GH #`p$p 088yYC #,,Lvu^G ȑ#<>uB$(5k3hxxC 8b_r s #k;Fnn*qB ĠKP 4V.ՠ e[|V}*n*X)>,ZmE1P؄Yb).HD@ B!A(I 2$C28s2<9}9'qd^ଁ0UUU6ǏOuXojjJcccvڕ!=6iҤ|C~֦6۷oOCCÐ SF oJ|4iҰ2TUUUT[[[ Qh.5Xachvi5P guVq]ߴiS/F#pկ~&I<|+_ƊF| #<2IrqǕK ө`9sf?}kM6'}ݗ 6@FN:3O0ST >9sffΜ {d߾}et!jjjr}oݛK韲~$G /̂ RWWŋ qS (O}*}{key$~xdYzu+7|@/y0N5xl#0J͜93{,Y$wۃuֵ?3gн;^6m경m:}nݚ۷g…Mm8矟,]=iں_ueٲey7\e0 |_6Iz*_|q.<5k0V8 pF}IG_{|:[|yk/~qݞc9&k׮ /apRms_zy睹;koJyГFTVV77.ƍβF<(4޴m3>k z:բEf͚̚5+f*S#`j՟:] t>gΒ%Kdɒ̞=;W.S#mF'|23g{n'#6mڔ#<2k׮Ծt7nF$#pF/--- s1c矟P!]oSmܸ1_QjÆ {`\Yxq֭[$9묳:=csק&wuWbp z۝b7SWW[lٲG?$fs秦&O=Tn2W bMMMYxq|΂ `577箻-ܒ2T D0۷/7|s.];/{rG&ykQ'x"iSP`1bÆ r ] NPp@E)5X!]B!jB0ڵ%+8#Pssso^o߾=e?5,!00p illLmmmƏԔڵ(ܜ;vdǎ."P8'(8@ p 6:CrI'S{sssVZ[`t$IUUUN>zeldb9䓻 oTVVO8`ӧOI'ޣ!N pV$sxӱiӆ&F۷gʕ=NjnnΪU7$۳jժ.C<ٺuk*LnȎ;]֭[e*FW__~9x;/|}}`dIִ?0sQG_׿ڵ+[ZZXgϞ[.7R__~_|e (m۶L6-'pBN lN8kR=sOK q夓NmvmO̸qX%բEf͚m|^|Q+8ںuk0k֬io{p¼eln֭KjժZ*?.wod.cT엿倮;*38`F -dɒ+;OLC:\y?w.#[[r饗f.`o|#\pAjjj] 7q|W_]RnpHvvޝe˖(w)@78cTKKKz}ٹsgz {~]R>!J<.pr ] NPp8'(8@ p NPp8'(8@ p NPp8'(8@ p NPp.w NgƌI_~9=Xz۷ӦMo=is1cooo̶mT!(WSSl޼9wygV^$|c;\uUk(w9dƌٴiS<㩯O}}}VXk6Zrg\ Q@Ν;;___;Irkm@pFuoVZmsGu԰5pF$Ikkk!$ٺuk^sm}b1`[vmOLlٲ%[Nsm}br?O$'R[[֬Y&k׮Mkkkjkkp2U)TcLiT]M14*y(8@ p NPp8'(8@ p NPp8'(8@ p NPp8'(r6mZ~~/y{rᇧ%7nSO=˗%gqF.tAڏ>}?o~ygT!(wg?$YbE|Ḵ}C9sUWnȳ>[R=\veIo}[뮻rFoҥKSYY+"Ǐ/s@)(}(555yGz|k_ܹs;4~^x!SNg]ƊpFSN9%IK.vtMkkkxN!2}477W_ͻI#8b8"Xkkk***Ԕ??lo8qb,Y~o+_J9JQ9oF*++SWWcg}6G}tdӦMQQ?y`}vؑlOKm@ pF?˿6tnyrfy׻ޕ;vT-Н!zߊs;>-z7qʣ1UUQgϞlݺ5{'x;cǎl۶-444x8㌴䦛nƍ0L6-۷o/w?~|6nILҚQ "#<|̼y2o޼ܹ3{ ?Os~2gΜqiiiɫY|yv]2npƈ۷;wQR~1@ p NPp8'(8@ p NPp8'(8@ p NPp8'(8@Ueĉihhco&I&MTJ!UW]~|ꩧ8cļyOSg>!1#HⰈ1xr `XdI.\8%#JCr-eQ:Ǩ9,b Pp,b 0F.Zkז<̇>z꩝ڧLN:)'tR?LKKKHrgڧMN;-vZ/_%KLU @[xo߾<#Yre3uԜ|932o޼TTTN9ׯ_˗cX~_E#HV^^x![UTTip>(0ⵅ7{ҥKce֭>}z /̹瞛$wSjp=[+ۺuk~[.^ziN=<3Ng?YQ<6lȖ-[SNɔ)SOOTht '7_ײnݺs7oνޛg}6W_}u=ܬXt*((S۴GySx/GySjnn޽{;=F<TȚKv o:կ~e˖%~Ӭ0fΜ$Yrey晜s9C锩̙s&If͚իWGMeeeN=̚5+ٰaCVX}>?>~x/_.$QNH?͊+z\1y$oMI@piݙ}z6omC9?PL~ڰaCN:餜|yᇻ7gΜ$K/ԯ_jUVXq %:uj***#x*++SSSөatZfMN;ϽmO??PL~zsI'3Ⱥu/gƌ93˛o$Fcǃ>N;-^xa}Wگq??I|.#Pӯ<㩩ɥ^:+rHr!e]޽;oưWY?]ve߾}bXvm/_:(W_}u>#Huuu8,X sAeΝٴiSKa?LEEEN=Ԝs99sАI&.˭ޚ]v zݵkWfϞ466)+W̩;wW_ͤI2a„^P?i{Tsn{zg>vهvX/eϤIr饗#Ȗ-[r뭷Rwm۶Caʔ)?3fdƍ?l۶m @}Y~}ԩSSO} Ɏ$I:<aNq:C[qW!Pi~jhhȷk9CprХ|_+m+]Ёg544[oͿ˿lggycaАۿ-wϗr08'(8NMMM.z#頱%c=@o8ٳǿê){)w@ pJ qaԔr.hm۶L0!ǏOu\MMMill43D7+lZzê ZQQQf8Jn9\jc2imm-_H6~^0ZZZ ߠmo8cH[b7VЁ*[KKK!m"7,~0zܹ3{-w](lmCmL8&MJsssK/B0XLRecӧS57y{{N4)7|s6nܘ/}Ke8^zi>iӦU֣! VK3B"ؿ &nȄ $7pC.\8,HT[[~ 2nܸ$ɛoe˖妛nv\y9쳳{vm{uESNIڧ{va'>~|W1h;{frH9wCR9E_x _t2U5\sϝ;M &MT2}/g?ڧM׿444d͚5|+"Ǐ_/<vX.\m'eUZpa͛7xG6oޜ|;={v~ӟvZF|3ɼyr7Kccc***rꩧ/O}}~GG}t7e[n%ǏGիW~y;}3qf׮]=3Lk8qb.\;{`3L2%_|q{+V)VʓO>gy&vʦMrOdٶm[6mڔ{}*Reeesqǥ*JZ[ufƌ$?xviZ7lܸń:m7NR'|r>NuEnP 0W8HqAKKKKEEEek&sNnjFرy睗;/>}zvޝ$Yzu<կ~5wuWo6Gydƍ|;m]l6lțoq[n_ccc֯_ߩm9;vaٵkWН5u/O:W]uՠ`,8HSSSo>XkjM8}Qt<\kFUՇ?N;vȺurm?qޫ̙EK.Ν;sg.k?}̙3ٲeK'I7oޜ\r%>P{ɲeя~~466vj{sqey7$O?{y晝I_IZ9眓O>9<`jY\}tٳggt;Gݼ:~=Z:<=d޽{v#HΝs欳ʢE,I6ƍKMMMv:6W_͖-[GOlnݺlذ!RUUuQCVwn=@ڵkWWo޼9:&Mʌ3hѢ,YuN|S{0\$Hz.r8}Bu$io/|!6l`9#'̽ޛᄏz2vX,]4sw'IyߞKSOMKKK>CҥK}/_~}\ve~7|1wqG>Ov5\]v{__o~W[[_ۂ `'O<(+f+̘1׼Llٲe֭[HҔ iM_ uFqcy.^>'oMK]W&\;o޼1LNԙs#uuuy饗}]nSI~M ӧc_kkkV^;w ޼擟d>O o=}Aݻw? ɮ4wxn{tS:K8iDN_! yNo t%MTާZuֿxvSSSSvVC7hO\v[ZZZ9tk|0~{WUUqeݺu7&y3}UΔ-l)tӗ/=(.+JUv( sɓ/hhh8*Lj0F L81}O<ėIFߔ>':\Iz}q! q4xܸrʯ޽I&uڶ(L81ڊ'x$B»:v1kI?;w\6iҤ7A>fŊ[#o:N߶x{&U֠g B]OԪ䭠5]Ojڼy󊚚'NxĉTVkVճ>8;v(wξ}z8***R]]L0!;w_3ܞdw~t=w5Y=#rSڧtvj[su:S&ɸc=)S|tܸqﮪRٖ氟3f_.wjƌٽ{wOSSS˞={v644<o`ڵ?[ oš)ަT֖.{zݝ! :=qWkj$3uuG{ cEiδ=:)}]{uCui[zx.2$xoۇ}۶o{=:.~Ԕ"`ptt aJLu56ݣ?uM7i{ܴiK*ttKR>G$L>MK״) rFLPӝ"8]i;8tM6mpӫRrchBuhJÜQ8#ozyץ,q Gב4M[pt|xmkI8ku0p]m*UW;^t u 3pUTJwLʼn{Yu7婧JCvB>զSnZUQ5m#pZy*Vpz=i;_:¦4)zU V 7}*)~6#q:n:.ҐץN7]iM}ӟ~6\#pr#otqGov}:]w_pb-^Ux3eNQP%]0ձvה.d.j֧uFO w5M0gM g0XӨJ_wwWӫzjmb ”n:T_IumxO%IpܤFUz]RE[j/N"3_'.d976bgx(rw+"ԧmmMiS7I1GtկtLO#q^~}  . 41dB8](S@2/s$)蛤NW}q50hӨ} hPqw6 {NWtu>iMW}z hҌ7I4&]%}E9qڎ5yK`ӱ?Mw}r7eYxw*5T!N_8@|X6)I]ݥFtx?p8?{k 7ݵug8Ɂ8tYʣup ˪h!@Q6Cu-е9kpz0!NǾً=@Q fr #t{(jp u 0Zṕ0 o88@Up_;dRh}h0ɁG!ÛddE aFwE3!IŸ!5Bu$}fk:i3 ;G6;Z#10 ƖN6#9G#P+#*i3 0eD7mFK QQĚ`1()bM2ByMxtmԄ6c,|FFepfch6Cz1??$c&)%1fR=B01| F:IENDB`extension-manager-0.6.3/po/screenshots/_12.png000066400000000000000000000257621477302130300212250ustar00rootroot00000000000000PNG  IHDRͧ-bKGD+IDATx oU O3*yԩʠB P'(,8h8hјB" 8b~5g {gTuo6O>w[l9s(˓?~ V^MyڹgϞ׽{|3v`ƌWczj5ZCUP?K.aP7 /0u+U{X k69_xFj*IG 0xܹs=8}Vmtaئ95p￿p&Qma`W.S DS 'wܡB>{UWPc^PcĈK,ʼy?|F_L'a…=kUY%':O.ˊ=O8L箌8 Ǡ7S\]3j$G~S@A*Ckio;a]f ody41_x;L+hf L | &Ao9l#0Qk:E\ngjxqIE9з}qƯUwl )Cf9)zg}E|r\!>=8u Bq+o63pD5߸V*De2GeeRK#z5ծ D;6).²eˮ* sakBe6ťp]ܴ2Ԗmݦ)vEAǎxےZZZN9*79et P^z)T3@ *\'>QLT&*)c$A{ꩧJ_vi9W 8 GiYam94a8?u]BeoxS -@U(s$[`*㡝iAY*U+g ݿc&uS$|&[fY^1u_Z< W'R~Ue(Y$U(4R$6#2Xt@ LT&*$әpD9DF}t  SUϹ262$Πp~ e<3BHo*nPk6[hYOsnN3ieŕ13F޳q5ӿBUe3| FCG\Nx%R[8CM<΀_EM\obCjm6gx@20B.~z4 ";!(5X R)@XS5Ge2g۶mLNy~N ypb0 :*J/ JP xzˬST~g 3g8JY=`Ro@?#SezڊLR.nk>sҼ$DH Md{ 涖- 0g=f p $$#5"(+b:2@0 {g۵h&}VD:b +i)b><[7ɯ,cb$!JfN,0Ęxe1b%ߺ2_tECUsl61*O>_̉Eb)1,v_dAP\05_*#K 9MCI]n +.=\e$=X3m Jeic~-$+6$;G|`TLIt 1{U͊pk&Sb͢}g6)1 twy1zB AL 1f̣<|`A;搼kRVbY'A豌 #R⠩fdq. P7%M9V}rϬgZNv49v~o666oWa/1v)sjSH(9;©M}S+ddN<X12 1&r୑eKyb1 f3&P{@N ],#c|饗2PFp C~E`Xj܇]wulO^1li@qVIVm R;ӂ}$̤5MQJb«J9!eĉGYA~\A neP(\pJ(pJB>eT>1 &1 & 1@mrNjq=uβ`ߝd%2G˓ḃ~h̞={XG}$M&֔lot6nr8 i4

M2TTYˀ5Y1Gdc=KNK0&G @WCL.;%]1ALV1c+0Pf*Ǥ8ZMvS9Z$8QgEwn5b-9d;~S9 obRp$-8f*11bϯn\;e kkiW|MVƍONX#O?!V bALb eŽZ(jCԔޒ ̬\,yтTׯO~b$PAxM o]?<Z&`aFqso)zW'LL i:mOcPs̊+ؚ hC ݂\YQT\C %zO,<~JL)&5bb_TEf͚EuȜX`ˈ|08VGjrNS2 4cVV-t9 1X6#uNQ#031 & 1 & 1ALZ!X!˿c·m戯$$fWqp- ѐ_@`f^6k(:1ӔТeV`orϔ % W16lvZʛ6m9rM̩ -BO-$+41K!9&b7> )9Дޓ ,vjcLL&xȑ?6'1?iq^|M5o2VE bÄBL[1 Ms~1Y&41z:Gԣ@::t2?/a8vb, *3 1 & 1AL b@'L:t@V@AJq+k:~ OiB [ a eHu*~:_s9ZqXcGLa2:8%D魬`)Sdr= -Z+UZ,ڊ2W1"<"F L8$7ҔbbBc* 4… ihK,uF5./_9AK3y H3_GcXb76qS(BJ 8 4?SbyL {D-]M |SbREMFs+}*O% F}~Rb,P&z+OY&#zZ|PK={l1^}6Ν;WSΛ7O[+ IѣEҫ÷npOM@0C,7J6g$s-ǥ.{=6vz)1>2~3GÇL%hU "+\|h`zo1h>Zb3t* |\1$x2;{7 <{ǎqdP813#t>Ps-xKvPy#mYee kqcޚ54?0;P0JkN1yb,<QR{^)㲷>`*O0LI0y)LAp&_b&c̸z(~(*TX!%7ֹ'8%T&&48!`8x ҈WV%<*wcFz(IT&B0UR(.J/DnNpB'M1猇%0\4bګ8H}ir8J5ِ) f$Z=FMĢ\b{8h0(כ\F U#W3F>y|>ŇV"E xc8q`_"JekmE;r|e32(,ٴ`LIK0i1>'-opa71nZFOߴnfc<>F`p؝N'c$&]k}}v31Z1Q?FnZW+c1FL&0rkEncKh_c{1@# `3\4cq9c&{m$%Q0$n &`t2گڷ$`:n l_m̯o~;׸,/X Aj[WJkJ'if$[0q }A-U[E*l>b(Ҋ4GdIf~ss|Ϲkb{b]Y.&ws?sb];}P$TP!Js9*ڵk9F5TN#E%aA$sֈ-P;~% 0"< qϡQ_R~1S9|NXضmP8ݻF(į}y.,if./$>M! ަOCy!˼]G0+d'⟦ݻw.ax?\f O"a8oX<u]xZ?zO.kcz'I$LQfצ`ٿ?Su0N~8pc$ 6 /9'KA|PNF ɓ'恫ٳg~箝8exX900z)X! _-qzZ`qξDSomg3g0}rX6|M^MQֶ2Ec˖- {Mf;R7#'B}?~>2@Q 6D6:z~rС{ٵ5PԑG`Ξ={@dYa{13H>` Mc;QAFډ08cYBM|r2LCDAh,B #: #" 0  #@ѡ?rb7rr \Gs@4TW􀖳 !gKX L Ez-3%?ʉ dLR9*r-\s rhD:1|qА ֭3Exätf ]1cP {hgޏH!2rؑLpma Uw̓3z@*tZBH@aEShɿXQyh$ 9rQG"\î]aBDzeZBR@hmhT :0`Gv Z;AT 00a֭q1ã%vmٲ17[YwBUqܹs)ypdCgMo}Du0ޑMAK'(a<B8| 2iLN8G%0d*(ym8}|AmÛ' g$|AH< O1ВʼnAn^=|Ix]>>>!0ࣆqTB,]38'AG#2gQnMuh`!V~ɄQ$~LȏkbH^ xQ=܃*crr҄ 1t5;;;\VWFo{b0~q%xtMv9>XtI5]Adeuu/,r#o夹4(L*|K' cb 6}܊!5D5n YxHVnюӉ.̡k,$> _&ҀXyb0aB0l%Ĉ*PRcXDS``^1ևl@ѠIs7%:e=ڐb9 EPD0u m\sEɔL$ Ha`*miM?fO/ *,>+EOFgfdXV K& Ɓ֒ .bAJN GlՆd RahX,r~;1[=RB&|LhU*/Făpϟ=[&ѵlߒm:v6MRSG0KDAFDAaAaAFDAaAAFDAaAjNcӬQ xRKDj!?w*NB |GMlF[{CJ8!hIJQ32vCKF=Zn avߢmab>?rHGK"y%a`J K@}v!I奁rF-7”ž)1}ヒ)G]pn}>B;_T䕏za0 ӌvN+2 "՝K9E$ [裏2M$ XPC ?#x#O Fð,A!ꫬ"p\}RO8AEucDI >&60l k&ޢ`[fӎnjZCvEècqp&3gPK⚕0z6F[afӧO{_4\_zǪq; [83ǔ|n1:N_5Q/2%o âQR36Uc)șJ67F"=8rN{ʭ>SJϡaVz-ٳǎcaAAFDAa- s 5@; H&" 0 ##" H%nR%W}^. ͈]ju5+ rq!C&ⳠLۉĽLbc,v ޞF*K_hTl95^p?=Bdh>S4^(ЅK*"CdueB@ 4˱Ba'|'H0*knsMlÇs Ap("'^ 0YvI2} `F4к^ hƽJ}966lٲ[X4 FR1f0 e4 6m*' K -[`d.^.Il Qm-.Lab5`\B䄊!30cU26ZÌ GǰuL+][, 6/k uָ$XjϺfٸq#fOİ"!˩z MrG,b/O<& Ϝ% !'>(Xu]`4$4„I1KM_.lQ? ! a}䍧d83~l°r/ObsD9tL켻ã`9pD٫0 tJ'4kC=LdKB_o3Z21$KQLjIR8aQ{#<χE!&t׎zH9.d0TYM7@u36@z9,&jDD=L:*%J0H.Ñݵ7Td,+o0AeäLg{gwF ý#\opphH9<0fJN1s5kf$35-Wǩ_-s_iw:S@)O9-pc1OיlwOLf]ً?SlЭ5{_G6dn0pEȵjŸ6^pIENDB`extension-manager-0.6.3/po/screenshots/_13.png000066400000000000000000001401771477302130300212240ustar00rootroot00000000000000PNG  IHDRpA%bKGD4IDATxw|SwFw(Pd x *QRDEPT,e(ȕ * rYPW2%iIM{|Py{| (@ 95'56ЩiFM^Ԅ@&\#5]ssQ xW-rTWmœxubMTP MBT*:/BEU+as Q*;*7l 'Cʨ\ ᨄcUnNꥅ )-t& JYE!gxz^r㒁X&ro$TI7 4)Įץ7Sz䨰0 nf)..m :TQh#yu6nץ R*SM]rݦ*&梋.+;;[G St:UXXئ=BZ̸2+K=|W]\n>~ UVȶjVZF8Y,U9= Y,]TXaaJCxNhm#yY'/ˣCmr᝷ѣZi`*ΰVፋjULLe"b(**2Bl6"##;=nJ6ڐG_B(8 |\r˔RohK(pHK~wwv]7˴gy@yP'_vsY^VS(7&Ifl²K8K([MPY\"""dZ?ol6 NE~_EKg4ty$W-֒S{;np_nt !{F @E JLLT\\{r ׄ4qqqJLLTBBB pҲ%Fj3_}jSm*PJHHxheee)//"/~e\fxko¹5?g@8(؀O H 5JY‚-p|sTiýqPcYVM:UVUO>. BlVNt饗aÆ֯ui߾}F .bO\rԩtm۶M+Vۍ./DGG+..lj(oKz$G}=׻{{vNZ+,Bm۶I*_DDDhTn]IOOק~ŋ܁gZ5m48 ӧO7$p b ͞=V1o%!!AFې2URe8 ]=WX?h;ڧnݺ;p8oTReO?]l.]hݻwO?%K護 pk l/ڴiMw7SO=iӦ_U(Wx7|S֭ӱct9w2d/ɤ3gVy}T1*z@s_MyCJ ¥NyTkVd'NT^Ӷm[#ƥK.zgHһᆱuEݻwWvԯ_?9o,׹Q5{ljԨQFӱc4sL9%[4I*Y`H_3tP']6mSN;v?OBBW&LЎ;$I]vՐ!CԤI-'|R^xaz=E)_ p ]*+Vx衇mjjϟ_NNc#<իWOvurr֯__ z b˛7oӧk۶m?>}נAt1M8Q_~.]VZiĈ|PiWRDD^|ųjѣG+::Z?bŊs6TJ^zZ|V\_]A;6+\r%u֕ݺu4|pBVDDD8 .@?}QI̙3uyСC:v*!4Պh y0`q5mT . t'OV޽uIڵK:t(uۆ jԩW{=}Tff_=z~YVVttrss}:u4mܸQ^zyfs8Fy :TzRNN&NcǎOɊ֘1c4fիWxZv^zb/RYV͞=[+WeZuM7QF޽/_e˖iڴiڿ_WLzd6b w7Bm۪y8p`Po(*ፋb]wݥ_Ɋ q[N:wkTWVkm@&N_~E-Z?YfӱcOT.T^| "Uz_MRSS%O ڽ{dE4nX_~?ÇfO>7n5j$ŢY~@]<4hoYСCUXX׺;O]v6mڤgyFRQ૯Z7VDDDkuQ^7x(ág}P&Mg-0`>{oٲe+rנzҚ5ktpqjݺL&l"Ζ-[tw(662K*_ѣGo<  &G.Cs ,Y"쟳C)񔐐ѣGꫯrLVFeP t9ånw9縷j4냣o?~fϞ-ZH*iG:vl9vݪBN˜>)55U)))^ @(ӧz쩛nIk֬Q t͛7$mݺU6MlM{n߿_;w_W-^=/-[lַ~[,YfꫯTz1eܹJMMu)I]vƎ+Iz嗵qƀb9kyLLL_^iii:t}[OT%$7OV++K.D3g_|C:$73f+%Kh^jxɟNԻw2ml6_1YE±JK2]hEŋK*j/ @xѲet-cǎ֕כD?eѐ!Cԭ[7]qѣ&O,wjqMm}Y\AɦMk[wQ5֭kuKDDڴi^zIcǎU 4eY,U:BWtW_?ѧO\OK*((ШQԪU+裏t1wkڵkOHHJs/ {U{~[uG}/j˗K* Ϥoxbw˫`oeӊ+t 7hȐ!ڴiׁ;ud9NoCicQu5k5kI&z5a:ucl8!j \>w˓T3>p4|9dd҆ a;YզMk:y:w\222԰aC :T˗/׮]ԱcG͟?_?SVsiÆ rOUg۷O;wTN-[EZd\vZr-7o>%%%)..NӦMoV>1%##CcǎՋ/-[J*^znݺ w駟$Iڵs/ꪫԡCuZjiںu֭{Giiio%I7oV~Fu֚9sfs9Gsѹ^vQ]cKF,gϖdR~4|BөSN)11Q .԰a*}vPUXXXfӪU+O4ḯ Ϻul-7 >jɓ'U^=5n\p7#ӧu/oɓu~I~ws3gSf͔.xzGt7oSO=c/l?$ݻwW\\=_~Y۷o)ST.]?Iv[ֺsuwȑ#d2t:}q _2224n8͜9SNS'O);dRrrƏWftWɓ믻O6Mcƌ]wݥӧOkΜ9?YKi!ބ*ɤ~I)))ꫯ.(ݮ3gjݺu߿.bիWOb s:ȑ#մiSr>װat: /ݎ;4|pmܸoםwd6^Gi͚5?~۬ZJ˗/;EFF*--M^{<^駟Yf׫W/:gyUz8 {ў={$I}qY,IE̍5J&MRFFe+%I|>3:tHfY-[T^ԡC=Zvmlڵ$gKd2iȐ!jݺ2222o߾o];wk /P[f,ÇWf4fO?޶,r"upή<wvE\["++KHEEGGXqիJ~m޽[WӦM5a޽[{ѭު޽{kС4i X,%$$nHEonv<ԩSUS$T HTԲF*&K3˓nWVVay/}i˖-9ro:uh޼yԺuk+DE1 &LnI7t}Q +њ0a {GSNUW]e@eի"""qFzꩧԩS'EEEq:Zz~GժU#u]7pvRSSu!KjcժUz衇rJرCk׮UΝ%IÆ ӈ#tM7iϞ=:u{WҶ))""B=Km޼Y֯_o;w"""3(""B)))7˭2E_զM2wu29|(ZjѢƍx5o\Æ l￯7jҤI?~ѥ@Йfo^_L&%''ĉkTNSNS&Iv]>{]LL.\~})͚5ˈ2CΜ9s4n85nXǏWBBa}X,j޼vѥ@ 6Loڶme˖iРA:qDqrTQ-Zlּyt:%u'rlҤ,KV}.Ɯ#Iн)y?էOTݺuU~;^ P|+* i4a„iiiС$w/i]q9hSnS_ufذaZp $I/,J9:uJW&MMZҞ={ӡ?~J IO /ǫQF~Aovpa2ܳ+g^ff֭{*233Stw~;k}ddffG+޾w?͛7Ox㍊ 4h@K.UVc޴lR_ ],X I|BeG}=c=ft9!dx#IK,QzMITnݪLùf J&33S{>5YVV^z%|Y͋/(ͦիWk?8RSS۹ˮIN:~[8pڴi>L?-[Svp8h"V5ݮ,%$$yKӪU+IPY?$uYw}wu @رce{{4fw}і-[tm~{ꫯG}͛7kŋkjݺF_]2e6l'Ojڵk$iڴiz'pBjʕ:puzu.z#hرڸqۦ}Zn}ֲ'NOՠ2TV֛<^^{nce9h=X{]]?)ԸP p~*=g}=SѣG5{b0afϞ-٬zK6l0lCuU *u,-Z\Vwyz>k׮_I'==ݯ.PcjW_՜9s\WvmmݺӒl3_N/kyDz=1Ν;թS'I"I-l|_deeeiܹg} i>›36mڤ={kUǎՠA9=zT۷o^ ^ZNS]vUڵ6==]6l@HIImݦ /իWk޼y\-pΨ88֭nV^Z7n4 hG  mܸP1 @#q8gl6K)ByyyFR3.!p?8gvedd]FHȐn7 pddd(''2+..NѲZ-lSvv6-oA?(ݮLeff] ]B@#q8!A կ_QV-K0~QXXht @#q8PM[z.çf͚iFv|AX2`$iΜ9ڷo_nݺ<?Pv_|#Glke>}|2K|rڵK7o֬Y:l֦Mbt~3Jllۧݻ]veڷo_A˺_?ߖuFu}Ν~zWemٲEP ƥQttVnlSnnѥeZxӊ+g5o\SLf%'ԫW/oԒ%K׿5(mVK.ի5sL; _|;BuE6m JmᢲgUJJ$iر̙3%I{#Ghݿ_:u6ltjƌzgF:QbQZnTժxEGG+33Svݯ"""4eK111ڷo|I޽۽MBBRSSխ[7i:qߵ:uJ{ $鮻r?߲e.B5JM4իW/]VM4)׹5jvܩ'|ҽlƍgϞڸql6zY[o7-ܢ#GW^^8q 8POJ uv?TTTgױcGڷo$iժUzW0@ U 7j-}ŗ[nJNNV޽oͥ_~5`%$$՚;CiiiOt}d2edd_iF6lPvv~'}>'ɤ+B?*tkF[={ Jmt=څxG5\-*w}ݻ+66V111ٳK 1117jULL_ݩ5j[9rm ]V]}/B222ԵkWM8Q1\ZhkVCu/ۼy $jR\\;Vc4jH-Zз~+өFy~w)|-[x]hCmݦ~pm.yjѢ$۷O7x_>zWm6Iҿ/=ӕR'H+R~fmڴIׯ7|SlӪ]vZIEC=^{﹟wJJJҀpj׮_][h tmm۶ѣ~imݺ5WkV۷ow/o߮={222u8ڵE]~AǏp]*Ur b;tP%&&T<Ӛ8qbTPp<ٳsNC={TݵtR=ł5m4⋒2Ϸw^_7͛ꫯ[g۵xb}g4h4|ѣ@呙s9>FϞ=u%(--MRјh+jРA2eufҢEZm 8Pz衳qil6[ %U9?|Sڿߘ9R@p֬Yz5k֬b]ӧO{ァ,ѣXK uZnkj-@C캒W_}U?7oﺼq:ڸqn-]4cccu饗jԨQ#Ijժ^yW8` UVVbcc6lxֶ?{M{WPׯwb:ptUWiݺu>_tYCZZzTǫo߾nW_iڵ5kn6f2۴iFSNIFoFJuv)ݻWcƌt:5n8ݻB"yyy>|7ol}'^ޔfSs)66VӵrJX,YVZ^~1]y啒~GԪU+EFFÕw\rb˦L˗kݺ4a-[L:5\[ Bvl٢={,[L]t_Y֭S޽K~ƌZnyz2׿ ~ ']Vofe6MqF۷ψ ͜9*Uu>,--w/? KeA9/82r_]VuW+**J6l󕛛+Iҥ>5kL'OW_}uVkzp/cǎ;wjA=~DD-ϗ{#G^zzeZ5a;wSOiU~}EEEvP9p o$SNXnf|Ŗ?^;w,sX[FRFF$魷ғO>s~Zڼy~w~GbVZԀkܸfL^fX+I:xvء jZnm@!  .@k.` b\^5GVzzY{1]xիz)m߾]SNJTsNJs!+ ?;:~rrrԵkW[vء;vwт T~}oUX)*Cv]|JU'@sQ%M)nTOֹ+$ͦ2d;۷^z[~G%$$[nںuԩS')33ӰpWG|OF Wx#I:tp? ƁXjy5o\SNUPP#F())IQ+5tPÚ>} ^7Lzrףkm^,ggkw}' 4QA+1"P}8qtEDDT iPb:Pڵkk֭$ddxtyrz|^<|x۲@8ڱc.BI hP j9ԮK@x" Є .*oԫusʽTeܻPimRߓP6@a,P~ʵT|OCa$T|U! :p#B 5@x"`drKT-i<]&//m glt$777蟄@Yl6rss.@#)!33@l4 a.T%v+&&Fь l6hyo tq8! 8,T;~IIU\ h0Ti 0UzZ C'@!"حoyD&M7|#Ij׮/^]ꪫt*))Iiii1c8еU|:eP۷K_@<#ҥyJNNVӦMndzBոqc=s:z^7x]c)''G#GԢEt7+///kPڪ&e¡ 5DTT.M>]?~ :ի{n:uJ/VK Yrۧ#Ghԩr:U p*Z Thܸ,KA_~Qnnbcc˵AAmۦ-Z.5 3ZVUfYfsNkAQ @pjÇtK. h?5FZ>[x<&I\p~駀 |2uRR[%PUcg%K(;;[k׮դI4i$/0`@;vLwq6l <;t뭷/~6޽{u1 f5jHIonf͚oV)))(Igwrc9s_͙3GǏʕ+5|?{WÉ "T֣^E3;Po5 lUPwEsM*ES2 3!ږei*ZM$y߂gǜfόӻk9y5GܹS111JIIQ5rH֪nGulMemdymxete8"##^s?;u-[?WU\\|]}h2.\{캌0ڵ+P9I%ڬˮ.Ym˶levvo[:*;Zh$)$$D[9999Zn<o08;*))Qllbcco|}}tjJJHH!1=ۈFٳgZz]ٍ~} 7ȿ/=s.m0h| p]^+1"4- pC1 a 8L#ZՈp{b!pb nBhP7S7C-Fn+7̍x%zڞS0m73-7;&14FԪO*0ꂕ™99z#p1KHsW&7&͂8Fu#>Mx[#h!͆`x f8B}繱 pl6k̘1 QV*;pƎ|;Uc bn78v4zhUOqqqhY?5`eeexɤK.5ܞ~8v"I ޽{힞Sǎq *--M-RIII7bo^SNmuǎZn-IZlY Wyy~F  tܹvI0`@ƌU[l3͊T=SN%2*hĈ>}(99Yͫ8pn2{;ՉTn4~xO +))щ'4a]tI=fΜرcZl\]]ys@0ٻ4ggg=zWu!egg7ިp̪UteeeiҥΖp}s񑣣*iѢ~ߨSN;ԲeK5mڴ~s>EY>n2UODyyyiŚ0a:Tm9\?FܢN8rhǎwܡzV^^~qNNNu>4,Fܢ.\uiڴiz衇驑#GZ9sF͚5O?-Z+qim۶jڴi ǎrss%iڲSsΝ;+VHed$;vLoFK۷op~ZZݫ5k(::V`~+`nY*ٶ=dse۲8^Y;]mY{o-,,4 >@NWh d6]`ڵkWs.K*Y]]f,ml˦r߶jOa;Zh$)$$D[9999Zn4` 8vTRRXڻ``́`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`pN.vf65fUV8p@cǎU~~F;=z® o$OqqqCeHcG!!!0ݻ驸8uQ7npNnnҴh"z}Q֭%I˖-9*//oH#!1Ν;N:)>>^ 1IJJRZZ많;~IdRXXBCC={(::Zu?a1MfϞ=3z&ԛoAi߾}z.I5jI&iȐ!*..ŋe6~Pw8?X{UNNϟO6l^u>|XYYY>}5k=zػl`6RVV{Cj׮i_TT}cj8˗/ҥKrqqdcT -2ߍ='N&I:rȍ.T=zE6nܨ .O?մiﯖ-[jҤI׶m]6AcG~4xmYɩ۷on:FIҜ9s*&&FVR5fN@crw4+>>[VmٲE'Nt_qqΝs!EIBBBԺuZu)..1KBcG%%%UllK8[СC]h08#08#08#08#08#08#08#08#08#08#08'{p;33fBBBԪU 8c*??N`=Zaaaׄ7秸8yzzڡ2`$IRXXkmT\\:v쨍7V8'77WiiiZhJJJnh>pu֒e˖pn@Νk}lN/Pll$)))I}BCC﯉'j풤Cꩧۧheggu!ٳGFTy抉gK...3׿G1b+5mڴI}ݍ+V^ Kdddέ6TÇ7FswfΜVZY"Iz't)IԷo_y3y] W\\~e;}io*o^:|_nF%ܹsX=1tP]V6mRllNIdÕo>WF$}JLLԃ>C*99Y[lћo-ZTya6?Yھ}RRR[ ӈ#c)==]/rmk[^߫5kLzK/RӧOkݧÇkںuV\YGM"""j*9::J\]]aV ks$m۶MF]ZmkziiiС*kʕ短mu{#1SN'0>iӦg7HF>}hҤI2dxbfݺuSTTBCCuI%%%[:t|||4vjkK%%%:q&LwJMM̙3+IZl,YڵfϞ]ijזΝCiŒɓ'C:t,7"00PfRHHۧsVlVӦM+,fҥrrr%IGÇZ3}WUcO&Lƍ65="kc^ziʕW 0;*{cԩSU7ZdI};::^kLhÆ *** _]VVVOf͚G>֯_*//OrppPbbN<Ǐ+55U:uj*9rDYYYZt_5j6:88hʔ)j֬׿J4h )??_O… իWFϴ4eff*??_jժڷo_=>3ںukO>~ ,^{55JAAA QTTT}KfY7oVaa9Wz=y\RկtK T^s[8vT^^hkN:p@im+**Ҿ}twWѣG%I...l_ImhѢ~ߨSN;ԲeK5mڴרJm8p㏫XԡCL&͟?̝vC3;;[EEE>襤$͛7wֆ `͘1CU[qJOOWrr6oެkjǎWǪj* >\gրOWGc@c #FHRp,m{RP%2˗+sqqdʬ \]]/B/֩Sdcj$ķÆ S^^uRzv=EVVL&.]TqoKeeeP׮]ܹS/5ﱪ瑔u֩T_~eAUc@c[?w WL&uȑYf~~~;[oѣpBtmXY[]_=W~G]pAqg*,,L111:u5䳰} u1cԳgOyyy]sLC=O?UP17"13gH8Wvvu۲rlMΝ;/RSN,WWW]pA~M&lR&MR~~mV7o}3gԬY3=jѢo P۶mTV~-nݪ8EEE鮻RiiGyD&Iޕc y5YW6_(%$$hڿ&L`=gxᡁKM4Q.]TTTg^slc=_+__WJHHPm=zҥKam{'{U""13f(''B[׮]^-''GӧOu3gԑ#GtRmذA??<̙oV111Zj7o1c{dRv*aQ[ǎ[oѣG+%%Ez+{j͚5ZdvڥI&Zd.])Sh˖-z+k=WYW6… %I?6m˗Kc[n*sݻVXM6iРA8qun5sk׮*]wy5sk׮F-[ԝwIQ9ة;ش[֦Jm1ٜgٶ,WNW~[[+* n}>cڻTxv]vJ:'鲤Ruٕe6KbٖͶlڮ.ms40gggs=ʲw)4r?מ={] GGG=Ijnf̺[˗?eР`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`pN.ѢE }h~Ak׮՚5k$I&Iaaaٳegg+==] .ԅ DGG_~RJNN2kQXXX?JHH3z't̙ FDDԩS+WTǎռys:uJ~{ 5p+ 1޽{kܹ2LꫯHsϩGz74iҤ:83gT׮]*&&FfY~~~:$l6SӦMرc{5j(\RÇWNNիW+66VM6կkM>> l٢+<<\9svޭgo~=z+J9t{[?$)++K۶mӲe4vXM>z|qq~'OJMMU /hɒ%Q||ƍZ֭k fV^\ݻw۫=*..ԩS5e'P||k5kLUߣFҢE}hذaEqq}]=j޼y޽[wq\]]%I2~'7NΝ;Wm/,gg*{VoY=$IIII/oV}U߾}Cݻw#I5ۤIo^׿땤ԩS tզMeff֪?n8v#Iԣ>*GGG:sΜ9/׏,u]5{]w/WmV_/ܹsjݺ5hرJLL>ӿoM6M ,PIIIZ̚5K=ڷo;6mX번PFFu1cF͂\I ;ۻrwwWVVmСΝ;o(99:2ʕ+UPPPf?~\~^~k>^AAA RZZZ͂,ሟl٢˗/kڴijժڴiٳgkΜ9~"$5{Y)00cΝ;J?C*++pիW+((Hݻw׀ZIIJKKk2j۶/^Tvv3ǘξIs=,  6o߾ںusjCpV\0Uh7L5jVXK.Y-IcN"\\\Yfiĉj֬Y}| "__F>FCcg+VЅ ԣGO>ѠA4{lEGG+44T~F ?^+VU~233GgUǎաC:rBBΟ?˗+88X[V@@.\(-Y1oJ;vSOUhOIIjԶm[W~q hƌz7_WJJJCiԩ RYYf̘Q'-JKKz?I/_dIsiԨQ3f.;vL۶mŋUh+++K/A_~Pii;_T-NVݲ6Um{<˶eqv۲ZXXXi|zRTT5 Y?^3fЦMnla쪠@fe]vJ:'鲤Ruٕe6KbٖͶlڮ.m/5c_} +((H:tPyy~}7ZbEG[ ={V-ҢE] 0&108#08#08#08#08#08#08#08#08#08#08#08#JHIIIz'}5k^!z_@[֦Mwٻ ;ch8vֹsF;))I6mRϞ=뫣Gj РAԦMܹSQQQ*(($fOc=&}W?.^(I Gs=_|XIdRXXBCC={(::Zz6nܨ^z{Չ']+cAAAzk֬Y:~$?״iӴcI҃>xuzիW+%%Ҿ5f_ڲeK}Z .T^$fm޼Y:r/ _]VVVOf͚GzҔ|ǫUVj߾}''':y^yo߾zW_աC7x1 M8z$ťB$C2L?%INNNrss$}JOOWrr6oެkZ__j׮iHw]i=***^&Ȩ񑣣#n 8vf;NM4|9tyIҰaÔw2EDDk׮ ULLvܩ^zI...2LrttTYYbU^VqqJJJ,$T^ΪG?J5V?… '|RqJOOWbbV^-///8qBܹuTd֮][l=Cڼy_F}U>X  Q1JKKH=#2L$C4i.]HgϞՅ 駟jڴiW˖-5i$k۶myVmСz驗^zI/%I{ՓO>m[O=T]vrppЅ n:M6M=<==5rȺ?4nFࠂ%KҥK2e8p@ݻ"##Ǐkĉ*..$͙3GǏWLL}v3VIL&kN999wܩi9rJKK%I ,+d*%%UWKJJҴitj„ 3g&NX(55U'N@"oel-kS%۶ǘlγl[+k+-k୅uf{v(霤˒JmeW~,6e[6۲iz淭F*mZ*#08#08#08#08#08#08#08#08#08#08#08#08#08'{pȨs7[L&.]dm[f֯_xCӐn-maĈzW*mڴI}aiF;ػjU$mڴI={=ٳg+ @ R6msNEEE@d6?I=\\\W_ix$)00Pu=(77W_|bcc%I&Iaaa ٣hegg[ٸqz{W'NPttt٪Miiiׯ:vߊ#FHd͞=[IIIZzRRRꞍW޽5x`]|YZv}]yzzVZ?AcgܹsAF@@vm=u릨(9sF'NTRR)'''͛7OcǎUTT$ijݺ*٬(7NgV>\\\5j}QM4IEEE?~/^'|R%%%~ 9f͚ӧOkњ;w~ZW6}8Pg֏??zV˖-ڷoS^5iӦ>6կ_? >^ZRk޽UPP~9]o=())kQF)((H!!!P F$GJR!G$C2L?%INNNrss$}JOOWrr6oެkjǎvI־o>}ݕ֓"Rʴw^uСھ߿gS[wֆ `͘1Cu:p"3סjz5?-~yIҰaÔw2EDDk׮ ULLvܩ^zI...2LrttTYYbU^U}_|֟ݾ{6u*;Ȩtqvvr_cuW{\zzf̘0S^^^:q+L&I:ruU۾+ou$2zQʞMUWaaaԩSp`UZZEFFGd$I8pԤIuEEEE:{.\O?TӦMZlI&)??_۶mjwDDz-Z(""Bnnnڸq$ P۶mմiz_*=I7o¬_]dRTT|r߿_&Lx ,YK.iʔ)V^^twފ?'X4g?^111rrr5f̘Z&U}v?^[޽{5bף裏j͚5JOO׸quTlL&ڵkWדMj咤h%''vQ}lMemdymxeteKJJիbRUPP l2Ю]%tYRͺ2flf[6mWoU WaW|I.\%K0ݱc [̘[СC]8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8hmٲEZf_DD+qK|M-X~&L/Bnnn۷o]vCZOׯM<<<Yikp8ٻbٲe*++%I׹s:訉'jԩ5zjVh|$i֭;vL&ʬW޽6nhmuiɒ%TddΞ=+///unW127xW?ݻxlqq~ KQQ$i۶mrww}g=WM6UZZ+k۶m]wݥ3gѣSff*Aj1Jaabbb/駟Vqqq?.]@}ꫯUatN׮]rJ9::Em۶UVVVM6gϞѣG5{lhРAjӦvܩ(Heј1cԿj˖-O8ԩS 8٬MVXnݪ.]XG[lю;ԤIK^5iDӿ/>|XK.UxxڴiSu릨(ɓJJJ"##5tPhر###kȐ!֑C p dٲeZtuI&fs=Wy3<[VXcݿm6uErqqQNm6k۶mר~aرC/_VqqGiȐ!Z~uW[uA)11QJLLɓ'uqSN~gիC);;[oFFDc 5$?~\~^~*IJJRΝ+,}uΝ;{G]tw}gxӦM[Zϻp႖-[kʔ)k q,=*Irqq*I񑣣Z> n.́c 5E||VZ~"eddK.0͛׿Uwyv7|KKKqFmڴI۷:Tpvvd Y*s)..֬Y4qD5k֬^}X^ ͛gϞվ}4rH;w /_zO|'N\ FCc9;vhzꩧW$ٺu}Qȑ#} նm۬m_ɓ'{j׮ڷo_|Q~~~%ISXXX… ZnMzH9rdhx s(((gyF]Z7(8@ p NPp8'(8@ p NPp8'(8@ p NPp.ѻwr)>|x$y72iҤ~Y`A+JAS~x.t޽Y{=#_Wr饗s^s5?$ihh{wɓ'nh Vﳺg}6guVaÆõ> /kάYrM7_no9аuc~׾)SͩSNysfΜ9[:!8sצ<oРA>|x~߯u~}#kضn/<2eJ-[e˖g7͌3&˳6lWX%KdѢE:uj :H>?-[u5'~e-{}5@{%)I#ES|M۷rK{TWWSN-_h.ҏ]lk 6ƍ׬~5b|NYYYvywyMJ׮]=***/|!>hϡ ^wŊy嗛eNe˖eܸqF7#FwܱlLk:thwqy3nܸ9rꩧfwιˁo~Wb!)w9I2cƌf_W3zfm.}SO=5SNL0!sW7/9'On9rd]c=ON3tЍ_kwܑ}7[NSSSslue̙s뭷,zk~?~|>$ӂ'|r̚5+NzYĸu'$:ujdȐ!/)//ϯ~ׯgܸq99444dƌڵk.]W^y%#GO<~L4Yŋsw_j{9餓Z<džjܐٳg'I:wܬ[nIUTT䥗^kbN5ޞz=`OI7|s_WW+VdSO=u[oȑGnݺk2hР1bӘ:uAW^Yk߸q2|;kksԩSS^? o%x+QFmocu~{cL0!}QAѣG<}2dHcI^SO=5sSO=־/|Υ[oa8%v6rH<̦Ơ׾ ></߾IZbEn5iP;u$9óhѢ<3o^hMy^{|%W]uUSn]x־?a8~$Mjkk3a„|;^{m6gu&6'N-X ^zisy__[n֭[1c\zYh&_N|MmZ ?q?Mo~εs|1iQy~|MyyyN<̜9z-Z)SlX^^v)}b~gɘ1cBzc6w]Vko|._}W;qQ?n|uOnnG2bĈ\q^ŋK/m71,X UUU. W^2eʁI%Kj?_Ѱڣq;mg5V{uO3.T#c)Ç_~ihhțo?… ӟ4?OK] P (8@ p NPp8'(8@ p NPp8'(8@ p NPp8'(8@ p NPp8'(8@ p NPp8'(8@ p NPp8'(8@ p NPp8'(8@ p NPp8'(8@ p NPp8'(8@ p NPp8'(8@ p NPp8'(8@ p NPp8'(8@ p NPp.0`@KѣGLR2:@k.dW^.$L(8@ p NPp1h***R]].]r|Z*˗/ϒ%KRWWELІu=lNeeeS]] v_PQ[+Y6lݻo@G&h***J4fmRQQQ@G#hK]B!jBuҥ%(,b mM(C=4W]uUvau7o^.<[vc+[ odwW\+j)IAKl6Sm9c~_H͛g}6w_^@ө>XU'h窪=K?{7?OrU @{`:Ֆ!hǪr5dϊ+2~wk$0`@F;.| /Pfa:.T׿yrg3cƌ3={̌3r 7￟?sNpwGN?+V /̫$۷oƎn-}M̞=i߿̛7oөvmMϟ fԨQMS/bٖ pکc9&?~|SxӨag΄ R^^>zk @;p%$Zgʔ)9ri駟bmg?$o۬k{lĉ G[ ݝ'h~򓟤_~s7f„ o^{-I2p92sL2eʔx%X[jU.œs9?>Zr]wo̪UJP)>vnʕ3fLƏ>:g;&Ӣr ogⴒ铽;8'>5Û~8}8fpL>}!N}}}̟?mPt]vYrfѢE.vnyJ]Fb@P^^~/;R!~歷N;~Mm(++K444a vvy[ꫳdɒO____ t˖-ٳ(555ۚ?JT18Ԃ һwꪫk)}ݛCNM4)w\.V떏P,vN}}}>lu̇~I&{!hr]w宻*u)6'(8@ p NPp8'(8@ p-;^2ڼR__Kh(8@ p NPpج~_׿u֧Os=KXY%6Ν;gέv뭷fJΝKXY%6ѣGg̙mݚvmVv pjۿ̜9W_ͨQKlv駟ӧgW"*K]>}9K]F >_~y4hf}2 >6#i,@1v̙3'wqGNZrV0 ys碋.'?Rl$@O:W]uU8ѣ 3rG?ʱR@u-'|r.R@@%-p*nҥ0aBxR@Awߝŋ`=8 /q7,u)Ft swܑS8ĨQJ]܅ 8'(8@ p NPp8'(8@ p NPp8'(8@ p NPp8'(RQUU?<.$IzL<9?pV\Y p:޽{韚Fkvur!`Uj o}y睙1cFӟtN:|\.H( ksvXve̛7/]vY~Ԥ&O>d.첼{ׯ_FQrusx`ŋ_SS;IrAm#h׽>}z}[&u'I$o}v$7k 8ܬY${W>H@uƾ@pڹ'x"Ir): 9sff͚TWWONL<-s'Oӳv媫 <8W]uUn7;wnL'%-tÇϙgN:5k0`@ #<2?OsϕB`}8K9sҥKW IЎuQʤI2cƌ|ϐ!C4 կ~^z)zʈ#JX1.vlK<9[]Аx1@qpک'uuuyw{$aFy@+XkhhHYYYVZۿmj֭[Ǝ۴+(EF0ˇ~o} 0 I2o޼Q vC#lϢE_ԩSJmcV\ȑ#[ti&O.,#G{EG)Q@K*y6aj{^uK՞Wtׯ>o4/_M^lYϟ~g>v)-ʂ 6'|r\;wf|5{… K]Ft钹s,GIԯcu. s&MJ}}}կfذa6lZ}/^yJP!!' /w};>N?dĉYtiZ  .\;#wqGKZ"'(8@ p NPp8'(8@ p NPp8'(8@ p NPp8WYغ֭[jkk.Ft0?O$ݻw/q%t Æ \д=tVl,@1lذ{;hfϞ38#Cs=תT/bY[(_=|A~ٳg~ߵ]|ٳ{/G'|t*((R㴩I&5 oV[oeҤIoX٣qD3<58f›ս+0aB5 (#pZIiӦs=;攩2dHd1cF񔗗gС8p`*++'ʕ+gvK߾}3qD!{d7yp =zHӸ?P<VZtiz^z={6o=3{g &dܹSNc=r=dٲeIg}6GqDg̙3[}~/^޽{O>yw[6IJz{>yG[&IxVy'?NMzꕲF𔗗Y?i̙9}.{o:蠦@1 pZ駟{Çgy뭷.dMK壏>Jf#p㡇;.?|^y啵 4(sLdĉ[D`# U+ySUU38#zhvTTTdm͈#rg2K.͇~U+/?%KdʕׯV(YfeĉԩS.|K_;9sESNYxq͛W ~ߤ,Ca;l>޽{555ٳg~-Z6b l־5_(_yG~n^cTCCCf͚ٳg*]vMUUU,YYfe„ yǚnͽn_̊+{ށfʕ-{$S3dȐ|ٳp7p@W^y%sMCCCo 6,LMMM9<'P--x|TTlWuCCCMӧs޽{:uEeڴisf}N;!CH:޽{g….E]tܹs$ Ix^nƆ-uލ pױz4>*\׍Ͻ>]o[{93;>-./:4*nk-<%3]tQve̝;7 lP< kV2ZԫWL2$%Ys_ׯX=ijYmu@i5[8[Pmmm~vmQF$uW_9s//r痺$`5-6rK~m ZMMM9u`,b榛n*uTSSK/ek08'(8jVZUw!,_%`C8Yl UVeٲe.(8jjj8VjժԔ ,uESWW k׮ҥK*+}Djժ,_`I'Zl2\aRA m% ,Ϡg$BXS}}}KhQå-C8 Ш-~_UTT6AϝqiL::vUVeҤI7|P U___ȟALh(._H}G׏ 6lXK`-^8+V(uTVVVڶt=uuu.ׯ_xR.liԳgR@;ӯ_֮O>}R5ףG .c+/u8'(-qCvqoC9$wА*sq%IƏ*gyfF޽{o1 ,ĉs-dժU[’"nwAw\p)//5\V뮻 /L ={,]ڵk $yײlٲ-~ݻg̘1;wn.6y[f83rI'޽{_r["R͌)++Kyyy.k׮kӵk$ɵ^QFm@-7{ܹs䣏>ʄ r׷xʜ1bD.][o5{o=z~I)S{1;cofmgl߀o;{g̙y'6kE5r$ɹ瞛^zic=r 7dȑ p6Amm !]y啹,W^ye}^xaش=p89#J]F|9›$ܹsNsҥKuY9묳gԨQ-O]]]N<׿^k{O$I1c䡇ʝw4(Iz|_}ݗ߬k׮9c7cM.]yWhѢ'x"F]ML3h1d߽{|^znfXS[_ĸz$~Yߐ]fΜ992xGz行=:չrioŋ3q\}ܹs.uYg9Sfvʻロ_:˗/OYYY:+55530`@Ӵ5גit7K.0`@f̘޷o߼֭[dɒ^KEEZݺuYgko'/Bvm ><&MʠAr'g,5zN;-IZ}'|2V˒%K2o޼M93q,X =4<4hP***2gΜ44{ק>.$O?t.]lZO~̝;ń7UK5mʔ7kx Ij}Ɉ#˛NH~Z]Ӈ~.(ַsɭ}ڒ߳6+uw&eee kutz뭭.\lȢEm}9А>}dҥI3f?A=\y啹뮻rM7eʕk]cwLΝ_f}7_=}Q:wo~˗/k֬wM߾}mYdIВ5?4ۮ̹瞛 .`cF3&MʤI?g޼yf7V^YYYVZ\kjM8c͐gukXu]]]]MEE6"6fۋ-ٳs뭷kչ6־ѣGOŋ3|yMw}߿~>/$ivw}7uuu9q-[,&Lȉ'~_˗7k{3hРӧiݙaÆeԩ=l$y嗓iFvXgz/})C ɐ!Cr衇f[,ItGt9UUUkj;>hSSSګٳRQQ[5]Mʺ̚5+7pZny\|޽{ve=:cǎ]ZZkgMeee׿Q}LUUUzѣGg]v|r\ti|2ǎ^{-677wߍ9.]ϟz*677矏8}t<Nc{xWŋqw܉ .F;gϞ_~%._zGU{ԩSqԩGڏ9HۛoW\3gs=W\y/~?>?o"m~:""~ǡﻼnݺPҦ31(^(N#Mo`1"rr "x>L( }yg8qD|76qGM'Ow^|3bo Pĉ#/^/P;w.z뭁;x`|_~[7W䤣tʪqTU4 p: y4NUa5B{֭>W9Aܹo.ܼyA" @~ۋ_|1;7n{Ν~KKK_}?"n437éirxYbBo෪ 3<#Gq{{{*@WڨX]]?׮]kD܎f7oģN~ʕꛢTgB_'1N}S5q~Χ~>|x߲---jܸqkwbQyÆ20gTˆNe4n/"n'Çceeer7W^=+oϖ">=]9qѱ>ЪAս(z?\]^^|uuGZUU[[[~iҏ1|[+kkk믿w8p@,//ǡCbkkׯEN< mBhTݨIT6<8 I[T<8~ňX'OѣZYY,N1fo te}}=vvv&ݻ}7o޼_/OXk< kg7:oݐt>- ګtu4GӉkMɌ~Z^0/`% g|M\l-*~g{Na~H}ų{'?ڍhGYa!SEC*l Ӈ̠N7~&KRd!>) }fLLMPSNQ5MI+oL/xU$MB+& s*j婢iGӴfG<dMK8Z+JU??8:<WjT+RUcU+Xn.@!OU+I!NꝲUTrLPE WS6*aUMVs/ʇ;*p{U8& iҡW鵇 Vz7|*_8iapO+q6EnsIC4I)W5'NW7ڸ*p'_y)8WdJUeW뽊Ɋ&/. o0(^a*ߖ_.<='8 Ze}*u``jaRuaNq m J.^U^7aPSM>\60e{?|*"bi7t5t,PI20 WmZIENDB`extension-manager-0.6.3/po/screenshots/_14.png000066400000000000000000001401701477302130300212160ustar00rootroot00000000000000PNG  IHDRpA%bKGD-IDATxwx;"AxDp#aTeDT)K=2nQ<(K@8 珒MҦMҾ_ו+o~+ɝP]@%5@rʄ7\'aq=;U~I tZQ^/Y tBQ^#U]s*sQ_R9-l^ s*K#kbh52 * TTd!N8Y"띏s4DE8e))ޗTޠkb9(ac 7n7|IV|w^f8} ep~&w|*8)P pv*ƬERdͯd2%FZPvfm|FR gxcBpXT4).qBFEnRL^\w(ײ,y杪U66""^~~Vl6yP) L&fY,8u?גnV6WӑO?ӲTHpjV4u41mqL*\pO%$$Unn/ Zdd"##-[Ʃ qot\4Q ˤyXI88i87EqخYYYadZ<99 Bs˔t>/nRQNyt*n6eT7\p3]333e3;(oCTȑ#_ )Ō3pTHJNqWu*uqDfͺԨQcdVV !f)>>yTTOǏ߯]:mpOϽ ht6 hS(O?S%EV^}lnnl6 EGG+**Jfs(`Z`HEDDh4`1 r8cGaf)77WիW+i f೾!?'!5x}]YJj8NY5k%!!OVV1L^3FEDD(22Rf4Gx8`hbbj=fTx gBNE|b -n qDe !٬`XL9= L& (|3PqӤGN֗F<3OGjga!:::'٬`]dd$ g&I.j*""h y,,rE9L9O-n2L }#EEER ځ@v 0fd2%Lvj uBEqǗ%5l}cd4F*,[8s@Ubl6~vYV+ 9  4 h S޿Im[REtܢ 1`1K/4%ߎN:~2LWRRbcc]k89'URR5 {#$5$T1xVR뜢? OT2R||DEE)##C999e9}q.5$[츷)T)R;q~IC,,qn<7m4,٬ &l6WnnnKd4զM]|Ū]hڵڻwo`ڵS^tz:y6oެe˖i˖-./DEE)66ljn/mKz${};{tΠ v㫰]6o,?~U`XԿ]s5JLLi'O>… T@3͚8qkI&=ĩU$رcA<7o7n|nݺ'P@3LzGtwZ^V-]wul2M:V1o%>>^!e pJzZQuObbnvvkTO,|Bho^&MҸq㔗͛&MH*]ɓڱc,X}t-YDC=zPnn>Cegg[oONOjѢEZx_5@ƪp/Yf_ZWSŢ'xB'N W MNN,Xkѣ:묳t 7hݻ &O\9 S(a 6 u- 8ExSjIҢE=Z]vO5}t]s58@8o^O=TBIZ|,ڷoN:EիrrropܨXqqq:uCYLL}Y=zT'O^uz۱cv!wܹs-!`T7o/ӧ믿v9ڵk o۷l~7v 2s95k֌? I۷ڴi#Iںu>뮻R=[J:t^zڿfϞ922R>.2eeeizw#;;f9 c@3ás=W/;M:+z$-XPxnZp ;P#22|~'=:uꔤ?ڶm[cgee^7aEʛ`8.+d|vٚ3gN9W29~x2LlzjܹSC$ :Tvƍ?T^^z111zաC %q뮻R}'$FG\sjժ~M-ҦMJ\AcǎӶm4sLWm/1(-TkNǏ?c#<ըQC={t=OII^ r B6lI&iխ[7M2EѣG5zh]zZd4ix@zeX /Q$ 6LQQQ㏵lٲ{|6TJ^|ZtVXYf)---`2˅^(IZvmۭ]VC ?(+dY,۷OLGyD4yd{:p@퇲dkذa{e6Rvvu&LP=cmذA_|z)Fq8pv,=ZG رRRRÇkQqbbb{_,/lԩSb M4IfY7tԩN:iҥz75qDݻwyBjԨ!Ѩe˖7o\ 6T߾}z^_CP oL&YF)))qyRzuI͹[*+6 GÇըQ#M2E==\=zTcƌ)ӱ]|׽\yDޚ͞=[v?HBQo{;wLEݺuu饗رc2dVu릑#GzܾN:2Lߴfx&''{:p|֝{KꩧTsΪ[,KvnFWv]O?4]#z?cy>}ɓ{7%I]vYA+vիWΓnWݺuմiS mڴIRAwM6nSLLLy6T0K/#G>xGҥ n״i~EI:P okذaܹc^!--M:묳tb;묳\WPQq/5JSNUF$4#x ɼ; nU'PaLXur7{lM>r EݺuӕW^nIWVrraÆ~AVUJlMsN袋[ .t Mƍe4 hkР1>>^u\:K/j׮Zvg+!!5oD}Zn]"IK.TIdddh…W{eҲetuio=dܦMp護ުCic^$=sjРk̛ziʔ)JMMՉ'J<6JF.\?H…q95lPi:K.DsQ~~~3  _^ׯu}sՖ-[JK.qe.ݮ-[ԩSg|ޗcxc_TFK/)>>^111O` 8{ef 4HO<_u8yW]u,6oެ?SԾ}{m۶MR+n ժUK/bرc1bwT9@gEXta(76\1.-[hٲeݻΝ B>[7xRRR4߿?%j-qlzޤJyիWOO?t:[x8!ʪFn6K]wݥ<%&&C˗K*f}Ϟ=j֬^}U?~\]tQKKKSڵ5p@-]T۷oW֭5ggI&zg~zeddܵkZݫm۶M6={6mڤFiѢEڱcG{=|͚9s>SժUK8q^_c MZZF^xA7T05?.O;vtM/HZhZvWUVڱcOMHHаa?(11Qwuvء^qFK999S6mɓ'UvYgiڴi:]ˎ9_!1xsLPUӈ^2uT KC 9#dp8:qℒ4o< 4g U%8M4/cǺZۤ駟vu=-(Y8oR}*ǏF[M?|IFTSN[oե^qqƕؽz$ڿ^}U}嗮'O֣> (++KӧO׿b7{l=޽;=1bڵk'Ѩ)S/9}vN#G襗^Җ-[|eԾ}{]nƌ:v옮Zy:tv- u/1&--M#Gɓp84n8Lׁh RRR4j(Y4h/\Ǐ'|YfO8QÇwܡSNiڴiK7n\Ȇ7`0_~_Tl6&Okתwj׮jԨ'OԲe˴~͙3GM4'1-3w'N(4vx;٤ E=<7Xf:}o>y_SN$''iӧT.Hf@UfY'N<#q7A\@y7u9ݻusE7k,5o\h o.R_WZEW:u"BJLLԜ9sԴiS}9sw&**5+`Yedd(''ǯ}ǽT8*f/JZBjՄ $O'NP~]FPh4=eQ~7a\Z r@pʒn/uKҴprrrQVVl6[9WW@r82 "ƿq8Bvv\Ib l6edd(++KX,22 ZWnn.MTaVUfsxZ.:.2an{JflRa}TV0kqlo/*,;;;,[XVegg h fSnnnNV!jUzzzBFff&!+ͦ`(ctIEGG+***dıZɡ PnWFF"##!Iv* M8\ޜ]B@#q8! UY233!RDX,. A.#(d\!///OfsU `0("""eET`0\7e TU61򜿯AN ppT[WdRllVU999̔f v9T?P~QՃ]F2͊S\\ҔVpSÛW`f2|xTzuL`N#9-666%紨`RӪlSz:pB@ ‚hy睧-[*))I?7ȑ#.rESNU-$I;wTjjj+ }|z衚5k_UV饗^R~~~9W! gx#I-[t=J鍊n*BŋUn]իWO]t,$)22RÆ ̙3?رB4h kռycǎ U\={Ե^u;!ŢC~_+:(_׿tO͚55h 9=nuV 2D6l(w޺[utHFegg}Zz̙S6+WҥK;\"""c]}ڿkg} _׮]oꜥQZUY ,ڵKv$}zd2${衇4vX̠ԿIw}/BhTƍյkWjJÆ /;w С$駟^vA PӦM7L=z$zڶmOmV˗/W=J peȐ!jРZg6oX0\dJJ.R <ص>33kpWZ عsG*,***UO5Էo_Io;wwު_RSSsNڵKrn 8PcǎUNNN+8&Il%7R:(''GӧO׉'*H(Gɒsx#ZjKMxvn&''G6MA'@xػw6mڤCV^]3g%\MBPAjjn&tMzG]NXRjj K&LW\ʂk׮X,ڰavޭ'xBmڴQddkáUViϞ=JHHrW:uu]'ͦٳg. *+W׊+uV{袋$I +mܸQO=bbb\M&Fu33m߾]|k޽袋d%%%)11QK,%\a {t{衇*pD=>}22RwuƍYO?].rz嗵rJ޽˫W֮]_i2 ?<~M+Vp)NI7Ԟ={t͞=[_ݑ#Gԯ_?WӼys>|Xw}:37a ZjiԨQJLLTbbRRR4|]ve{d07xCGRSe;9 l6w}uњ7o's̐3m49RuըQH_^L&6l(R  ŋyz7կ_?^ǡCUQY5jHFQ3gΔTН^z2LZY: |s$_צLJJRnCYf/J Unnn+*irrrzr;ԪU+IO?Z^պ⬳ҨQTzuIݦB͠A4o\m۶… }>Α#GԾ}{թSG>osIխ[WAVUsըQԱcGL&ծ]5`ffVZ'M6Qk\t1;TRRw-ZZl]vZׯvu`>}O2]?O˖-] T\X 2^jժUԿٳgsN]8qBoRRRԷo_5kL_|߯{L7=ܣ-ZnkA[l6222 s.N&M$›@y9vjժ.Hwygu @ѣ%{˖-뮻4|ps=ҦMԳgO:u}]uY~6nܨ… 5i$5mTwLͧ;ui߲95LѠ̄Zs =~5Sґ#G4uBocl6jԩ2Zx֯_Cׯ_ӈgddhv2յkWyf͚r7'OKdĈ2dH}W4mڴW@UVM?CGI$$YnܞmYM xUZmԦMI"J-lyו ͘1o!=Cxsڷ~]vꫯV֭,ݮ#Gh˖-/t7UVpCVZ۞}vzڵkÇj*͜9i'\:v[nEV҆ ]p 6l@p 8ӬVkK)\Bi999.!p=8eff tfٔ2BBZZl6[ʪ!NZZ]pcv&++KUTTVrrrIBPO'Jf)==]..T 8 j֬B_{iӦT @a Gŋu} 4haÆx`0C$M6M{-tر|L& >\6l͛5k,닎_|;ӵwީJqqqjРݫ+WJт |:TE믿-[q}|zy=uֳ>Q[lє)SKrWO>矫W^ڰa/^[wuiŊڶm6mڤg}V111>ժUӼycXB>/_^xAǏc=~A7oV޽}l6+!!{;*%%E7p,XpFԫW/}ӧ5dj۴c}駺{d0]||\ϛ5k+33Sv]_-Q~]uU6lz쩌 ⋒l=#JMMUݺuu9(55UG}iӦٳY6mt|nݺiĉ⋕_z|GjڴN=CKt{Qv|~oj׮c߿&M .$%&&jѢEuwiӦ9r1cnMsQ>} ۗ/I7ttW{_|ጤMtt4 e6Sw:uh߾}ڹs$СCgln:{~[ݺuui͚5JKKS4zheggN5W_mܸQwd5p@mڴIOjJNN֟M6魷ɓUViÆ ;$}Ǯ1t>#u _~>%4yd㏒3gjuꔪUVh+ZRA`sֽ?jժ>}TVMfٳ 7|gϞj޼t'|R?cs9ҥKXWN^zI,C gff|DٳǵlϞ=JHHPjt)JJ򔗗z׼ys=jݺv],K_$m߾m7 ٶmt+R:uҒ%Kc ^l6[}v8q^xI:?믿ާڜbbbkiƍzW lZp O3gt颿ۧ_~:zh>l%''`0s{Bݯ/?p8>_[gֺu4j(?~\ݺuc=Vhے%.y|P0SNwՈ#[oK.~Q_uȑmڴn@jRZXٳgz'K|Ծ}b1LztR-^XSN=c|׶dff*--Mwky睧t|~~UN͚5KǏ$5i$`>|Xj֬kٹ[h} ?@eFaw޺Un]lR۷/%,bccskQv4x`߯-Zt3f())I ,PfԢEBΝ;ZjX,ەQWql6͛1ckUեK͜9ӵ͠ATzuM6M3fPddZ8f__h3_MY>˗/СCծ];mV>VXeq :uJ:tT+`i͚59r5k+RW]uk} ?@eG!9992d6lL}駚?~@mZUfMФI|L&kpTRA/\tA=jҤ"""g 2D>c֬Y2L?~t!}' _:t.X/>.]/5nJzz}Y;VӦM7|㚉O>QF\ϝW\#GhJJJ… e0駟jڴi>,l6\Fŋ_~ɚ:uV\ݻwwQ۶m]z*[zZop[7zxm?st|ZN6xjl(;y,KWS7nN 4ꬳҨQ|,o-6mZsQZ5%ddu~lw9nr{.eE;̟~ B3EwsJHHPVԣG}. lЅOӦMS˖-%I;vÃ\]ӧOv`111;vԩcǎi/]@ 3VZ{ߵkW3fKM4Ie˖IfΜ_}6lo!<# 1,XPhjT7P3PY0 pcW˛~ɵ=8~zԺukIҶm2;ŢBrsspxlСQ|Af{Ռ3'xBsї_~5k*222A'gx#Imڴq= ƒԽ{wu޽вQFi۶m%nA=$I/?3ff͚2ڸqo>@Uر2iZTu8!fʕ={խ[WFQǏw-3L$߿_[nռyqF]V7oX@2O??|I]˃=5EͰat3v=j۶v'xB[lф *R T%8~1bDKرcRvbۺunݪwyGsU͚5_U`BPyiڴijٲ)Ń9+թStg`0jրtQmٲE5jPbb٣xuQ?222ԦM(===hG(P5HRV\5?V\~X 6Ԅ tRPZtIڳgtk5i$. T%`q=7-w=y_SN<Bz5k,uv={U~}=c=N%''K-Z>)))r81cF@9sf@.T!]v>ߜ]wyL& kjݺuzǵzjխ[WRM׽ޫ]jӦM=z8۷믿 6護Rv\>S]|Ů-Zз~[+B+W͙3G 4P'lٲEZVVJJׯqE)&&cugՑ#G4dM2E7x]jժG}TYYY:tϟݻ+''@U@ *"22Rwq&M={zKuUViΝ:q.\5kyb ݻW҄ p8tז*nݺ2L)Ç+;;[111?//O7oVFZ Na6e4e4Gp8 =7 ~ퟗLpp /k?ٿaqx ?|/~:u/I{ァcWRR TGՅ^ڵk+::ڧsnݺUrj׮>[zW-ZPRR?DELR*QuFXժقizM*ES2 3wmK4uEKɻVIA@1G^z>33gFw3~x9::jƍu?n8v+IԩSϱɩdRve7{lܹSZb\\\$] EZZݫիW+::V͟?_999JNNV\\Npcp;`d ͍Pzw(p;!&Q([12?AM&!&9pkPW9p1@0]>p00^eDM0`SWl6k QV*;pƌ|;U7#>Ex`_QF),,F'OO222SM4i}^^*FQHH$),,L{T\\:v 6T8'77WiiiZpJJJÇ}:uj^` Fpu֒KpwiF[8йsZԩO8::j߿\]]e1٬HC^^^:u>[N/.Iӧ5wjܼpn2{;ՉTn4n8O +))щ'4a]tI=f̘رcZt\]]ys 0Wc[{9k:t萲oVhrJ9rDYYYZd_m9\Fܢ|||6-Zo~uIwqZlMVo}ܼ` E9;;d2dUҢE4a:t>snx} a-ĉ*//W@@vqq???qz˯iTs 1ÛB##`-… ZvMzH1b3gԬY3=3jѢ￿BOV@@ڶmMp(77W/-Kۜj[̞=[;wTll/_.闑9t15jRRRԫW/m߾iiiڻwV^Z^NVvfemd۶<˶eqv۲ZXXXi>]~}l6ۻ WCv tNeI6+lrŲ-mz淭iFǎ.\(I Q֭kuNNN֮], p-QIIbcckR78G1-y`P}è!08 W`A`p8op ^]@`p8+Tܦxm #08#08#08#08sw3٬ѣG+$$DZp3fT0 FѨQvMx#I~~~*F; $i޽SǎaÆ *--M .TII nZt:r;T0ܹsvIz'j p~cǎh߿_d2PyzzjϞ=VvvuhX́sٳgީɀ[oiڷo}KF>}hҤI޽{y橠@7xCVVV^y5kL=zwmL{UԮ];999)33zHwm*pn3/_֥K"$GG Nj?۩:P[e =zT'NPyyy M&uȑ]&-.""B=zP-!777mذA.\g}iӦ_-[ԤIm۶ٻl`ǎrss%iڲɩU۷kܸqZv[ÇWII$io+Wy=zx'19ٻYZZ_s׮][v[lĉ+=V\\9shΜ9u>qph…nݺVhڵkQIIbcckR116d{#p p p p p p p p p p p fFjժ±h̘1ϷSu(cGFRXX5$)..Nv  #p($$D{Z{zz*..N;vԆ *4-\P%%%7^`8vԺukIҥKtNxx;4ReHp sεn۩S''1 Gs=՗_~XIRRR>c_'N%IC O?-OOO۷Oή BsٳgީJy?\\\*]aaaٳl%$??X! -C 4i.]HgϞsiƍ:u|}}`՘؎rssպukuutISm;www[rss5qDW{ތ34i$-YDfYÇuhpv귲6-kS%۶mL6Y-㕵ӕߖGppʾtEFF*<<^~zw"FSPP l2Ю]%tYRͺ2flf[6.m}u9^g JBBBԺuZk*..1KBcG%%%UllK$G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p88;;I&5KNN /P~O6Hk>VW ի`EGGkʕrpp< uҥ 7222m_(0W_}}6mw}w 3UV)((Ys+{1}>Uzlذa z-ќ]3fUVmoooH|I:uJ奨(.uLy{p맟~w6xyyy6l ۷o? 7 #p tܹ6cAOm 2Dk֬ѦM;Sd24l0opL啢#F())I~jȐ!JNN֖-[[oEU^}fVjjo߮=4|p=cJOO/\>˵-D՚5kdKǏڸq^y6}Z6l-[[jŊ}$""B+W$UׯWhhhϰ6]]JJJҶm۔Za4կﱦ瑖:( pXB?u_]&p ԩSz'+0jڴizgM#GO>4ib-ZHfz~nP}Z ,P^>Ҕ|ǫUVj߾}j֭>}H%x5rH)$$DQQQUUF///fm޼Y:r_jXb W/I:tRSSUXXxuo sQyyyۮ];srrRffu_QQۧᄏ=*IrqqԦ-Z7:u;C-[TӦMk}ԦO?%I:tdҼyInnn7>UTTTNJJܹs<{n_^ӕ[eܷmWzzyfYF;v=V<Ο?+Wjذa5kx =3XkphT(˾=\(~[d2Qeee \]]/R-ҩSdcjРA$ķCU^^uRzv=EVVL&.]Tm޷Ʋ2EDDk׮ ULLvܩ_sN}zIIIZvJKKqJ[+T(]sĉ*//L&ȑ#7 twѣGu…J#ܱ}u7;;[_ /X_u_ǝկ뫰0hԩ֐6}k SϞ=uM{g}+!!67"13gH8WvvurҶ&Νƍ5uTMruuՅ giڴiW˖-5i$k۶ms*,,9sF͚53<-ZֹL,N>mKeگ֭[(u]*--UBB"###d2ۻ`!&=&1vvvK -[Lׄ ^ =<<4`yyyI&ҥtk6c\\^z%?~7կ~uGZd<<G#ppqvv=ܣ,{@ -{ٳޥ ppKqtt< fƬ\|Y] 8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8d-ZРA:H?͛7k*((sp wޚ1c*h>}6nX~YFW$L&gϞ{t-X@.\~IJKK?(99Y|Gaaa*!!A>;h9sFsε裏'ԙ3g*[SNo߾0`:v͛ԩSoW[[s̑dW_}$8p@^=zЛoI&)ę1cv{O1112%IfY6m{Oǎӽޫ#GjŊ6lrrrZJjڴ~_kruuŋ[6lիWرcU訉'^\AѺ*))TTTTg͂<==5c L&͟?_ Qhhe7NኌԌ3{n={ƾ3йs窭P111z\e_|Q^[C$oշo_W?Խ{wkI &M}׿Uef͚uJ޽[ +ӪU+9sF/^$Ϛ?FzJOjW֭[SN)<<͛7W6mYUؙ$)33S>o̙3:sX_?̋s]w]w%j\նm[IR~~~/^sΩustt<1c(11±?\5m4͟?_%%%5k1sL=j߾5ڴic"""Be鵾7 ;+//o~sss%' wǝ,!C(##C;wԛod [+VPAAAuq}Gz嗯9vIIx)((Hiiiu7 ;#~~~ڲe._iӦUVjӦf͚ٳgKT?ٳgjۜ;wN衇TVVVzVRPPw'x 񫕔:+mZ?YnqEegg[_;*N\>Lpo$=o@}Z~[Z؞S>Hb ͭ~ɤ#Gjtu%0iI5sLM8Q͚5p?hhplpzp}8pf͚h>k>Rff>c=sر:t['BNHHl2u Ђ ŋ7Wiǎھ}~ SRR}v}G4h>mV}U@@@_fdnw>}|MEFFWxuzUV)%%Ҿ5zh_ڲeKw}wϩ:z`T́R%$$(22R d6]`ڵkWs.K*Y]]f,mlf6m4RnP9ٻ]FFF;w|+9;;d2ҥK}Wֺuoz=W_}¾M63L= pkan[KVp1_JJJҦMԳgOѣ5k4p@iF;wTTT $IfYӟcE_}͛/J?Qsrss_*66Vd2PyzzjϞ=Vvv 6W^{u EGGW~cǎh߿_aaa>|$O>JNN֬YUV)%%Aت|[ ˗5kޓgn8vfΝ;Wdhֶխ[7EEE̙38qH999iܹ3f$I'OV֭5dfEEEiر5k7o͛7Obȑ#裏jҤI***Ҹqh"=S*))K1sL>}ZFҜ9sz*{5k~G￯Zt\]]վ}{M:QUM6ت٬~iРA裏4j(>|XT.I888uSbb'OJMMUN$Innn8p┟ӧOkի$KfY7oVaa9KeݡC7ÇW^yE͚5S=)33SWVԾ}j}'ڻwrrr4o<_~zN[uϦ6JJJkȑ RHH5T87 GGѣTadѣG*IСL&͛rI$Iӕ͛7k͚5ڱc$]vrrrRff"۷Ow}wdggzԧﲲ2ݻW:t빆mݻ~z͟?_ӧOWnnnܺpu^jO?^4tP]sLڵBCC;wjrqqdʬ򚖠:˵_ݳ,>PYFFFsˏ? .(88v>}ԳgOyyyĉ*//2L&ȑ#UWmvwwpuԑhFM*{6U___)&&FSN~pk#UiiGyD&I$yxxhR&MԥKٳp>3M6Mjٲ&M|m۶mѣZhiÆ ӧO+ @m۶UӦM}Tl$iܹ ɤ(%$$hٲeڿ&LPe{ /^K.iʔ)V^^twފ?'X4{l7N111rrr5zZ&U}v7N[޽{5|pף裏jJOOرcuTlL&ڵkkPӦMl2IRtt];vU[W>mtVvfemd۶<˶eqv۲ZXXXہ%%%iժUJIIw)@*((lwaxxxh׮]I,f]vwRnXe-}WoU WaW~i,Xŋ0ݱc [̘[!C]8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8hmٲEZXDD+ȸf$IoϟM?&LЗ_~)77 ۷o]vCZO֭M<<<Yikp8ٻbҥ*++Ӱa$Iܹsuttĉ5uۮZJ]|YuV3F&Ieee+wwwu]6luiTddΞ=+///unW127xV?ݻضX?SHm6UӦM }=ڶmt]wiƌ:z򔙙 A#p 2Ƣ#mRXXzgT\\\~?K.:x$)00P~+EEEUӵkWXBrqqQ۶mUk%%%iӦMٳ|}}uQ͚5K8pڴi;w***J~i4zh_ڲeK#bm`ݺu:uëmg6մi ֭[եKh˖-ڱc4i"Iҽޫ&Mh߾}׿Çkɒ% W6mjUsnP22R7nl9@.]%KX+Tqj2sL=j߾}m}YmݺҧOm۶K.rpp:um۶X۶mFkǎ|?Xֺu￿z׭[*//OrppPbbN<Ǐ+55U:u˄=^{5:tHz70"iyp$裏/W&))I;w|;wuE}u"M6Upnj=… Zt)SK˖-1ı8z$ť>WWWIwipsaiyp,rJׯ^)##C]toyf6oެ;յkW[ל_ZZ 6hӦMJNNV߾}uСzߏL&5_VHqqfΜ'YfU``6olY۷O#Fйs窝ͭW;q `48јڱco߮~cMb\֭[裏EGp믿Vhhmf__99{<|gɴiL8I]͞٣٣q;ͶӬmf>B*8'(8@ p NPp8'(8@ p NPp8'(8@ p NPp,u}OΨQ2p$믿ɓ';… K\!P 8s嗧gϞ-w}K/4?Fkg>$ICCC{L2% }{sYgh9rdn< [V}}}~̞=;7tS^z N:) k]wwwܑ/˙6mZkܜt钩Sc[oŮ")?<^{m6Ǐ /$'?qCu]lS<7pC***2dȐ|_W_>{>խu#<2O>dF.]dʕVUUU :*Ǐ%\|СC3jԨw[_җ>6T#tD)~/Oyyy?CM˗gyկ~57pCsgm\2K.ŋ3k͈#Zi|穪n!9[… 3vn|_O^͟?A?YdI^_Q pJҳgOӦ'曛o<裩'[bEjժ6wfҥ9sf|~umݖr!Mm}ݷE38#wyg>6ն.ǏYgϭޚaÆSN=ܓ{,}6SQQs=7<@y\z8%l?E{}}Zk49|N9r=TUUݻxTTT8ly$c=C=4UUUʕ+K/5-ʜ$˗/[0`@F;s٘4bĈ\q;vl~?>;C;<r)ir6?r_j/@apJlvJ̜9Ey-y7rJyĉ?!W_}u>_2eʔ1c4޽{>4eС=z1u%C/־gԨQMwzTԥKVKVƍ`>Ƙ8qb>6-ܫWx93|1>}d[rJz؜8%p\z饩y睗믿>=zG1bDn}s饗fś|{'IrI'5kI8}ꗿ:y3ziGyo~392k֬VYxqMWcyyyvq 0`|'O=Tnᆦ7H͡D]fnާqۍ?=Wus>xJkw;*ѣG+Huu:/Y$^ziӭa…*uP}ɴiL8I]͞٣٣q;ͶӬmf[4fBUosOΨQ2p4447~qi ~ p dѢEя~G.(k8'(8@ p NPp8'(8@ p NPp8'(8@ p NPp8'(8@ p NPp8'(8@ p NPp8'(8@ p NPp8'(8@ p NPp8'(8@ p NPp8'(8@ p NPp8'(8@ p NPp8'(8@ p NPp8'(8@ p NPp8'(R <%@a+ӦM+u[^}R@'2xB ڧORPP8'(8sNnRYe>W^+Vdҥ"Z'hzmf_2թ΢ER[[ů /SکެimIϞ=u3C% om6(Cե.5@g!huV Qt1hݦ[ á*o:ϛ7/\rIy䑭[Xb\y啭7I;+؊u<| |$;CdС%T[4hP9M!7o^~yJ[ N:bU//S^rAeРA9r}G?QVZUJL28XUUU~Yre&L7yW$Θ1c2vwq8p`.B!TPt`w/^>{fΜ޽{wޙ9sf￟/sNpwGA 4(+W /+$0`@nvm0`@dΜ9M#o>eРA%f޼yloN뮻꯲`,Z(ƍkbgg[LAs1)//τ ›F k3gN&N}[L:K.'z8ӦM˩SO=5SN͐!Cb$[{M|Z4iRc`c<#5jTd]vٳ/cX?s+V p:ƹƯZu]k7J|}`}5<{]k׮[vOAkԆ4f|Sdө<̚5+C ɐ!Cꫯ_r*l8T,Hwq9WWW;7xcV^]JtpV 7ܐ &裏v!{ꩧ6&$^{?(u&p*8PUC+V(u : @;tRPCuuuYhQɮhѢՕpکڒ8-JmmV.tf.MW[[+V:ݺuKeX_zuVXKy% hx,^ԥ[)T'(8@ p NPpsq`ׯ_kTTThˌ3`U~l67IRQQ;nm *k8fѿ og=ⴑ+8m'>5Û~8O=TV\+W橧?ܴ1aXyӫW,Y$[-ktPUUU9sAO>uŋc?yV^+#kq%KW^MӦOap:N8!GuTӧO>444g? C>O58vXbΈ6tPtP[V̙Q.sA phŋgg}ZYf…[86l$4۷o-RۢE2}Nˌ37m$6Eeƌ qse%}3 RUUk6/.u9tp ,ȣ>Z2:#p: 80_|Fߑ (@'~7ofvq|lZh8DYYY! %h kt_׳N;7W_K3VlX|y̙}{mbZ!.\}fvUW]b_knt,Pj;vl.6떏P,{I}}}>o?~&O{w Wwߝᄏԥۈ8'(8@ p NPp8';3wqGh*K]qᆬ.C08'(8@ p NPp`~_߿S[s;(aeجv횽+zkSۭޚ=3]v-aeج<̚5+kSۮW^y%[/Y-X Yf5+7n\V~ pn92cƌ̘1#_7Ae :+u^zM:nС*3Ȍٲ8ߞz+wygyR)TN;??]tQ>񏗺`# p:O~ꪫr駧W^.@'U^^1c{^=TUU$NG9餓r$ .hPtr˖-ĉ_ԥtRys=dɒ%.X@'gy7J] 8[o;3OO?\pˌ@waewμyreeԩIMMMx\vey2p= <$=ܓ%K&sO䠃ڪG5{3cƌV4iJM@XO444$In/I`Mb@7{$ɞ{$1i|ݸ/P,O|ɩNCCCf͚ٳg!9餓$SL)e@+8ܔ)S2cƌlꪫ2lذ}Æ UW]m6> J5442mڴl9vm3mڴp MkbcN`Ŋsm[n[7P`Ft \x֬Y(8#p:+%@ɬ9}jܸq%XPt2ͧQkJPOeܹs3mڴL4).h5jT8tҥE3xyg}D#>M'C=_='>:*{w.\{yJ\1&kt`nm8$7ߜ;cǎX"=\L0!9sҭ[W IЁuQɓ3s|[4 _|1}ѣKX1.l}MWi蚆Wjq P"O]]]y+$I~Q1RVVիW{oi{+JQ"2gseIym6t`$Gyd}/^_M}y晭R8`jkksI'eԨQ_snw@{ӷo,Ze[n;w|!Ik>kvaX>yw>&MʲeJ]& @'hѢy睹;K] F1(8@ p NPp8'(8@ p NPp8'(8@ p NPp8'(RK=R[[ۿ-u9F0$ٳg+69rd.#F`c p:#Gsmvy qtE: /%HI~7nVh+@'fHS]]oDm!$c 1(8@ p NPp1$\W^%h+@']*N_\g /+N⪫*u &28'(8@ p NPp8'(8@ p NPp,uEս{t-DzX"˗//u)@;!XCEEEz-TWW[nI]]]K 5o2{.u@; i{`LK]PpfuVNg!fJg!, 80#GӣG_ԩSo<&[8nիW,YYf塇ٳK]MP^^:*#Fh޻w^k2uL}}}H***rꩧf̘1-8 p@&Mo=uuu%&h oVZɓ'g驩I>}{gԨQ9rdroy?.k꫙4iRN<ļK$?3g_L_ʲzFv1Yre&L)Sd߿>Ogر9#$?OK\-N 8)[[o5[`Ay̙3'~zFg}Mө^xOQVw}ӻw7i:vۭ)9s4{ws}_#8"Osu]3`L4IHn$2ezM2%| 56z$Yo={l+**RYRWW7}te)TtPz{79C3r$yt3f'(%6ӧOiS^^::Yfȧ?w};蠃$iSfʨQ2gΜky3jԨ&I8@Cرcs_^СCs1$I&MK6PoS*~z=/ׯ_F38#YlYϟU+/oҥKjժ 8pٳ3iҤt%_|q>gOeee~wq袋ҥK,Y$+u@+/SVV#FaV3gqFn,]tױbŊ.]4Æ KuuuVXիWg1bD,Ywy'={Lozۓ|?Ԥw7oYx.؀-t޲M_֬}}knQl^1!gΜ9sRUUݻ*K.ٳ3q|x>eΜ9YhQ 8  /s禡!oF!Ck(<_bE**6!ӧOό3ҵk3]tŋ3}|͹>dw??Yg$C߾}hѢRѪnݺeܹ?Na$k?~Ct{s衇r5dСf"ׯ_ltxӼoHM])z)_ h>ek[V޴=||[ڜdo5)|+-5 :4_Wj۷o>ꫯNmmmf͚9S6sNu떳:+guVn7 '_kkRWW|0:uj| _l5;Gydk3iҤ$ɀr 7䡇]w4(Iz|sߟ߬{9c7cMnZ^y嗳x⦶<{F]{РAML7w駷??puٳgϟߢ_̮Yj5EKwI ޽{z뭌;6Æ 䡇ʙg\wu9Ss7fɒ%4iRt5_~y:\wumrgOλロw1n~ӟfذay'[}/sO;,92]w]>X"eee1bD:l֯MLo1ݺu3șoO=R]]Kw^***jѣG:\s5m};y뮻fԨQl.]yhQ__I&e…7o^ަH婬СCSQQz+ O|";s$ԩSlٲӚ~fܹ.&ZicTVV?mNR{wFݴ]^^\|ϟ.(_sɭ}ړ߳6+uw&eeem okutzmO-Zbŋ[l}9АgٲeI3g;N=\y啹sM7eժUk]cvH׮]ӟf}7^{-~avo~+VȫڢẁZmvYtiס5km]YYs=7\pƼ&Oɓ'7m3ɼy>r/˭z^zC\kjM8c͐5񺮮bQs\ŋgΜ9[裏\k}əgN;-K,ɨQrg4sgРAw> ?ϒŭ}NK[G|L81'pzWVXѢ^СCӿugFgyf:[$/R?Q{g}vϺqo~jhoں,_WQQ˗/IRu\C+׵]xE԰5_oHU+W|s=>|xC=4gy o?Ѩ:]vMUUUoZ;Fd=l;gΜkTTT,;{M_on^(=;n4 6х^&܍;BNjʝx%z."fAfDLI=PIv^:}>8T:ly{JK.[oʕ+qxbee%ĉ{U^l\+fg8|p8q"?[[[l8Io|PmL2iB}qEI[/"vnܸߋ}ɓ'vg_|gϞ3gOȑ#/F|Gqƍ8sLDD>}:}؈~:z^FK/9_?0n߾}֭[z;z/qx77ߌ?z>Ǐ:thOoΝ'OSO=Ν /ϟӧOc=o u"m<""~駁ׯ_ "v~FUMSmgC|3\~4|X}>3g"|P&O6xq>/[m*"{MC=ǎwΝobsss0A-@Gxz<{ԩxw>O?xDwCr쓯IGUթiti ~5\}?#rݺukRmvڽDzws=GitիWO>SN}XZZooq;JÙT]ҙTmV4xY|| 'xOPK]*U"ngbyy9~x#f4I{C+7ES ]8UŠ^LՄ﷾꫿nooʮe[XXzꅋ/%"nEã e:a0/腗 ʾӸ^D/XZZvQ9xʛ .w+ogKGgkDNF9qѱ>ЪA՝(zsʕ Z^^aUVWWmK-Ж_;\8p _|TDlЦ(ɶECFL'Sؤ%me+Seb8KǎÇgi{?0ؗ[-kkk=cggwͭ]vK._ܝ׸dNtmݐt>- ګ˴4FӉkMɌ'q/i3'_i^oPE6׺giE[>qpV {Û,B6_Z0TE#Cq\*~E|[|잜j> PlSJRizl&7\}*!TU _UU܉C h_UNvѭ U8Uˌ8jU7>!I`? t9oU͉VM?6 6Wd&3*|_w}ݫ^7YqEMR!T+L˅GVY^:B/بxhT]Sv~o:eaèQEK| jX() S&.dTٲ>0U,PI4 ,i+ĉ);ʦUd(Sa›WDt;)t~I_aÌxӀf]9kl&, O>TU h4SQ}!NǫSDA[p߾#1`b!N}i$ɷܔirD&?*TBmM''t̲A$;gMRSDL>p&I9^W WʛÄ7emef6>Iۇ rǺ~`Vͅ?^xU}G E0hSק.ihIRt`f G+aĨBQ2Y6*~~B: o":4ݺЧK *&ʠ=t-~dypW'k!Š3*Sa3̹1 m8|.GQ!T{j0} raN7 p"v~5̰7}nkR {x#F  o"#j3  O)սN3Ft:L[a(m^j*Lca8̖i.ڼi~/0 W*쇠bϰt8Ô n2%stm] JxO}o!~{`pSds౟ (oBY9f`&3kƬ=/g:ɛ@c֟6)nt6)E3GPSC01z)e`8jƐnIENDB`extension-manager-0.6.3/po/screenshots/_15.png000066400000000000000000001752621477302130300212310ustar00rootroot00000000000000PNG  IHDRpA%bKGDgIDATxw|SwFmBi EeQ{E/^ GzUWQPqx^PqT EMi3GILۤIڴy=›܄:m@hBi-SS+4 AD85TmQ57`M r&P@( 5ĩzޚt`y(M8-x@,Wm1,1:L]SxJpSx9,6 +UL8um}S&Xp(ĉĪpvh8ocT𦦀ߺ95NEh@4e0sjJʘ8q&PxcϾɱP;xnH[4o'RoB o n|1@U \\& .!i[9 5]Nxc8Ʒ+KÚN(!N(W p y27T7Yl kj p|^,~ncr۳sgWj]D4tSC olU-xN,*1p )\CGY\{Bk1<}@R0uajmh<@]Û8I ]t9=99m6[3Jr9΂uM>T0X{(đ*5U@od Z$SI3xPV޲,K.7o>9>>r99Nݦy(Y,l6vũ엃޷iӦ{7+~o땿tӏ, kEYiicS'wӛ5k6Ta>,i JHHPAAkk׮K!ox]u㪁jX&pg? $GTwpbI'Lrr򰢢"@p:r8JNN~{[?cexUT*SMnSVUӤwJNNva\LVyyڷlٲΝ;W" bsۓ V\_$1S(:=xnSUNyZގ?s:jڴio۷M8Ut8pf*'jS(?S[%%N.--&M(11Qv^JJJT\\lt))%$$(>>^VUi vrTVV8TiiRSS'KZ\;oN㏩7˧@6M]S+Ʊp g־FfYf n;U&M/ JKKմiN8}>ӂ gQ{G״ߝT47v]M4;b^BB Do1RDP|||w>LopSMV8E3zg<ӆ{N-nlJJJ^aKLL4ZKLL$A̋7@ nYe6aht:L2RO,ӽW(iC38PJ"jZn) *[xDs@X f)!!Aqqq.KCDBn[֊YA7.o0)8>`Jթj8j6<;֦Ϛ-[L gZbefSRRRVU񊏏WrrJJJTTTi|<@ 7qmjSux`z`ۛ+11QM6 {DC_uYiL?6YPmb13~NYY@l 71 tԇ:n״iSYVU?T+L΄'87j @̲:uvn]jUϞ=u'm۶JLLoe˖iu:v}7EԬO>=zT8p@k֬т vZ3:7r\mSS6Y﯋zߙTU?F8e͚5*~cA\\ƎCE!s{7oG=W*ݮ{Wr$iڴi2Ȑ$޽JD9s?Üwy{rJ?Kat/<##Cg}>l-X@3gΌĸ-Qfm&M6UyymTʩKmtbر袋ڧE袋rsSe= o$6mzN ݮ"5IIIzv5jԨFNh8OCpWH 7'- 8ExS}͵^uym߾]sѪU4{l=ZoVLwlgHLը34YlR*7lڴIV/5YfZp.\pMj߾} XUp\0aehd}"n{zk̙uhHG$͝;Rxkݺu7o&L/3 ёPwyG~3ͭ4&u8kF RJJ͚5KL!C(77W ,P۶m5|kӦM3B9g o>cN?}'馛ԵkW޽[=jرׯZj|}Gz缭1t7SNҲetW_ܹsYڵK{vءZh~X)))egg+11Qo,Xs;VW]uUHΟ?_?|]['|^~e-\PO?#vl+=2ejnٲe0aN:餆(˴j\?GzuKx{_t0%C%1, qRT?!hhSNըQ~zOeZ㏫@W\qZl[nEqqq1c}O%K^g}Y͛7וW^ֶm[M:UiiizG@~CvvƏ/á/Bwxٳv53aÆ矕Z>w^uISLQ||JKKuꩧjǎZbl6.b]~!1&O#Fh߾}ڰaF⬳_Bmٲ%h,dZ`\{owE;ve]ʘ%-Zd^%55Uk׮un ȝwީ;vSNz5c {ڵk؈.T^ "h}o<$vHڱhժU>}gq233m6=S;CcѢEՑYN8 uIK,1%СC+p8t饗kQ޽駟]vl駟dɒrfddhȑںuz9{8qFoƻmM ƳTVVJ[z%U|Сڷo~ ڵӋ/x[cdffjРAڽ{&L áQF[n +INSr6ny =ڹs%\I&iȐ!.K=X?|I l፯M*;;[gqƎc^!??_jݺop֭[{ohf ݫ'j̙ԩYAo!YcG@Ֆ3Q׭lN˜>gQiiiC`:H>:oicUcK-[jƌСw̛>Z>&MTˤFpLj޼y([nRntAc̜|>|ݫv+Գ>+IޖFB9f0EE+Wʕ+m6]wu:c8?V&*++ӀdXš_~k{5kb K`i0`rssU^^JDg46zG*7wm o1 _74sxt:exHYv,X1chٚ7o|MڵKmڴш#{*QVӧO7&M$=C:u}8S}##11O?_j݅ںukݫKOf͚w}WJNNֽޫdM8Q5k,3F|~Go@rM7O??ܹ~\R))u駟_={6oެN;MzC:_رCtJ?g^vQ~z\mٲE tH,ƤuzԦMﲝ;wkбgLjiyH9s,F &T n߯-[jΜ9kj=g+//1ܹ~GM)33|C-4 / 8_|'xBwYgK/T;Y,xJOO׃>}i֬Y>}&NoQ=Xz:s~񘡌`XuV D;w1LnM{naÆUz˴YyZ3hŊFԊc@% < բE ֭[u6g38RD=fII C޾YfZb I%9%9|]Gn|.#Y&eUn*Ȩ8i^|EnuY!Awֻ[/?J!Mf+'?S%I[l1$qy*//ɓ-8믿ץ^Z5[85M`R1{`L9͟?7ı7܈#tjÆ ԩzիW{$P٦MtUW]ۿ:쌍NSjڴiDWXXwzb.RWc`;áSJM#wAi:p-Z{j_nt*))jq|X%%%T%(8Z }>#PQQ\.W[6\III!SRR6h@rݲX ƨ3P3&NQQ'.bRi%árN s8ۣ%; \.l6er:8TT] v R818*[8]`8@t૯W_5yэ'DUp8TPP`ti>|7N>lt:P1NSP&Mh1qJJJhyTrTXXj21@R`.Keee*--5@:\qq1JKKys&f˖ts1UN%0x "j @- х GUǶ1S@Pw1>|XrF5*,,T\\ej]JJōݻ.С.Z UkX,*//7 CdӤI021Z-6UF,cXL~*X, ܎IK󻼶 lcZi<T '&Xbz85m6cO8r:FG,ƟN)))IFѠvRRR|] >b1*55UIIIF|ab>HMMf3 pF`*<F`*<0T8x>0#09 *XV֭ZlxٳGvity+̜9S]v$mذA&M2"׿j8 7*IMMՙgO@EEEFhݮ .@ Pnwi̙JNNmݦb͜9+@ڼ{wXQÔFuoԸ߹[o5?L}ׯ$I ֬Yi&4֠Ate)>>:C:묳4g_ޠ ?YguVnt7}ڲeKT@p@DqFmܸQ|rql*BoY'OV~~eSOرc%I/__~EVUs ݻ+;;[?6l`l8p$֭[ngX4n8wqWnnnU@d@Dc 6x[6(,,8D2NZZ.2IK/ 6h̘1j߾&M 6hƍ 4|p?^'OVII7ͦMtH҅^D999ڿ ym}옄881oj/11Q&MvuW(99Y>c3ưa<}w2eT\\vk:cuO׻k`4x`}r:zg/]u r4l|!m'x+~L#n3f7oxrFjjʴ|rIRYYfϞnIgVǎծ]kԫW/I{ァK/T ~sz*&OJII.ի% /c브 6ꣅj(Cx:ZG'x6'꧟~ٳr}vlRӧOŋnA6ͦ-[t~ 'PC1 nWffVVt5jjɒ%ɓUZZ T l|0I &<80=OxӢE hBYYYzguꩧꪫbQVV^z%y15Ubu]]פI͙3{1cec=oĉմiS%$$hʕzeԱcG9NK 86u9䨤P"7#1ս{wIҷ~]-liݺ&NTIݦ>J5\9s/$}GFܠ\.߯VZ裏ֶmnqFuA;ƿ;xz!M8Qڵ$}wz饗v  '4{lIKxS;8ۍ.!*T o$iJKK7U]ve*//W^^^CjZgysݦ@K,ĺB=#Vyy|I9Ύ `:gLxS;89sv*bJqf_xsNYFF,. py JKK.A9NiӦرw0@:w,Io3ƅ罽sN͜9S$b誫ԤI4sLYV=1#//O.K_~~UۦP>6nh@O5l0M<9}b0 |7ٳcR `^|EeeePO<7Xr$骫xǢUViƍ:3u'*==].K;wڵk2 xbn 8P͛7qhʕA[P@"\->=V?}؎\ۏ\7׮#]>s_>峬}m_AT#XиXo#LMo>щat yQRRbt '1>JII1 8|% 7tEsT~~RSS.pr:F#hU "]UTTdt8"R o "*99YSp8TRRÇDhyhD-8NR"`2tTED!- b Ӂ! &Pɵj )@ Su$_@k֬%Ln޽F0@rK0]L09ƽ1qM4Qbbv"p8TRRbK%H'lj֬ zcەDt] Jl0xCa,0)E7nWftK xI&7nW&M.HLL41=!AFo`D1@D!-tL`ey QbcSn$Iׯ׭jpEhlݻ.&0yI޽;S~Æ z2dHM9sׂ $If믿z+-kpLfҥ;wneC͛7Q0N֯_myz&:|u͋9@t! c2eە38C ZrrssU\\,I߿*uAӊ+C~X'x$oĉ#z8%&&VZVZZ*toQiii馛d5i$]}z')S(77W|ZjN<${;Kȑ#5rJ&No4|p|ϗ$=OUVt!:t(zpLfѢEzg/33SVU?l6$I۶m_9s>Ӳe˴f͚ N[Cn:H b\[5:p@.KիW/ 6LSLڵk5u'Lv%{niZlYk}?͞=[Z޽{R.D{Ly=裆rAiFEC5n8WVU:%IM6ggϞ*))QAAG 0u{{ۑ8--ܢ;jԩzUVVnA:pWJJN;4?^IIIھ}M"bq,\[곟b;rm?rs|yZ)zP fp4{kjj޼V^=HAINIkב./YV/Y6Z믿V^$Ik׮.''L&M2cpLpLp|8K %%%F @08>&@r8*..6 &GSEAA!p8TPP`ttjҤe,áZD|@*#09#09#09#09#09#09IJ8p :ԪUJ6lؠoY7:`1Є 4vj$uMjٲeꫯ*++{?>>^QFuXD wyc믿.oٲrssչsgٳg^u=*//h=~6mW};"zKϟ>YYYrz'"ZϬY"z<t2>}|tq9rdlֲe?effJܽiر5l0}嗺;߿^|EW^Q>}}]|]vժU*qkѢEO:X%2k׮{pr-߿n:tHYYYj߾mϟ$]233ukΝ0a|A1".]"xzg5rH 5m4}ڱczZkڰa߯yUV .\͛7_ԩSvuYgժbN̔f4Hq$رCJJJeeeZf:uѺhLpbnjtbYYYg1!۷oV߾}no⠭i|Ţ=z <Fl̙;v$Zt&O=ze˖kj׮]۷ڶm&MtίZ\pڶm6m /e]]e˖[eٴ|@{$;}<޽Vڵk 3f/PNN^y%$$H__W_}U<@H=cڽ{.\\պG}zGk}kp8B:>(J"w\->=V?}؎\ۏ\7s5kVΟw}WTYYY~8p@qqqFF͵zAJrJr\v\>}ܗϲ>}o 7 "駟$wyJOOiݻwkҥͭt۷`r8*//WNNrrr|;vTǎ_UV? GC6mZvڥ… . AC֭[/2@ pLpLpLpLpLpLpLpLpLp`JVUwq>3);;?_7otҥA^#F F`>}hذa8pڴiT>^k֬Qfff'&&FA~pB?z^{5ݻ+CU;w~3@w$iرӧrg~PΝk͚5;Cl{}W_}NZdff駟VjjjX駟V֭2 /h˖-6l+b`E0^#b ] .I?~Xdeev'hMV-)))ѓO>O?T{UuhСkժz Yr+hƌ5ns!I5rHxr:ZnNgCiZ_|nZ˖-lƌ~Çk} XBc} y޽{k޼y9rdfnÕTi8egg3PFFvܩ9s7ސT*ꫯ$ :T .̙3k3ٳgnSEEE=ztA]W;4qJۏ1B=~1*++SaaaXۯ^+.jJJJz'ʬ]VwjO>Y_u!eeeyו_~mݦ 6Ls֯_[jJJJRuwxilՖ͝;7<6lz]fZ?Q͓T1M?,b,38Cs:K-Zкu딗y2_~5jN8uY_媴%s͛5fPϞ=URR+''G}]HSϞ=5buUmڴQ۶mu!m۶M?{9O!>FIꪫWӶm[?^QG%ŢQ?/^>,c[o+ѣաC^3v4in!6ƍf?zsn5Nm6q?\~Zp֯__C偅{*fjeZ~^xA={n6oRfѼyJt۷W[ִiӠ۷OEEEՖtI5jj~mM>uRELeީS'|$jݺuZbNֵ4H?'tߠn~gu?<𣴴T|MuE$H_Sx#IE\rI'w@N#/vo߾~֭RSS{kO4}0b%''{iF6)-Z53fmݦkCjŒ*ZꫯtM7IWӳgOxx,\PfҡCZKN:Uk:3#|eggoOOOWzzzH]8;;RhvzKVU&L_Js9 zKyyyJHHP||B~s"W~)Sh˖-:SSKN:Xks~ߓ; z4RҥK5ydMfffָ$m۶M;wСCէOo^ZRJJJm;wl|m6N>J[oI\.z)5J;vnӵkk6m^xᅠ%R" `իW{[Znz].z; zhϞ=JOOW޽~iº{Θ1C'NTNN˵d/[ׄ tM7>ӪU*Nӫ/RrK}0իWWP-IYYY?pctj֭O͛WU3n !_KINN}ݧs=7s$$$\Nj/XAhEպx[yn㏕^km۶b r~xH]]::@mz~7@dҥKnSRRӧkeO>5[o,>+͔#I]t~m\C ш#*-+++:o۶m+߼y$pumjAD-҆ ԬY3~aH~8J;tPm?}y}R]c7 э@O?$ΫMH wҥK[{ڲe92ݮsj޼yeuACUVVV%W^ =SN<ƍ3Ç?W ٣QF6,w:O" Qq?,w_D9[:8˗X?}t;6I&Mо}*Py:zNN.]+*==7nTO>dΝ+sW^aرcG>}YU u?DD8DDDιz*>}gϞԩׯcccddd 99/^ѣGJ(ŗ_~VZA(޽{صk;rl̟?۶mѣѼysYYYHKKqe㔔?z_|͛iӦHOOwbΝHKKfӫD>w:O""u E+.PX/{XVGplYlkٳSW*""tDY +ֵo:泰@LLL%(< 2ekEM)x cH1CDDDDDDD!"""""""sL9N#NDDDTIuDDD8DDDDDDDDz """"""""=cH1CDDDDDDD!"""""""sL9&p8DDDDDDDDz """"""""=cH1CDDDDDDD tL,Ψ_Ҷw:!///H@6mi&XZZ 2"""""""'L萳3:u?z-ZS+DEEaҤI:H=7oބC_~%8PV-uaaa:t);>,>>@'k׮ĉhٲvmկʛk39JD&BCVVVBǸA*b͚5Z[[[L2Eס5N<~M>6dt_|R)^|]۟׵7Q"z71:u;vѿr8!!!8r>3h<@@@P(+ KKK! O>R{ggg۷od9JDoz;8p V\A֭[ظq#ݻ7M#G7oYDDNNN í[p)ʷb̘1ΝÕ+Wxb(c„ F~˷uy&>.]T|mcǎž}P˙={6N<۷o#** ...JNjD"ܹsv/^_~~c)rJ~r fΜ)_WV-F֏vѸqcoXX\\\cᣏ>Rj: 1"##;viӦmBBLLRVB@@RYXn]ߓQtavp&ucySV]-W_}A!>>V:Vui?)@MYg~g̙3G~`ۻw/n޼TX`hh1cCbb"?~ ???G1X~=<GGGxyyĉ~~~h֬ ӧO/QNpp0֯_GuJ_lll0| hn2C > رcj׮B<|/D´i@"ήm-N:ݻҥ b1z-_׭[7k֬AZZRRRj*ӧBu8poFZZ6m+++U]vƍx,Yt[߿dlܸO}@tt4iӦ Xv-R)׷FU'O ''&&&U._"ƍ@,--?uEall "Hi0RYmkY}W{OOOk=z@RRtRhccSSSy<߼2,_U)((Ѽys@,+{nn.ЬY3DFF"** z7гgO9sW=)uZM+ƪMe MUYϜ&QŶw^Lpndڶm["99R:uիWOm۶ EDDTCz u-L>Kqq1ƍ4h֭[˗/ ^/^h%/H }[300P(P(T2gn:uB!=z_~&MڵkjO PbLJS^epUPP8|0?wػwoWԹRX_*UY5y** x U =znݺ)N:l:tsA۶mQ^=L6 t钮&"޽{ptt,K.%Žr f̘Çwhذ!|۷QXXqEb]6y%iԺu0p@L4 Ŕ)SСCl߾Y VZ֭rrrKaD"KM&k׮hܸ|۲T|A^`ii ĉHMM9F KKK[ .DQ^=|ו>^}_p 9ƛ}KDEEa޼yhڴ)LMMѳgRgj~quuEvP^=̘1"QQQ`ۣ~3gpl9~8͛sɯHԣ :7{gÇ˷i\j/q^W4挌 4iD8T\V^ &T|"BCG?􊥹pԒ l2,[+..cƌ)S0n84h233kiӦ <|\ 6 ??FZZ6oެrLpǎÕ+W0qrcHpEL> 4@ll,FB={6Ν{B,#>> xI~^p~z=z Eaڴiذa pE+pua;k׮tSe˖aҥ8vRSSqAyBIJUcκ㼮h۷oǢEвeKx{{XV͕=GSP&Mo'"VU]^,TP8ٲ!ײg ''h}$gggXYYuLjj*>M6ɯ)MHH8pMKD:QKƉH°g8p@#YYYŋDD;C5bbbd(P,D!UxȖ uo.K^+*/[[x"((AAAtM6xT QQ5j֬5k+W~Ŗ-[t ;CT31S5J!j׮ ///"%%?|j""Mc1CDDDD]ӈ9&p8DDDDDDDDz """"""""=cH1CDDDDDDD!"""""""sL9&p8DDDDDDDDz """"""""=cH1CDDDDDDD!"""""""sL9&p8DDDDDDDDz """"""""=gebpvvFݽ{>>>HOOQtDDDDDDD/xyyyյDڴiM6R>8: puu͛7---i&hNR:8r6l؀jt : Rk֬RdDDDDDDDO:uR{ߎ;b߿ |h֬?'O"((~  @۶m˗/FnB@@>}ZQ0󖉋wJSvmbŊ8q4h###}O+V`HNNv}bΜ9HKKCΝZ4hX_^«WJaDDDȗE"+x{{#>>Ym1j?qu" ݺu+O^^rƍabbwVWDDDDDDD&pj(DL< ʕ+< cADDDDDDOM~:ꊏ? 4(uǏC(M6! D `ll?xedffӘ9s&`jj '''TcDDDDDDD&bCϟ?:v(]<;v9zI&>/ |6mfhDDDDDDDGѡB!((HסK"Uo8c,ѻ """""*T*T*1! hk4J(..F^^ kuMu8DDDDDT*T Psss@YYYH$ZIxTWTgH;"""""RIvuےy$]6DD """""RIvkۘ100V8m8DDDDDT.o;YCS }M8DDDDDT*HL[meԄ* """""*AveGM(WM^X.hMD!"""""jRr@c>@DՇ """"""""=-+++,ZgΜ;wpY,_:),, CYDh]@Dso|DDDTĝ;w0qDdddaÆڵ+tU@V͛IIIXx1=z¶mp}ԪU u8D!"""doo[[[ 0/^~qdDTݻwɓl2ܺu "͛7dzg&MBDDt%&&" fu(Dx %H###4nܸ}b1f̘sʕ+Xx1LLLfϞ'Oۈaaapqq;>Hv޽;BCCqM>|]tpjHosEll,QPPxڵkSSSGZ˖-:D"u:fb͛7={`ĉhԨQ}ЬY3 4 O(,,Ç/aaa@ӦMʘ;w.:Çƍ &`3:t1666?>zXA,k7N666(((rرcXh-[8t|||pq۷:$ =z@$M[H/c9r$0uT?~6m½{`ffÇcHKKZ k׮!!!6n܈CCx|ի&_D򂻻;ܹ8rRl۷6mˆ#`ggDF);w_V^-=QFHLL3$c 022A(VZD"RH̚5 pttԩSbbb@#uQlcٳ'C,C(bڵ_b1[ZZ~!֭X֭[˭_e'Q$%% ?p]RJJ ۶mx=Gxx8Ν6mڨL'''k^"9!""Fqq1RSS'O ;;={Kkoo:u8 CDUVaXt).^DMGFF˜aFFFIW_Bxׯu8D DDD:v숹s⣏>B&M`gg?QTT͛7D=׷ncȑDѺur}%0o<4mٳ'o"cǎa޼y1b9|7z1c`ڵ00Pe4lPRn޼-[h"xLgF^^n߾ѣG!ްakkka͸}6> Z{j+Wz խ[0n8C}֭[ui->?)((zDThkU]^,TP8ٲ!ײg ''W^U9DDH'$ $ 4hP4"55BP#ӄKhMDo 8P HYkC-Ca \*VT}߷]A<Ӊ8DDDDDDDDz """""*:;mA}S"&pbhhccrׅbرjĨ -VxU}M !~>@ll,>CIDD.(..uUV\\\*K}6~cG888 ** u5BF˱8q"D1~x̟?ugϞŽ{/0=p8::*=&MֱPl*k.""wծj.&/DT1F\,Xח/7j4h O>:mf]P _: ]VeϟWZsxDDD5@ @NNa`v~u(**BNNgjehMDxYSN#ۦQǨQg"((@(86-E&L@HH.^;wu5jBCCq\u-!"""/_Fxx8'/Ǐǧ~ׯc֬Y*U^o233Chh(&N(?~ʔ)8~8N> ???h2ݱk.DGGc߾}e~>C$LLLڇ괻K.!""Bj7oYSX^9rܹz777۷uLdPL8+**BffR[4A}6ٮRRRtMeb3g cǎ!##޽{cڴi9r$ yfbݺu… 1` SNũSJ]cy+O4h| ۧT_E>DDDH$㯿BQQ^+JQTT H$Z:DDغukdJ"&&Ǐ/uH ވDFFx=`1c0~x$&&pq'O=z ;w?Ν;s@DDƊ~m۶m۶ERRRGrf̘333|7SSS 4GFzz:`ݺuX|RH7Z1fDDD_[5""D(B"@ ouXjS:EWo&"oLPU۸qcݻ*ȿ ^u6m<ٗd###uԔG2֭?;vD:uP^=ԪUK:JND6mЯ_?lmm! b yԴZS!!!X|yoܸHZ *ib_P իWUWciK.E1tPehFDDT׀OaLJtTgTWH1C+hgS5:cx  !.,((P'`Ν8y$6oތ vnW^F |;fU9&Mg ZPvbH$@.]0`ڵk2eJc*y,?BBBpa*UTBRT2}m6~bڶ}QoӦMmɐJJ Pm0iuի ;;[tU5>}gرc'";;NNNUhY4;;;"003gΔ'dPS~:ꊏ? 4(?8t;vGWL @(Z:DD = WO>/˶-Off&N>3gprr q!̙3m۶Ez0m4ҥKnZ_x333 :uE߾}ѪU+}={Ν;Z~u-W&::6m… acc"ر&M?B4jHebL,V5! bǎصk~7L:U~}Xv[XX`hР"77/_,6>6mĉCy:t;vVGضm,,,cƍoԪDDDČ7DncG#55Ui].]puuS Ƕmcʿx~x"~Ԯ]ޕ A(q*PWRRV^ ///O>˗9rn޼" u-Wі-[+V[lm0c \pUJT47Æ CttcݺucǢVZصk ~)u@uVիكgbРA-&M333Svusss{%.jܸF{iҸ啫j@aYbYqqeC߯eNNNe͊Co~ {EDDC!2'""""zXXX &&@&bE ϒ_KRl PXTᵢ~m jCCC4k ?u(DDDDDDD8ƍß8]BDDDDDDLP"CiJj""""""Gݤ~ """"""(^CDDDDDDD!"""""""sL9&p8DDDDDDDDz """"""""=iĉH"TK=B!'zW1CDDDDDTIRR066H$@ xC^^ "Q%HRB@{_ `ffcccdeeA"0CwDDDDDD$Fɛ7\^?;!""""" mSՙ10018D&p*@q]%p!zw0CDDDDDT "蝬t """"" ]Aeu w8DDDDDD}8DDDDDDDDz """[+WDbb"Ǐcܸq?~PVR[YYaѢE8s ܹgb尰;v ohhDjCVDDDת;""" 駟|rԪU ׿SSS_J#P('`4nX^Λb̘1ΝÕ+Wxby2ĵkM0ׯ1|cD"~ӛD"|8{,]%K(N1"##;viӦcgϞ'OۈKxT)iVp}$%%A*bݰVvI"z0CDDDo+++<999usšC0|pܸq0i$|񁋋 {nbYf4hL>]}„ |ooo| C@@|8֬Y4`ժUӧn///Ν;x9r?gϞʕ+cƌܹsq=+F۶m1zh?MV$΂ ХK_hӦ| X7VZX~=мysxzzb߾}pwwGjj ((j?OL>&&&زe ^zԩSc&M"))8E"|}}K$j$VZaƍHHH@aa!4iΝ;B"H6 U~~> :B"D@e^ 2D'sssPESN۷o!B!BRZYMLLpADFFbڵx)nZ6Q &&1cǎźut#BcX`B!VZSٳg0`|7 P(Ă PNѵkW 6 GŃp},_~%֭ 777\p?ƹs0n8z >>>Je௿7bԨQTl߾'O`nжm[lڴX8]{e7dlÇlj''Oʕ+ذaM6 x!R)v*_'Ю];$$$ɓ'FϞ=U P{{R,mlU|bH2@u푘{{{ԩS˖-Cbb"!# agg@CCCx{{͛%!"ѹ/8s v؁̙31c ۷oǹs`ff#FU'6lP-Ecƌ֭[KׯG~PvRqԩ#bΝ2d&O`dffWYfа+_B'"wOvv6< ǜ9s .ؿ7o/ `mm-Oؼ|QQQ7o6m SSSS_JJ vƍ+ H ;vܹsGI&*c矱pBo_v2h׮ի3f@$!** 077ȑ#aiiuUs"zǏǮ]P\\^a-T:֣GlҤ f͚ .`S{GHHz'''lذrypoܸ@[[R˩_>^x!#??V¬YPPPsssݻ~GbpssSyNڵѰaCǫU-ZiӦaÆ 000ŋ^&6l@~~>amm4l޼Yoٳ1w\ݻbHHH@NNѣG;v W\ĉ~󃵵5pm=tsrr ++D"Zl ܹSiۉ'_bΜ96m ˍWfɒ%ؽ{7?G)mkذ<.xzzʗeXQ0eʔr4hXxG79T*֭[K&33ӦMS-//^^^*=xdlCnn.'_rJcWڿV;"""=Bcں *kFnhhsss<~XnԨQŵk? 44L o>dddTx֬bݘ5kVmO<ھ};#GT.""zwyHNNu(DDDDjaGdɑ6m… (..Ɯ9sP~}4lK.۶m[(qe*/_DZZ'33;wV]vH$J8p޽;/BM(***7NUokkk2999x3*_҇mǏ!H1cϟ=?w}/D>}-G޽ƍ+*}JB!<==g&DK,/̔mݺ#G'"M$m۶;v,g/$* n=ٳѣ?cРAXt)0`:tǏ#g޽{7O?ahѢlmmѷo_899v؁,ڵ NNNBΝn:XXX`˖-l~^˗/cJqe޽#F@˖-amm>}seθEDD믿ƫWt 8Zխ@gQ :4i:t耐x.ڵ̙3Dr)**K|b ѣGްARR.]͛7t@8::*H$2e  > (**BRRUNJDDDD yyy%κݢmy.PX/{XVGplYlkٳS'`…={z#"ȀX,uDDD@vD"% w"C(|uIL@LLL%(< 2ekEǨy8s #FJxΟ?={} iP(D"P(Dff&,,,-STTL&oAL著/_bÆ ذaC!"""""5H$DF*yyyɁ@ 7D &p*Hv,jWk"!"""""YGo^q ѻ """""J JčomSD.&p@T7ѻ """""" `7N9&p8DDDDDDDDz """"""""=cH1CDDDDDDD!"""""""sL9&p8DDDDDDDDz """"""""=g HtB{uuMu 8DDDDDT&T T cccC$A :,R)<Z}Sm""J*B(A fff066FVV$V7&"_T]]$od``sssy;4IW}6~cT6&od `llF[m""8NTCFm""J$:*Vt75}!aGbccU> K?x .hҤI$""")dWvԄrem8ꂦDD Ξ={: """VMJhc ]ӇcڵH#xuICBBB0aŋعs'ZnQF!44.\ʕ+Qn]1bSLqiD!!!t"""0i$6Pwww {ァ;vڅh۷ܶ:::",, .\M`kk+/[n֭[Ju˔H$;g߿%""]DāÇcܹ033YL+WDbbbǚ5kǎ|0 :TWu wөS2Ǿܹ3nܸ!W]ݺu… "$$!!!4i |r`…ӧ FX,… 1yd,]kF`` VX'NA022y|SUw{ vQ+ "#,DdPFAF6\f@P("KARJKh&-Gr'M9-[W^Qjj'еk$]Ok:{^x͘1C;wvmQDDFZ`vAnԬY3 >\W\q/` VUK,Q``*>>^wuj*/ٳg}ۇ~3gȐ$]V{EX!u]4hj׮`=zTSN}׵lR>T$_^8%DQ'H[f߯-YD&IK,ѩSt1${7o.^gjܹj׮ժ7:té:xNГO>.]7t%_TF %:uΝ;_Vס(HqxIr5"UzufZf֬Y_]!!!ÇkΝZl݆/U\Y~~~ڷok]jj٣5kӧ6D+/6MqqqWUTbac0zwLOOٳխ[7K>Lg'|~A˖-S \ϱZ5j[m۶MSNu{Z|e˖ԪUԤI"ŝߐbJ ŢozWLl6۷O钤{yԩ~yl 2DcǎÇ%IF 4 J/8>uΛiذ]V$99Y_;?O:v쨇zHd5h 6L6Mfқo)zRl6gK4l6כsN ;sfsnUԞI22y Q)""B{qe2=zձcGiź$IƍSZԽ{wuMUVȑ#lժƏ~Xqqq3gVkǷZ r} AժUe\?$gUݺu5e͘1CrJ :T_~:up%cW$;vm}jj֯_#PzrS~7]zU[s;wjׯڶm8qB-d6U~}:t1eMИL&{ョE㌷QFE YΉrܞK.)""µnҥڽ{Ξ=^{M/^ԟ'gϞz뭷3ghنXB{UBB͛:wڳgۭ =v  PTZU/^u%K~7ΕĬX<.]諯xfٕu(uTX1gʗ/_lP:11\222xbEEEڱc"""TlY/ W۶me]|Y7Vjj.]$ͦ+Wjر3fΜ9ŋڲeK?sLZhk]޽믿ٳׯ,Iҏ?'xB~|=sZb\ZoX%K$]7' hӦM:uꔮ^~X~ωb<9I4m4}YND .Ըqsjz>^6mokȑP\\z^;(==]ǏWJ맟~y,\PSLQ:u4d¶mrBg׵mszÇ]/R_~Gt*5oܜwޛsXκ9Λ{;[n9hs1w˗/G}Tl:.vܹs2rpMqPk׮]$eJro=͑\VeeYw#5` W:088rp(9nJ@01(wRd2)333׫C2wO_׍' @HÆ Ld4jHwv[P͚5ɓu1B111QTT4sL :T'O$9R˗W޽eZ5yd 6LӦMmݦYf7_5x`lRRSS5|p͟?_O<]&z^ٳg /hƌܹk{n Rvn4m4o۷}]uY-RppUѣG1r?(((Ϻ*xV:v^z> /*66V ?(:!٬0#dBCCdv|nr筺90.ߕEf߿_ ZdL&,YSNرc< I Q5o<]xQgϞܹsծ];IRDDV6nܨ˗/СCڻwG?tAW٩ڳgj֬c?moիjݺuܹSǏW~Զm[EDDĉr8nI&٬СC7WA s{^]$HqşSxjԨ~i֬Y=zt)ɿ|`t|ʗ/Qt]=jjٲ>sܹSÆ +1rWݘfU\YΝscP=+lJ.Ţ1c~š[n_|P?kիWڵkw^w]wiРA]uQM:UǏuh^׾}{Owqk.͚5+-[V111ӧ.\hժUZlYwѢE;d2T\9?^~10:8>#uM={;k&--MJNNj YӢE 6L3fО={dXTvm={VX=zԷzAݺu5h 5JGmݦJ*K.)::Z/^$U^]~222JE:/jUVk׮ @* {f(4m4M8QgZ5j(}ڶmN`IY[k۶m=zk]PPۧU*+]kC2D˗/׏??\W~_~;Ce˺u5x`-[L?VZ&M3f֮]~IP0Eꫯ*..Nlڷo%I{BBB|uuq:fq{t9rDte߿?v}ۯO?aX:t  oʕ:}t7NjRխ[7UZU#G$[m&MjCu͚5uĉBŖq^}U\R={ݻ]###5vXo^'Ns='xBժU<ߪU+?^?4gYV]vMǎӐ!CԹsg-_\^VPjUl6gUݺu5e͘1C6=tP}ԩ7Õ$NzO?顇R޽ULlM&&M˗kٲej֬ks~Çvڊև~}fCOaB`F'P"L8QW5m UϞ=[o)!!AgΜٳ#H;~;%I[ּyT|yWy>֯__;?O-_\Wjjkʕ+o>]pA ,d҂ tI9rD˖-s͊+w^%$$d;8p@'NлᆱSN/9"UVu ɒ%K~7ΕܫX<.]諯xfYAAA R@@@~ԩS]=E{zwz9͞=[=z~i-^8[o %‘#GpBM815kl6ߖqVUdm߾]-ZСCԺuk ǹsTrB='33+laÆIpϊxט1cTlYCןg%$$pW[N&L(c(1͛իWK.n/_,Iѣ.\sè֭['٬Ǐx ƪJ*ڱcG)q ʙo]A?W_}~[Oֿ 8zBCCռysm۶̙3t}VZq/^+22RwyܶjWu*Pbl6M0AcƌQXXkStU=ù>wݺuj֬ڴioF~z5jH?l٢BSJ tkƌ:x^/ʥUzzfϞI&M6lVڵ]CpӵkJŐ5j^z22jԨʗ/eVTC(He˖-ճgO׺ ͟?_#FPdd,*U 9uΞ=8ڽ{Zo z\_9wOlٲڵ}UJL&EYz|0azիW+66VÇw]E,&&F}o-?;Z`*TX333 4ʔ)+66Vk֬ы/g}SXÛ*PL6Mm۶u[;(==]ǏWJ맟~rn:=3sɓ'+R,9/9rD3fаa/kڴi> .Ԕ)STN 2G۶mu՞={Էo_rddd}Νsz,>Ç+?..5vϽUV9nq^<]7NW\Qv<~~nɯܜwޛsXκ9Λ{;[n9f,11QVa@eePŹs\Cnu;MqPk׮]$eJro=͑\VeeYw#\y #[^iB΁~F?6 [dRfføi~E1&wOc#[^it΁~F?6 [dRJJ222|Jedd(%%#LnӜ9seffJ6oެCʹ/I?ԢE [εiӦ_ h߾}ҥKF)99P8a=2g}MEkt[jj$i˖- S:u\רQCAAAZzZnVVӦMeիWOUVդI۷O111n ;zSa{˚5kl6[9y?ƍkH}Z~&O;I&OdXJ*ɓ:VLL6lؠm۪F״iԨQ#u]*TЎ;4yd%&&JhȐ!ԩiӦ"'FD[5kt?Vnŵ}jܸkҦM}v~ڵk+00P{O?WUBܬY3MaqϞ=5e8p@O믿^zHcǎ>\QÆ n_k;Zjq_]oذ-yf^ESN5j"""t|8N񒤀u*Ub_-`mP0xj O?UǎTũqƪQ<37nԄ ?AM4ћoZn6lؠe˖Gс|>N2ٮ@iA[fk#F(44He8QEFFjƍ.]Ҟ={s)))) 333u"O|'NpQFRFC <9MV۷o֭[Ofۖ$nl޼Y-[T@@:oc=-[5h@#GT-TreUVM?ի3g_~E>WjժU;v^-[V=\hBeFfRVꩧSO۹s[2JII2~6˗%I#GTŊ_~E?=*٬ʕ+ܹs7uNӧO׈#4g]vM:qM Q|TnNMY;9,gǜye[L,%&&j: 0õk׮HII2%ed؞rs.+˲qّqV( 088GH #`p$p 088GH(n&IZblduh(fCv]еkdp8|ZVo%=8P``| d2bbߵ>==]iiiJOOatzJj[`$p@`( @JIIQZZCD[EvFmwPb)44l +???vm ԕ+W8hȋQ*bcP"lٲ|!Flٲ i( _UF8 u(VQTn(Q0P{%B[V[P2%Fhh( P,<ڻ J z3X{$B[EqT[P0xDXXX^қ O) ! l_Ux Q rhjJ&8ИKP팶 o.QH2eԫW/jJիW$;vL7nG}DGw0OJOO/imJ.e }4iBBB}ݺOko \ftt:v(Ir8:w6oެz˕ ʺOV;ws=綮yzw_kѹnԩS:p͛WV-S#qn}G8pvUmۦ]ɓ; w 7K1mt3m@Eڷo3fl6k/"I_yiF^yB%q>3͙3GEjҨQ4m4 <8>Yefff+G֭[ժU+fx,ժ5jsΊѸq_SZj.1 y#0L uZDD$ܹs>d2r)/U*mm@Fʖ-I&l6kZx;wjΝ߿4i$޽[.]*P6MW\$iƌZ`BBBtlj}4hϟHmذ!c%&&*..NgΜѨQyf%''K4`l jժQFr+pk()Z,[>j׮믚?~7ƶh"թS'm<>cvuEiiiZvRRRcy9R/t#Uzڵ0a۶Yfyڵ.^&9Yt}]Fxq0(m@F($$DׯwK,ZHv#e…զMKN&ݮk׮yrۧ[}89Ytի%IWVnԨQ#޽۵o'詧*Tl9ц Զm[ըQC6m5jݻB ڱc&ONfX4duIڴiM(:9s{QRR߯իZl1chǎS[l5--Mn֫VfZ HmCu E-[nt}X|J^U% kӦ v{.111jӦZn]dRʕe˖YVo܆(uɕٴiF!՚o"fI%)55U1110`+v1SoԬY3MF~?ӧ8[QڝQڪK/~)##Cρ0c ѣGk׮8FvTq;ëǪT"Iڷoq΋Sj߻wo۵Ο?om'|}ꮻҁԧO9_9Yf/IZd}Q-Y666VO<]P{_]=zaX|BVz쩴4M>KмyԼysխ[W[ֺuvZXB~"##ue}Zb̠ 4H-[TXX~͞=5kڵڰaRRRԶm[fXB ,(9]V6M;wq{~FEiwFi׮]W_}A?qի^xA{jʕ+gyFgΜQhh+ڵKÆ +tmgΜQ׮]ui jӦ233|rmܸQÇ=ܣs7?*+k5t5k+11Qׯ ׋(}.׊?X͛7׃>'Ong'&&F 6teMiFCSPPRRRt!uС@1/_^Ǐw[O?T PxxvKZF~1'>>^&Wpp4Ţ_e:EDDhԩycW:uplbbbj*eddoɱkl6l6x}UJ$)IaϞ=+N -۷ɓOjƍ;j͚8q n׮VcǎI\էO _O2R$p|Sݺu3yg\)UViРAիWZ)22Rֶm\+WիWqھ}{ݻN<[fvE\R={T Bĉr8jԨQSBB$MVe˖$>}ڵf%p8TZ5IR5$]pİ/9u~gIRxxx>x uE:tp'w駟tI5h@&IM4ƍUre5mTfYN8'N:lzwxܞǷ_~E5j5kAѣի2ed2 裏OM6߿JÆ 8pZjd}GE:fҥK׿U~RRR$}Zz*RYp8 p8t]wB 7N&Yd;'))I^ o۾9W/؛UxJ>#Uá3gj…6į M6/ׯ[K.UմiS5nXw}>"V*_čWZUsѩS4m4=zT˗//TR dcए%&&j튊ٳմiS+88X͚5Ӝ9s/nk7Xl$gϞuO=6ov;wç}j׮koFfzH8'IIIe^1fU\YL>];vМ9s\I(FҚիWj+!#]ҴiSǻ 3 Qhh$iӦ2LѣGeu*))IǏwݼy+zAXz2eʸ_jU=n=jժݻՑQO>Q͚5]H:۷vvZ7`Y,]"'Fi繹{ﯭ[j9o%c#;Eo4bMk9--MSNԩS]I"eff*+^|ADEEM6^x I߷x+WN͓$M0Awy{\(V}uG={())Iڽ{RRRӕ+WO?)&#:uJԵkWIRݺueZum|:$iڵϟ})%%EW^վ}4o>v7RTjn-VA(lƒ,$" !ѐ $rd!Ag9{ffz82|/@ p 8#\UUUjkk3~TW͏466f׮]inn{`&MORYy鳙3gf̙Y`AMWJ LQ&_}f޽Yti)ׯO}љ?~.,X uuuYxAa:bԧ7Z/^_|1Ir'IV^իWoz|t_\;#T6̙3ٻw~͒%K~=Yn]țÙ9siӦ.ۦSg֭پ}{.\߄o{ۆΑL0JҥKÛ6_n]-[ʜwyU&nC{ꩧr/?Yf c#`zޗ$я~ԩ^k?^{ӹ˗wgo9cvڼ yߞ G>(6^ܝwޙ;s{ =j$Neee q2nܸ,kR]MM6S-Z(k֬ɬY2k֬_>?2U82 pFQYӵ_]Mz3{,Y$K,ٳz2U82F`z'3s̟?x&Ix≡, 1bӦM9#vNK.mq.kD2`Ғ /0sL=؜iii? 0;ƍ/~q+6lؐ{7 ,_ŋgݺuI:Sc=6_}jjjr]w/f ݩ;(o~3uuuy{ߛ[n%˖-ˏ~_>I2k̟֬??~jjjSO[n)s@)(Ԕŋ+ȇ?,X ,د_sssr-ijj*C@O8ܾ}r7gҥ9/Gyd{'r6&#6lؐ.w؅ 8'(8TP%+8#Ю]]B!jB0577ge\X#l߾= ~_˪]АfMMMill̮]2pٱcGvQR!b @ p NPpl# C9$'tR:777gժUٺuk*MwMTUUOΡZF60(OO>MeeeN7N6mHj`t۾}{V\ԨZJxO`l߾=V2iiiɳ>[*1kMMMMnر0mݺ5?]ƨbPYY\}}ޑ (yw#_FQQQ$immMkkk8c=GuT^~|_Ϯ]RY {ɺuo|#w_\R۶m˴ir 'tNh((# /~_kG((uw%gyf9>]oG=3!s]w宻*w)8@ p NPp8'(8@ p NPp`qW2Fr^rJK(8@ p NPpT>}z{s={^+87n\N:vmmv[N<Č7\`P-Z(k֬v_K [f͚_|1 .믿^F.0nݚK.$VʪUrNoF,XP2Fp~_;n+L(8#pf$K,+;#O?t*1䨣ʕW^y;Yr>A[뮻.^zi&O\r^pƨ̟??7r%q'N?\}.$IkkkKa*1nYlYxrtC0F䡇wߝ;w1ߞ_.+;O?]R~ .,w م 8'(8@ p NPp8'(8@ p NPp8'(8@ p NPp8'(r𨩩f̘$yc塇ʾ}\!0mڴڃ6sL9ovnl۶L=r555͛swfI>UW]kH( krsNf̘M6k?gŊkk.g}v >$Iܹs$~`k[fժUi;wQG KM@X`kiiI&I;r!I[_o?(#pFk&IN<$ɖ-[贽n;(($IO|"imm͚5kvڴ6Ǔ$=X9K!{챬Z*zh̞=ٳsuC3<#r䩧ʡ+ܕW^C=4O=Tnpb1ؘn)w3~,YnIxf"k֬@0|+_)w pƘS .,S%@_B0tFՔ*xcL8'(8@ p NPp8'(8@ p NPp8'(8@ p NPp.w iӦ~'~xZZZqO>9W]uUnln,]4+2~2W bЇRSSGy$W׾̝;SHښy2uԜ}e`;S$<@.nG״t PQ*ӧOOsss^}ռ/$9#<,b 0"MMM?'fɒ%oF򕯔Do2uuu=}gsG'I6m4 ~'I>vgǎ>O?`o߾o3Nvޝ{,^{mϟw]ٱcGLݩ==Qc|]]ݢ7|<SU5{֭[/y{w#;vȶmMCCC>3HKKKnlܸq?#ʹiӲ}rѭgƍ$IZJK0,b 0=#iii'?̛7/ۯΝ;yP!$=\~~/sG˗g.`ؾ}{q.'8'(8@ p NPp8'(8@ p NPp8'(8@ p NPp\u `x]&NQ1fdҤIe+2o޼\uUǧzjJ0F̛7/;}3 #>(/.w pƈ%Kt{n…X _14-Rj#p"'(8@ p "cDœ'O.S%@ pƈ]*1^J2`]0@F8'(8@ p NPp8'(8@ p NPp.&LǧW 466fϞ=.!%2e 0dS[[ǧ>. (8SJoR]])S `t0a 03a„rǗ` or8'(8 /̛7/uuu8qbK/ϯrNȹ瞛N8!'OΝ;f͚SN'38#KEEE>cٯ}Y|y>嗿e~_$I>dyZEEE#^[xw,]4=Xnݚӧ.œ{I|;eÛ[o5J[κur饗SO3<ӯT?|~ujkųaÆlٲkO9L2%OOF'pB{x}-֭k?y{ygsWs͊+Lq?MzG:7yG:ݻӣmDO<=JYti_WYlY7 (#pi̙I+Wg90NhΜ9;wnd֬YYzu}TVVSOͬYR]] 6dŊٷo_{>9sgB"%N8$c=c{,]tQfϞ=e 駉'&I{v~ҤIzTWwcinnNkkk׭\2t~SN?L81sO*++sYge޼yyG|OӬX'ONΞovޝɓ'gԩ=R4eʔw;~;-[,7nwtPw{ɞ={$O>d=NΓO>5kb۹sgMӧg;C$ 6䤓N'~~sIKzUVeŊRbS">2555:F5kN{;$<'tR8㌬[./~}f̘38Ii0v<9rgͯ~wq9$˗/> U?׿?\z9묳r!*rH>\veݻo k}#ݵkWۗa(kf9蠃rW#H8TWW#Ȃ >tPvܙM6dF TTTSO9眓s9g> 4iR.zٵkנi]ve٩Mcccrʜzٹsg^}L4)&L믿>ųdɒ$om)~E墋.گO}}}L??׾رczQ5D[1{z.}ݣsEmӋ:QYvm֭[L0!555ٵkW֮]e˖?q|ݻ5kV6޳gΖ-[e˖$o8s[.۷oN;-~x~_eƍimm)ye֬YoʣSU5խYreVZqeҤI9蠃cǎ\2ַrfΜ9y;ޑsg?Y 0mڴl߾etkٸq?$y3IkGG=.ނz߾8]wSCGտ>Wgyc]m}aRvL4)^zi8lٲ%z]^.u7*n۶m-<>L1cF6nܘ??˶mۆGחnM:5O=HҜs˿nq:w7k |kC=4 .,wI]׿+yޖ+%pXCCCn˿ >g_|:YP01 ۿrЫ|K_*w@ #p NPptT17]0F={K80gϞrD}}MMM/wP]9۶m˄ 2~TWԔF#o>NtcϞ=~ a8.W~^0ߠ.llqTKKKKVå6&Bhí 6F3%vc9`A[[[Mk(._H|BΝ;wrѥ6d3iҤ477./R($ eʔ).Q. =>}0U'Os=W2]e gj$boo>^xadҥ] \ve?~M֧kmۖ˗[oMSSWXVCH߅jȃ??UW]\8sL/^$ynݺ,gT0aB>$gϞ!Ir7gƍҗd[fp饗cX6mZݿwimmQe=`e+1#t***RYY˝0aBnL0!Ir 7d…HDg? . ƍKYlYnnΕW^>;wmݖ{キ_^hQN9$SO={qOjIOytͻ_Uϟ_g%i#p=Wo}[Iŋ3k֬YfeŹk.__"˗//w)I oo>nܸ|͜9sreu,^8袋rQGooe˖<}aO|W\qEx'hv!$IÛ}O>$5 SEe@)S_s5;wnܹs $obҤI.g?›;|ݯ}ڴi|_OCCC֬Y+2~\~sae…{PVe[Qiҥ?я~???qyGԩSs 7dyGsM7n C=o=Gyd.䒜uY?<yߞ$9s7̝w>(I||}ݗ?~ & .\wj;餓_*;vhoO~O>O9sf"]zݦzOl#m UL2%I:ߛ &W^Ʌ^ٳg|0-Jmmmn\|Ź[s,_<_3nܸ|__o1'pB-ZO|ټyswdwٳg?iu[og>̛7/7xc;466"zj.wtGy][2~}Yzu{_S_='NLmmmv?Ϥj'/_߹' 6#p)Sr'IwZbEjժw\O7x#I2o޼<=יgi$/5nڜs993=ƚW_}@ʞ={v&iN׿w뮎 Z{x.}ݣs#IݻgW>l>dܹ;wn:,Zh›jkk3nܸ}osmS^}lٲ}N}}}N<֭ˆ }.UUUQG5du馛]6W_͛Ϲ3iҤ̘1#-ʒ%Kz_wk픪ȧ>A'C* %iNwY@OtB)g/d_\WI[K;kjj_aÆ30w}wYtiN=Դs\=,]4rhhhe]y7sw䓟dk\s5ٵkW_eng?~-X ,د}ɃrOmŒ3|;$ɖ-[|ߚlݺ$M@FPgl0֛9usVԱQqeϵͻ;QÄM;wn>QWW^z׵6$ׯo`>}z=^fٹs P;k>OĀotAٽ{< [!NsG9tq]F%HkqO[D}՛[nm7555@k;m>xDum%;O׼kys~UUU7n\֭[wc7QL–L8}yݍ©⸢_e=™0gΜ/M<z2ʤ{cpĉꫯO|9ɞmMsqɕ7]p iAǍ+Wݻ4iRm򫪪ĉkx'KҘMhL!;9//SmӸ${~_se&Mʸq`tA#oVX5m['g>Pe zz`.dչ.NJ Zԫ͛7y~ĉ'N8qJe[iU=;cǎrQH>۷ì"թɄ sY~5W8Ij;cO2eGǍ)mi1cF^~rQHf̘ݻw455ٳggCCo֮]Ӽ`&i p9i{mJUz8mm颽0hܣ w5My1㮞K_Wwxp|_0V+mLۣHץ-]Ww;TZ{,Cۈ}xi)iطmk׽ݣGM> GwKtTWSa=JSg!NmMq$"oAJ$MqDO"1HjSOݴtqM g5)bh㎣jJGޔn֯7<*%;6ma)T0Z4)S:򦧝z]z~]p8}Is ޴7mO׶+qVՈަRuI!P2C W1Q%Hձtt^J߻YwSzI4I:n)Sm8*بU%U65bu w#lJCҩW=`pӧb)7Q8=m3^:h8:) IZx]蔮yU77`5g(8MWi)9qN[fާ}uuKǽ-V]7CaXFu US:n^zMB⸫Vm}Zz8PlpWӤz sFp 5uW[|w5,*LjCeTwۆ~TT M:nT*]鮖Rp`.b]0u›B}3l#v;(ǽ鮽/ w"JM})(Fߔ1}sNWz YJG4u9n>I!@Û#K*Izݵ]=to S2:@›Itշ 7nQ/Aف=)=׀f waS`aGtun OW Ftէ!͈}?@C0x lE[_™owP3x [ 蟾6tק/zSŏ{RCte5kz]jD7I pJsFțHx][wlxS~ANsE~`n-{{=hAW5 4OoaN_}ӗs f#HAU0bB#A0 (> zS&)V0!N_߷ЧH6K2=y߲)Z01zbo/f:hcH2fR|Pc6)% AM/w B80}WIENDB`extension-manager-0.6.3/po/screenshots/_16.png000066400000000000000000000232131477302130300212160ustar00rootroot00000000000000PNG  IHDRr5HaPLTE888~~~}}}|||{{{zzzyyyxxxwwwvvvuuutttsssrrrqqqpppooonnnmmmlllkkkjjjiiihhhgggfffeeedddcccbbbaaa```___^^^]]]\\\[[[ZZZYYYXXXWWWVVVUUUTTTSSSRRRQQQPPPOOONNNMMMLLLKKKJJJIIIHHHGGGFFFEEEDDDCCCBBBAAA@@@???>>>===<<<;;;:::999555333""" bq#IDATxoTSwZ0TZ3ٝӎ=ө[i#= QDЦV Vb*VQT [b( Hb1s{ܵ>]랳{'; k-?旽?/}T֤UIQO=y?)ƿ{oOP~Űǀ|E"8PS¹f7kWujc cL懳sbP Tт3Yզ@#Y( ?9(y<?`q J,4TM'x[*5POo/ vk/oZuTW_~iwIknH=64Wo[U٪Nj4Vf&(7Ε[C1ёҌ)j'p^43>!UXiD2s(r(`LӀ"ٌ*+RB-*ñSJUہmTgV>QjA;p4(Dbl֡z-6WBt&4ntE ~tHZN#OO0BNA$߇ 8>b]&eH9`9vLzo+m<_y%@~mDLeѼܯ`; n0~Cʐ}Mph<[Ocϟ?dЦIz-bji aB[f3prRйyAim\q.<۠E>X4䜃]1e(~(upJ`w=8zjMK[-׃P MYI׶x;A| 'k&Td֤Eƾ׼ d7;-p}_c`4q` Wc:,R:GW״^eq$bT;A8ӄßp]pJISV[ ʧ;bmj|0-q]N܇xlc YL:}95-uڔ__I2ȾHK 3jt9_cGAu}L1qkբ ;P˙O!N~Ŵg1̰wL ؅׳y3wP4siD«)ZhcfUR`+sCII<;O2qx`e/11&ӒYyя>(eRqkphGu[;8ÝN18U$phGS`G>gL<<-!W" }TE+@?Q } B؛ɆY XV\"PQt @Qy:p}v4P~̤4WB$~EP64PADWTNc#Sq p)ĄfCgX?-\(`t);.se)^Yɟ3 pxnlzM@!N،No6Z,Z5)Yx*W̐q\Oy4̝gReo"l5 eJ&z{T0xZlip~Dl&R-kOG7ʥ%!D ;aM59[J ^hOG-]죉o FPBM]Xg6wjn{Kբ2r-\;8;+9V~Pe-WKiFʩjcޅ^!ݗ !Dr3yL*W[k,Rr(]rBe=('tQ Ry&b ^IU zDq@6e}a:ݸ$d:dxP=ޜ"wY*E0+Koѿ(O_?ym%uO 8uO,h#s(2T9Q"9'O3 nILNwi-!!fn.uq?[ ך>᱘vR//:!RJJnNC<a4.# 6<Ƞ *9Z~>):t痤^{ç CgW _P'rRVd*a^r+TPN#t}VroJ"m2cB QN p X̐3'qetV\ tܡGx8[ ^W06W0]TB8"ڬ <"b6l\ kcӎ`ɗȜogV漅Qz U?W7*Vg1˞v},{quLC&!B!NIG4*۽,frPw;͓?XÛXY8(xtNy>+Sr\\6|GP_Z ]G|2*O _Rz[#s_TͿ3OނwQVzm~9Ny67zg< `>#uBn&bÆAD1`|qcؼOz{Ṳ:mumմG E]]ڊ,v#qhHRgTk R9B>w:38?3ߠ_GdW^e9G;\{,U^ĂHJW&*,rk}x#xqGJwB!ʌhNX8_'P7[])aDWid&!5.A[K+F|ySYלf7vup~p ZE،@|:9|N6D*:5*[ BVlJ|눯HU9;vX{ rC;<(s`(E{Obu}r-Zy]]|ᰁKX]_DVZ>v4Uޕn:|b+G*_3r *7 jo06QFP6ʡ]{5׷X֗d#?UP [\b,skGy;Jj3T>(T(?3Y׷K﭂D2%"9G!㮀bt)Sy ji/L(-"MMxS>{k>;E/B!_cpe&~y!ɤr>lAi7a%eikB W Z'xME+dpyo`֝`q<_,Um"i2wǻ8.y̤C^A%wmYϺRĂxA}\Dru%80<+G\!btG}>"%;vlbYQRjrMlS32 M M)S@kc&(JD*B!B$?w%#I~Ij;HRG `8RBrǟB ƚYh 葧e&A;m1U;x4N4-Roa1:Upn=ڬG+OQİ϶aòrK@ܝ'ؠr1qh^dnsFU k'.s6ow Yp^*BKW-+PqF+BlDr'8ᬆ[\u>W5nG~mmuKf۴+s<$:G`ٮK=8J U9,B!x9 &LA5_x ,N̓o3$WK۳XzUԅYP wz}P~3W_xݣf40 Nh;X})g혵E"7̝gFMJAcf&û1XWr "[ mUduT2'o6ê]%|rްr6(~[MvmUd^զ"\DŽs$}\!4 @axoO 8ZGy.g3A4̍=[)oi?,LF ҍxxf}wUia;E~'|ʠ?'"ootJ1?*YtLX+GI&tU_/Wt>yszZ'";Oأ{4C_xmڃ=Ͽ l9ր&b׾j_9-pv)nV/ioDRvv˴tRf騮^0 !B!Hp#8`K/2KbZ̧ `sBM%c0@,nȁVLcTpÑZ,la#F iKb7d?7\^z˽^#xFp8}I소b㧀=!#rM6F|b=#n"vcPIq'5LCŗ'|ӳ![΁B!b[gD`X~-'؝3_n\Npܙo+n>nw3~.cG7ï-\sc =%fVVD>R7N@[uSO8^!$>bhLQAH8o%=M䋣5"k{lb 2S0"CIHc gDncCIL hFyt =m\imFyx =\!B!b;wznS[ŰDtCE2#jFsjx3۷녊hjaQǭNYgvou B'>-=-c1;:٭:`I;.1oo޵-.` }/7vyӮ?c^G~#pmt/gO [1kDvctxst|=*=e T &DU-nmlƼiKOyA9+Ȼ~( !B!B!H^b PryY":s=;{Z"hq$ܸ +d>I$\nK9@N*8,9r'2dǟ^HPB!B!DE>SJ#oc{_]v^_ԥ z?~{O_}%=%ȷ5(s͛c2\P{aFX s!{1{f}3Ӄ%uL2wSkSe^ESʽ_r9ѥ.2A]~5R[;牷ntc^99=s^h.9{CIWce fb#)CB!BLUV͗,1 *v]]SsbKsG@"z]}uwe/ȻmAE={+OF%|w*~^Z c!y`}ո" $r!B1\b&B!O"3I1}X>|y O"%r!B!B!"5ȟ1nT()xz?a-~ō&T_=Bds뒏Jy9ѕB7oqqO%;D3ZW Ew߳'13\(_A.}CD-< 'ñgBIhlz佊 G75-\[7ض_TY؜lX:FXaC2Aˢ=7l,5"ﳥ Ҍw)қc5-Nȁt#߆ȯ[tzn.Chr6h"7 Oz@7V i=7t?SoIެf>{h6 mr̓Z1*ھ%֑#?En4tslwTpa@ꭅ=F۷$;R:DnDnL5|C\hr ߘa۾eq3'!L%!BLxFIENDB`extension-manager-0.6.3/po/screenshots/_17.png000066400000000000000000000042721477302130300212230ustar00rootroot00000000000000PNG  IHDR)R?PLTE000~~~|||{{{zzzyyyxxxwwwvvvuuutttsssrrrqqqpppooonnnmmmlllkkkiiihhhfffeeecccbbb```___^^^]]]\\\[[[ZZZYYYWWWVVVUUUTTTSSSQQQPPPOOONNNMMMLLLKKKJJJHHHGGGFFFEEEDDDCCCBBBAAA@@@???===777222& gbIDATx훍[Se d*)!Fh22i Td$~ D 8oYcdzsywg{kפe-ɿ$vp>8|k|b*40ïFƀH? Z Q"h&iz$ ʹI+:uXҥ!؏)%ZBl/Bc'9Ep1_{3&gENF 32I?-[~ijIbb"އRDg4x2,Jr'3(6m aap@M2+T5V 4Zȵ/#mEԝ,V̊MnЯDMʇ=mVi]*L\cR0b!g !a?(Dx") Jʱ8̧\lYz5R ;vɼd@J4QLHKQZ7J)~P[h\\R<5.wMhI)pHUJ%`#s#I08JC %Z:RUt-B1HA(R*9>fPQ4։_nQ'^i\Hg =z.lKkhUr:dR,# 'aR@ޭ}` $S»?ȫ׎ƿe{'u$B^H# ,0SYtTen)0&E!l,QA*WPb,#\pcC ׭7:)6OQ$(yvk\ BôӜ\wG_.k !R] 2KaRJ,MxՑdR?y@g̹%.& 62p%'d+ 'C5b''qo ǰ)B)L5?pϮ [2 Đ2j6U9o*Zzia@`e q)Ĩh!Şd RŞU.X_xx" mpS~@)ko1~sScKRkP%.mW_Si8S|}yWVXSvOB71(oxmS?~IIaNyQ-p(`åqe]g*] q&0›z o7e[g,vr2!qƟ>;wrQNE fJ{$1{$:A.ܰ< %Ytqu!g]*a*ݣo+i)) U&LRDfͮl60Ll6j*((ؒΎ;a# NI!T4q(Ԕ޸@~*[x}]7)o/;I1n֬Y5k PEVUv_{P-l6+44Taaa*((ɗv\ʪ[zn<][W* -q׊Ʊ\R7)wJǬ!Nt֭_QF|{EDD(""BYYYnܸYq\tT:GnֻS%*.rM}\'v,\qcbb檰Ы7*jbQLLLKth#ur7n咆k+UTF.OnS&&u/tɑTv*::^BBtSRkG&:XqeǟӃmx)GM6\v'rss ocVUqqq"##9z>T|Ღw\րƆY`7rQ|pQZHY,ԩSFd2)$o~ deTPP8jU~~GI^gS0;7ۊ:UZ u*iӦkԨ@nn駱1͊WddytɤpEDD3L&bcc og dRXXdXЬVkDEEm9z^>0qY܅3~ *b-i qwfjԨᷭn U5.1112r$x㍺h"Vx1捯ũ/LWNyC_OO ׯ^U^l6[Tw4f̘"hmVƍӳ>rw̙jܸs9++K͛WiVuIcƌܹs5o޼JL4IM6UzԵkWgS0 ;v;PQ&//Ogʕ+uas9տ 㫼>GCoUV v{*=9AYMyCJ NyT.]HΝ?ù~ȑ֭c5k4p 8@r8mV/bBIoet%ujѢyٳXP=d[n֭[%I|f̘(I8=gdڰa~Wo1kmڴq7Ԗ-[83gjڵ1czO?4SfEFFE+jTZ#I*ޔeǎڵkWJMܫQ/^ŋO\\=Zk*++K!!!8q ]s5&qt?kڴ)c_AԩSga1 nE]7xC?RSSҳgOIٳ7l٢9s(%%Ew_84DGDDD?3/3fN<)}s=./i.TY p< ]*+xG#xӕ^N=Zpv]6lW\lbcǎ͛5uTW~tWN::qℾk[A׿:($$PhƌjҤqm޼Y㏫G:thoBBB4biFGs=W,aaaz{ֶ!C(22Rh"]_~۷GKwvi…ZxM'N+\~咤+Wʕ++*[aaan߻w.M0AO>$i袋 < y yj_4B5j믿^i&IѣգGmݺUk֬Qv/d2)??_W_}:oFfYw<>oYGՖ-[Բe"ꫯ$MUvt gS=u\9R9ڵkd2iѢENObRXX|ݬY35h@{u= e%qp 裏p{eTxI*wcTW9r: j„ zWuEzg*tnf*OuTe "UM>]Jv_Hٲeˊ,ϝ;W֭E]kڵz%n"{uשnݺڷo_/-X@۷ٳUn]]uUTJJ,w'xyի5p@]q3g֭?_˗/wU^rz-ͦ^z@IJJ믿 sL&uE%Iח$uR1e˖-u]wy抏WHHjԨ!IjР$iX,Nt?Ν;լY3EGG]vN;2eO;oڷoaÆI^uYl矯kȑ/dXtEI:޼/+s*??_?s9뺫WVf͔]O8'xBǏn׳>D}Y oUHH~Wo1\VƏ+WW6mTvm?~\?-Z})==]7ǟ1wڡ[ng;vX-o\cƯƼ)2În6bLnCo*0y=\SNk7_SU+t|rrxr"9rB1BCC5vسBGxcr>׾}{?^4~x`Mf͚I:=8СC}\uU|e,:ԩAVZ&MhϞ=8p`MOtzH3//O_F }7%ddqyymsy<\_e\_v_ŶRB ZJX`vvq?RP:ŢHS$}wW 9r 5j(Z(zG-qx իүo rss}5Y2w*_A?VeX,;w7'44Z7ԩ ?]c2cǎGQZZ222.VUيxTY*+`7ŢѣGKR oݧbccf͚C tӧO0T^^L&Sx"''Gyyy>ʯTJP-pP^_e\lrήM!^Saa='//OUm eBU0C?0xc*""Baaa tzRi&ŢBTNX, ,%l2F 6Vk &PLFr@8 rN;uT@dX,:ue *VY  q,.99982YV]sjHb(//7@16MيPxxL&$f7P _rN"X~~>7@5F*?Gp#sA9 UNNeۍ.J0BHH .ADEE)??+((PhhPp0DPU|?gpZmc2h9~^8-X p@-ԃ6)l6+&&FA1bQ^^rrrdZ.`o?Rtt.J*66V:qrss. ``h.p0A8l6]8猘K+|3"##.y?p٦ s8~~2&I_|Zhȑ#oatyT*y撤m۶iĈW^~eծ]]wҴk.?ҥZjDl6>|X6lW_}\K4LhhNo^5k,q;w*55U1116lN:*|/<<\CU=TN?tR*,, @Yp o$Eqz뭕V7o֭ /PW^y$I2dN;v\:v޽{+<<~ڵfΜ[T.uڵv4x`իWO[T~aS  ݮ'ߦM5kYֽ"""d2t)O>D˖-Szzz,YD .s ֭[եK۷Ϲ/PK<[nu(YTTE?7@#A@ؾ}o.IZj~ifIo{15J'N0L\}ׯ$~ЪU~L&5jHݺuS˖-5dڶmC^zI{)q_M4щ'|v Fѣ$͛=:.|=zJJJׯC:}ExpOe;d2.299YW]uܞS5*Ymly8[x#;;[6H=4*Ԯ][{$ڶm~իWO#Fжm۴}vy睺CiԨQ3c6'Zjx#CSZZ;V5E@%JLL$tIJJJ<1i$îj*;;۰z,ݻw맟~:uڷo&M\!*Y 0bz뭺[O]N@Ԉ#]\==zZ*3Nn5khΝzt饗*""¹nҥKk.ըQ#>#OuI7xVO]TK,ѣ>ŋkӦMZ|JIҀ4h zھ}F<} SO=Z֭Ӌ/hv٬'xBW֏?_~𤋮k-YD=zмyqF]} Ғ%Ki&}jٲ맕+Wjƍ6m˵;ZigXXy}ڲe>3g+,ݻuWjJHHPZ4|oސa ݻw{xǪ@DcW_}U>c?rF|| j*IRAAf̘_1c4h . Z2]veN7իWƕn_|Q`5j(=3u˜-ϟO3u￯e˖y|:uG}T=ze]K}Y-[L={?\߱cG5J]ttR0`NիWOOddsx 'Pll4hd2飏>Қ5k4j( >RL&Zh Tyj֭:zӕ ٳLG*##C'Ovb|P>vء꥗^k9ZdvYde˖i?5k,h֬Y:p~w-^٢$}vڥk:x`Twӧ3i֬::x!5x1p4|pժUKjRrrf͚Z}UHHokȑA5UnnWHHVy綨(͜9ӹ|1Fw&O'xBu}Zbf4h jts мyԬY3;ӧ9Ru}Hk#KR6MǎS:ut۷;C̬ɓ'5qD >\\p$iΝz}#"$$9/~eeeVZg!$Isϳd2d2fU굼ߡ"6駟jԩ:tz뭊 $&&jjܸs̛Fi3f̐$gCxS>t2O>2Uȹ`I&i߾}_ob]Tٳg/Ν;իW/;vLf֎;Wz=I ?+ݮmzUWyeVZ)>>^&Lݻ@5k3ӧ~M5wƌ2e 559ĉ./ o222aynwygU>3ꪫRΝlպu/sκ⋕oƘbɓ'5n8?ȸPhӦM?cǎi۶mEz7uwhȐ!_ׯC.Ӝ9s<>OFFڶm .@QQQsqխ[W!!!X,1c;l6s9KjرKUvm <,k)33SqqqիtmyEqT-Z۝m9>}hg 0JZZҌ.#`хhUJJYk&ŢK_~ӧ;sLL;~[ݻ6mUVi߾}zըQ#W͛7fӬY [լV 8s.Iƍ%ʛ@eTRRJիȶw {RϽqF=:t\O뮻tIkuuO>Ѻu4p@3gƍ&MhРA6mѣG5c mٲE4vX=39s xbݻ:]u-0aq 6Lk֬w}WdפI9rD~ՠ2TV^ymqYx6Yvrc0y=\SNk?ޓj8z饗3%edd(55Mc ժ#F(55U&IoTنСS4ٚ5kV]^uͫc/_>*=R6lRRRuoɓ'"ʯf͚Z~}GI'%Y%Y\mg^\vcY.rYW|UY}S}w8ؼy.RIE" 6eY`)S #۷/k׮եKjJlƍW_u7KnCYf?~\}*4l6u]:<:СCZtNZO猪l(l㩎;;ҥKf|8@QК5knP9?Gsb1 9#// 猜K+|3VN8at~ĉZF q!Ή'ktE\+&&F bQ^^rrrhyD9XVeee)++RBp#s b ~N:F5j]!pFBK0eؽ{wۛ4iRE`;3hJNsW/Ϗ`_5:LB*Dļyf]Jׯ;Ciii\GQǎշo_CGe3! 6B$MnТE}v5h@?,EPttyuMѺ[4w\(իz*&PQ)l6VZ%P)BCCZjl6{|\XXƍuiZxZhQd8M>]7o… Umǎ۝\`Ol2]=.BOfRJJ:f5khÆ 6mEEEiժUիs^z믿Vll$馛nr,7o^sׯ__w֒%K$ɹٳ=5IJ*ꍄ5jQ?:vd+ٳƎ)SW_UJJƎqMs|A:tHoϟ/rӉ'M6l6_=>ߣ>2d=M4I>N:'|R3g7|#ͦ#Fh믿$I~4i޽{դIjJK,aV)`1ETT *(S]pڻwm&I:xY^Z˗/${޽ǵ^Z}N8:hȑ:u{=аaCuE=sݺuԧOv֚f 8P=~'IҘ1ca%&&ȑ#駟j*,,ҥKfk&II$FN`!pit PddG'|={jٲeZvKEߝO<5koK.N6>sۇ~|?+))I<N͚55m4M>H}fRAA.5kL;w֘1c~2y+::Z .C 6L:wo~MۤIݴ曤M>]ט1cJ=wvv|MըQC 4(C)77Wm۶-q٬'j…7oRSS$Z  _r֭-Zm۶ڽ{OW_}U7pڴip;[os瞵~ʔ)JHHٳմiS5o\7vn:t:լYSaaa{]WIVfΜgyF]vUzԹsgM:չπɓ'kʔ):$ժnqW35h@9995k,bN:zWkܸqZxGǛfᎩ-~Iҁ㏫q ׮]1m4f=JHHgI5kT~~$驧… W_i˖-԰aC׵^lW^yEFɓߪTwlr캏8Dza>zfNdeeU@bbbe@p [VTFoɓ.cetbqSfM_,.϶3m.ñ,e+lwy:o{.T*ed]4ydhBuV : ٳGiiiF/9Ijٲct֭s?3ngo5n8͜9S_~-Z$I:uVXO?dwfG5q3( Y|fϞ]db$Yg3<7 x xi֭Ζ7s'-l|O"e=Uvm_RhhF~XSLQll^x뫯R:u@ #K/KmݦnȺÇkͥoY=N8!I7o{9M2EuQhh֭[KG< 2",YDӧOud2w3͊$۷O6m̙3n:\R6lYx񺸉G_~E\r$i˖-ĸ-j Ǐf驧e]nݺ^ƍ5z*__p7n@ypp4l0Kp+33SСV\Y~6mҦMkƌS*ܫ PQ8^!!Ajܸ"9rD+VдiTXXzV^;v8~aիWOO?O G%IsdvM2ŧL:էz hӦGnf 2D+Wիsiٲe[ݛ맇~XݺuO?#G:Ӷm[-X@k֬ѻᆱ6m8}j׮syZvm:Z-YD}U~} d7-pƍ%z?ڶm\U^=Ν;WnPխ[W222 &[nKWRRz)j5kn6y 8A"""Bw]vI&N{s-]T۶m$͙3Gsի_գ/^ݻwKF+Vk׮Z|׵r+ގyC wpDݺue6 R ҩS] a5lЧu /0N dr^d9$$ī |> -pādu~P9u6lu֕kK.D~Wj7_dRSSկ_?IRNN/_QFK.QBB P_;OQQQ]sӦM;uysw}>{V͕Cl6kժU^?9"Ijݺ8,fɤ .@I.8w}Wb mڴI|ƏQ}'OVff/^t|X/^ltYS.R%uڝI7* e2Re$%1p1 @h Z 08#T[@uAJ@BJkC@Apڣ#@ #s8A+*?G8@EpA7d8j.YA \o!Ttݙu Z#)O+Z (,,L RUN"۶mۦ{Lǎ3:ŻW ] ~HR-]/<<\6lPݺu=?22g4IJ*(/TG1P%IӦMƍ/,ȓ#Gb M6MZ?z駟;!/CN (11Q4w\INNnה)S*2/Ѕ5V8~M6ۺuk͙3Gv[l֠At7+::Z}s[XX 뮻NIII̙3K:*$p ZxRSSK=*ANٸq[fȐ!j׮믿Rrrs[aa߯aÆ)//OݺuӘ1cuVٳGsUttY]J;JyN TSٳ]vI&N{ǹ{|={lC-[,5)1PYe,pul6kǎ%SV-tMjݺUvmEEEz*iīpL&L5|%%%iƌ6lNIs 8ZTSn_~{8Nv" R)j_& jL V`F\ƭ0)BI5Ufd)sHZ*RBiHH={{I?k^zֳ~k5vgꡇoi+***OTSZ~&MzJ2deŋUfM˪Su'xf_ 4kǎ.\ OWTqߌ |ye̙ڷob I??#IN￯aÆ)>>^;vTRR񉉉:x֬Y *-iU{T¶uqŋ͵k999wp9U#,,wO>ч~X0lf{ 鲤[ o.ZmYm˪"ʛOa;?${W^]!EEE)**ޥc#08#08#08#08#08#08#08#08#08#08#08swdfYÇWUn]}Gш#eQ 6L!!!7hyzzڡ2*___xǎw.I -힞V͵yfc.\D͟?_^QFGrqq$]vM zk T'8vT^=IҥK蘁H|AU,Zx7oxm߾]j߾^z%WoA@V*ܷe˖ZdzQnDuU͛7w}>|Xd2`yzz믿VDDznԨQj޼F;vXڷo߮m۶SXXf̘a*T'́%SzCiU$iСܹƍ~)??_ .lzx؎;`ըQp?\TFF̙luU0`MǏ+--M'OV͚5վ}{{ VӦM۷g۶mQ6mz+PjҤ6l('''ZСC(CQQQ}C%~Ip~anܸWE&I6u5;UߩSt5uС>۷իWwݿTk8\|7tI9sFEEE6(L&ĉLSAAAo߾zx]z U5^R>}͛7@֭ӤI?YΝ={ػl}Wܹsn:|8ѣGڹJ ]pAS˖--_*O˖-%I꟔QF^z:xI̙35j(EFFIIII>|x~rsso(,,L={T^$IW^ժU(77UNj-iU{T¶uqŋ͵k999wp9U#,,Lc?rllV^:Ymᆱצe6+uLAH,醤V› "x[V۲ju귵|'#xǎϟ/I޽իWc222~zEGGWei*ի6_s@cGRTTKW 'pۻP xp p p p p p p p p p ]/lս{wխ[fߑ#G4beee٩:`@V*ܷe˖ZdzQn?j֬.\/RQQQX}g Ǝ$IR/SRDD=!y|גNij׮H͙3G6m\\\l?^sٳuI?խ[7M4IWvvv\ jKfY;wTNNrrrn3|%$$XohJMM$mܸ JWoVɊSDDڶm{[Wl7lPnnn:r*TN5UXXP9R{W1jՒ$LY`$KKNN֔)S:˫Ծiii2LTSٳTF nZyyytR\|Y[lĉ#www>Vn$vtիWO-[|]<-[$eddٯVZԩӧOkر/SjܸqZxf=Ǐ맟~EJ`qK`^6mdu\vxstw#((hwI_e4p:O>ч~X0lf{ 鲤[ o.ZmYm˪"Jjw'phݻ^z:&##CׯWtttU ǎ ({ I p p p p p p p p p p p p@qvvV5m믿^qcccիWJ"""rWaUZfXiEDDhժUrpp(q-֭[W9~"1PJJ[ޖ픔mڴIoQa J333S Ҏ;l7n,]r O@qxӪURz*Zvmۦ(=#$ɤA)>>^;v'Jѐ!CJ˖-ӓO>+..Nv{ァ:uz;l6Ox=BBB4x`=sJNN[oUb[_*o[լYSqqqz7-Ǐ=ZߵeMUVQ榍7*88{X.ƀjϞ=JHHyW*XHLLT&Mo>p@\R׮];wNzyn(88X&MR>}MْCs7n|-\Pfr|۶m`={VVXXFiĈep'c̙33f^z%%$$hԩ$-]T-?iF3f(VkQfұcǴpBIդI_}UF4r*b>}wCi֬Y6}ne6j6/+I6l?RaEk׮Hǫk׮3f6o\j{,~Yb^^^رV\is;# O>fkΝ+5IIIѢEQoy*##C7nT^^5`M6MǏWZZ&O5k}16lؠG*33S˖--[gJHHP˖-ˬNXjN84-^X+Qq4aլYS_$Iݻk޼yرc_gbbRSS%KnݺjܸqاO޽fܹwyGCU``wRǪuVfvܩ8qB.\{Xr~_'$ 0@ ɹUU9p쨨ʎmذtȑ999)55ҖCiӦ%wIIM+5uo[lR=~aVȸ={yK4i"ɤ9sXu+//ٳgڸqΝ)S… 붮JNNV\\vܩkj޽%w7ݏ+WhժU4hf̘=z_.q[@cG)n+iޓ̅RV-I?-r }...2LrttTaa=??fM˖-ӗ_~ ܹs2mEݻw|||Էo_EEEIe(33kznu/_4L&]z~w{5*44TmڴQpp"##o>=cﱴڲeKAUU@Uj꾾;s挊l $???8q~iW=}B0LjذaOXTԩSkذaWǎd'11QԚ5kQj۝kmѢEڿ̙5jhѢEZx&L]v?NUiI͛'Iz˗K"""sϩm۶JrݵjRNb m۶M{رc-s ݪ/_" jժGy䶹6lh3?Gy@rӸ%wj/^Jضc:xxqvxҠ+!!ޥ$;;4ڿ˒nHn.j)Ze-[~[+6W bbbԧO:uJxfϞmgU^tEcCCCմiSM8ѦK.ٳ7oڵkܹsꫯ`p SN5kL&nݪX9rD^{M۷׻ᆱqQ3uTiF}"##e6+WHf,X WWW}G:u{1 :T+WԠAaoՊ~hrssӢExuI7o5kԩS許cAz'`=zTjԨW{<==5uTL&͝;W111jԨ]viԨQ8p4uT8p@.]*wz/H?j׮]C=$777IҲed6K/A#G˗/YkNN"##[oٹ~o>#ڷo/IUF[o髯R.]ԥKPv,}$)((qkԨƍw}j֬zJ988X&T.IݺuuEOk׮iܹ:t^xժUKyJ҆ t9 8kVZ.pQFT=rttԴitE]xQ-ϋ裏;>*2\ՠAIRVVV']|YջmZh#Fhٲe66mڤN&MܹsUPPPnŦO^{M7m_-u UJJe2eJΊd .HO@TVoo;;;VZJKK_)))ڷo}]Y rJeggWN>O?TomΞ=+6Zd;: ;+G|}}k.ݸqC&MRݺuU~}͘1C3gΔ$/wK.)33Se|KSO|WV``ڵk=zX>!~]~:Kd5hb?-I*ɓ>3+j޼4inݺY&Bѕ+W|r^z׼yEUj޽JJJҋ/h$}۷q5h@]t_Ad~鲳5e ӯkZsyꩧ4qDPSL)Ů_Pz?Q7nз~8I?kiС>|}Q:uJ{… HڴjݻvP]~]Nv`qK`^6mdu\vxstw#((hwNN\Nرo{eؕ+W4em۶e6]`ڿ˒nHn.j)Ze-[~[+D"1[G۷դI׎;bŊ ?ytϟۻ` Lb `p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8Gcg)))%.bccիW>~͚58p`svvVJJ5jt*ڶm{=sw@U]ZjUecj۶mС|||tI͘1Cݻׯ})<<\ْ$٬?z⢭[jΜ9駟$If͚… /%I2L Qpp<==_+""Bz6oެ;ә3gQ+czÇk:}$&M{J|I-YDڵoՊ/qlGGG >\ݺuvU w+Tvf=Miᤤi۶g*66V SըQ#1jҤﯾ}QF9r$vڊT||v1ch͖cΝ;kܸqׯpBfKM>]ݻwסC4k,҄ +(33S-R5&,,L5j맼JFppp6lؠG*33S˖--[gJHHP˖-%Iݻk޼yر٬;w*''G'NÇ%<4m4?~\iii Xh^ &[ё#GTV-uIaaarwwӧ5vXKfΜQF)22RNNNJJJ+dRÆ aӾo>EFF]А!CtuIܹso+..N.\P||UդIci̘19sƎ((!!AgΜ@ո D}ܒ;XM%l[1YW]8\;] ڝs-l2$]tCuu߅VKR-mYݺ]dZyO*ل+TG`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`pN..%%VZJ7gggL&]zҶfmذAK,1D=P~~ۦm۶mo SOeT/<_?%P!8vVJj۶mС|||tI͘1Cݻׯ})<<\ْ$٬?z⢭[jΜ9駟$If͚… /%I2L Qpp<==_+""Bz6oެ;ә3gQkd*2vbbv͛SDD> }Z jٲ$]{Vttty͛7O;v$yyyl6kΝщ'taI?O;`M6MǏWZZ&O5k}z,-YDuUƍ˼М9s]V>keݛ(((;CC*00Pݻwj8y$<rII4i"ɤ9s樨H$wwwIҷ~diΝZv+Ijذj;//ORӦMK'==]yyyn.,,դI2ǾsXRME8p@7nܹs5e]pᎎT_8vf:TyFUů\"I0`233o_XXPiFԾ}4zhd2QcuڵRYnǾqF?}uoDZZ ܆W,%%ٹ}U~Pnn엜)S($$D:tΜ9"d2O'N*:vZlSɓTjjbccm P:1'o6Qddz-Ͽq߫u:z$) @_}nݪpsڴi+WQ...jР*tXm۶M:tN<3f_{Vo>+;;[O >\ݺuvuW / t9 8~fY6eݻպukk׮]ڻwjԨ!???Ic=5jСCǏk8pׯ_۶mpٳԿ5jH#F S@@F~Y: 1KjŖ&.mnL>]7n\j>}h6KΝ-٣֭[A...jٲ٣|ٳO?{ƍg_~ڰa"""OY tQeffjٲerppвetY>}Z jٲ',~W׿UǎSzz}ݻOT<8ti}z뭷JVZ,6m߷oԬY3nZ|e"m۶8wK[n0a|rCb'O$شI5j$GGG}7//O)))jݺ|||lٹsGQ6m{v׵yfm۶Mqqqҥ;vSY&/dP]/H~~OcǪf͚w5FkTڹsҥK:t萆 ˗/9a7t…PVgΜQQQ+e< rk{URR^|4MݻwgN8ao ֞={,m_ǫ]vjذ7n7|S?)I={BBBrss~zM4IO=<==5dȐ*on>}ش%''ۄ!ǎO?Tgo߮QF#I?~uU9rDoN:%ɤ *##㞮i̙;vTPP9s(4nIڋצ+.^on.^{.Ȳe6]`ڿ˒nHn.j)Ze-[~[+ JBW p p p p p p p p p p p p ?ԩ}*00PM4$>}Z;wԊ+m =DN4uT۴hB-ZP~4emٲcFDDk׮"eddh,auk2dM3< hӦM8qb*,,ٳgu1EGG65kW^yEEEEEZbqY׿ԣGUy(tIf͒d֭[#GHk}zw5nܸ; qV^(9::Yf0af̘Cڍ7n뷿(gggx.,wSll&OM6Y= Ԏ;n;ǠAʼj:b;ԩSe24w\3FW^^򔜜QF)**J&ISNC=T?JIIѬYԶm['}X/yyy6fuIQQQ*,,T@@@VJJMhM0Ajղ,1iܸuʕR.F+;{W[*&&ҾtR-^زdm߾]5kT߾}|W^Uaa 踀JMMURR:uT/_.oҖ&޽Uw-IBbHb&( ʥ R @i]p[."m)VV )4aPn"D B"!$\sd!3Lf&3=gfy;|If>]Ǝ͡ڦ32{;=#fʹ瞛Yf塇7ߜ &OϜ9s2rȖk***r䮻}ݗ.lASbƬYolll6GydSVV;^xa̙fSUUUUQQO~$>`:TUUm7noۖIdÆ 5kV^8GGٳgwxɓsWO~̚5+{g.œ~{s я~4|s{$Yxqg}v96ǚ3fL'ơ̇7/orWiggyۼMr~9#s'y7:th&Oܭ|͆}͞=;'N$932wtx-ؑ_,Y~;7|sr7w]^|̝;7Ї;a񩧞}kYti^}\wu`G3quS<II&mR^^illܬͬYo~{|cKSSS/^gy2mڴ}6h7o^yMeƌ-ǛfSfڵ[Y7n̏L>eP H|Ϛ5kc~媫t_e^|.k$7:I̛7/_җrAe]w͹瞻ISbVe]\xᅹGG2dH ɓ'no-˲f͚~ޜ9s$zj˱&wS?:;sG ;jϽޛ/)//g?,Yz֬Y lj,//^{ѣGw7jGrG+Luuu׮].e)oXjUJ]ƈ#`&Y!I}m7z5z5~Zk}k3 UA 'N;-SNرcԔ^z)[nez@V^}{WR1@ p NPp8'(8@ p NPp8'(8@ p NPp8'(8@ p NPp8'(8@ p NPp8'(8@ p NPp8'(8@ p NPp8'(8@ p NPp8'(8@ p NPp8'(8@ p NPp8'(8@ p NPp8'(8@ p NPp8'(8@ p NPp,utmܸq. cذaY`A8|R@?2nܸB :bĈRPP8'(8rΠARYcק.֭KCCy9@/6t.;9NuuuV^L vVx.쒡C@&***J4e]RQQQ@#腪K]B!jB 4%/Lb զz[ QG*{G_{|+_}ݷs C׾NÛ$s=sWĊ| l=3IKl7S~b}-Bkϝwޙ^x'tw8ՑG8}\UUU>OOS^v}'ON:qM6Rév @VUUk&vX6nܘs??|$ɸq2mڴx9餓2v\r%B éPasa7y睗ŋ3| ></ηwyy7sa/uV~8}>??ƍs%O=:3g̏=:Ilٲ7>rz^{é8_rʬ^:ӧOobgٛ p?>;wnKxӬi˖-˼yR^^;ng @|'yw> 3gG}4Ǐ߉~>p?yoF8x6ϟZ/SNYti}ټ?? {?@<_ܭޚ[ouKw5NQOTVaf;^OGu4LjKߚk x89眓%Kd?~|/_(QjՓ ǎZ詎S=30aBfΜ3gf„ Yxq**>iӦu{lۑOks=t6Ν~Ŋ;^I>;LcccN<[l~Occc뮝P!}ݖVZbEĊz/=p^x!wqGN:\s5Klٲ$QGզ~k&UUUZ&3mթ>@~7cǎao1,_nӦM2wwq?=3ɻ=c뮻 /B `+X 8'(8@/TP^%/8кuJ]B!jB 544d%{իP@#jkkK^:;ПU^mmmR]]Ar|[O]]]֭[ khhȚ5kf͚R P8'(8@ p 2v뮻NEEE YhQV\Yz/=p&I***r!dv+Ae.FC9Yyyy: !N pm6jԨ|)/r 9ڇ7{o{lܸ17nc={キ|sCf{ 6,k׮O<$ͰaúnĉNmmmjkk3dȐL8eZ… nݺ :4CO^8}TUUUN9q1bDYfM|?M}}k׮ͰaZM-\0555]Cp~ԧ>գkF;.MMMO~*/o~}C-!1ohh#8}G$˳lٲn]_j8=f͚,\0'Nl#ͪUvRu9p]v%I޴n;rR}իp.F544dѢE›իhѢCE~%[*T'(8@ p NPp8'(8@ p NPp8'(8@ p NPp8'(8@Uv|G>3&I/νޛM6B3~`ȑۿۖپ}7rueժU%j o^zYxq`N9唼}_+BO( sqsLƌ^{-W\qE}Ԥ&R t@}M̙3'k׮|MMM̙$9#vjm@pyo-Zis{N sqI$]w5Irʼ-Ţ@t$A$y뭷4o>(@C%IN;TWW)K,ҥKԔzI~q?p-Zv-W]uU&Lrn„ ꪫn'@A p?c,Xv-]tQ˹.([,Xne.XLb Ϗ 4(3gls@O455u8I%K7Ppz#W^yeKi?|j%.Cè:R8aTPp8'(8@ p NPp8'(8@ p NPp8'(8@ p NPp.cȑ?|Cѣؘ+Vd?~jkkK]" @?0u̘1# hs|ܸq7n\>On|UtEy˿$#<{'/b˳~ST9\|ŹkSOb=sa[f̘$~n-'xbo.O=T̝;793hРW '>O*<@/^4iR)?OfĈ9KX1@v衇&Iy晝ijjw88}TEEEF>e>I{01@Ԕ[2$3glsWDo׿uDm֬YmiOawuW6mڔ_KM+ȴi?k֬/~U tbݷl+Η:ն^孶_Ǝ{;Ӄ/4RQߪ7lؐ+Wp>eʚ5kjժ{jkksꩧfԩill_+VlǯfȑYzuԠAbŊIN$_t0Lb =illg)Sdʔ)Yvm駟.Apz(O?tO$'N{Ƽg.XzufϞٳgLb Pp8'(8@ p NPp8'(8@ p NPp8'(8@ p NPp.!C6WUrnw$:th+KЏL2%_|qɓKX ]~bʔ)  8 p|3=:IK.%[IO̜9sӧO߉=%'ڇ4չKT ~}n01@ p NPp31@?~aÆ8DU*~g3<+zJ~⪫*u V8'(8@ p NPp8'(8@ p NPp,uE5x 4(>"`O]]]6lPR^B:NEEE.vTWWgРAICCCK v7RYYÇ 2x` SUVVf.(8N+ *u @?{%VJ`K8'(8@xa;6SLرc3dȐ_̣>^z8s̰aòv,Y$sO.]Z-l|Sɓ>|x>|yG,% giӦ9>r~93̜93 %Vho6mڔx .LMMMFC9$SN͔)SRVV;S?}w˗/s)䷿m~$I>dygZYYY zƍ3wdS=3կ~Xs/^x!oVz>|x?_x-׿,[믿;#O=T.{yG 2q5zڄ7yڴﮆlܸͫGc=3kY3w6Mk=\͛$ Cg}$ .ݓO>c9~Tk'N̤I$Ǐŋ<'OSYY^x!@cˊ+z\?~{6lؐ$ysǶ p,Ymڵ9rdF_vkK{8= /!v'NL=E#lK-FqKTUUig`蛖,Y?<Grwt#hi}|:uj-[_~y6cƌԩS[ڗ;3$mz=ܓ?<'xbzoN֭˦M2v؝ZP K.3`\zg>=#c=rI'_b k^+u@' ?RVVɓ'c1Y :43fM7ݔum:L:nݺL0!թK}}}.\ɓ'gڵyW3t <8ov(3g&ywIO>9'|fmjjj2||K_׿Yfg lAoV/kum[m[;EuwŨ,]4˖-KUUU[.K.ͼyr,}gƍiӦN0aBz뭼[I p&MYlYV^ѣGѣseŊijjʡ)Sd񩩩iG{لuuuoMMMYpa-ZfС0`@֬Y ?AL81{W&M_W{$ȑ#zRѩAeŊ$MImۿZ~al)hQnS~6%t&W_}u^y啼=E]TV8;Xmmmnw@ϛ' $;Ammm -e]V2v(8@ p NJ}}}K!{-RWWW~`K8lذ;U}}}6lP2SSS#vԔ ,uEАUVe4hP*+}DU__:=onNtbÆ ~ 8MMM.`zn_@_VA{sf_o/ ^cccKTå_8MMM Ь~veiN:{U}m 3ZSS!TME ;Sؒ7ڵk \YYYake3t444^oرyK]F!l^^cƎ.ی5j'UsÆ O?]2vR@8'(8@I􉵽>_rrUW??7ks'&IΝ*3fȴi2rn]jժ̟??7tSwp%CPK_R.┗k,w}s%$I~,[lG' <8ƍK,_<6l:thnᆬX"]vY\(:묜r)=fȑ?455wPe]!R)++Kyyy6/wk3x$ɵ^ӧ@7p 8p`wɼyrw]eee.}Y~}nq=z9眓C=4I`~]諦M$ viӦ*^J8;=׾I%\Ƿ?>\rI.Ybo~痺$7?9>p|ĉ3cƌCK.$9䓳{{^z=wuW̚5+{g<uQ}y{ߛ$=ztns=[[%=ܓOӹ;OOL2Ygi껭 *Ç'I_dyWr'f„ ?{9眓\wu93r7fڵ?~ 80_Wsˁs9'vZ^^y(&L/6|[ʜ9srfʔ)rqǥ.eeezmھ2dHnݺ.}bC ɹ瞛kfsLÇg$=^}GI}}}-Zd֭[^{-wuW8$IcccϟUV^2<SQQW^y%MMo2f̘yIG}4ׯo3nVXd[2m6/79}-mu'gرIY}g{MRebXVVV`/1aMM{^^M/5kִ?rqǥ)F$/7\p׾n-iӦ͞{fя~rö /wy'̍7i,_ͱ_=GnslwϺuZ>δSf2\pA.Lg?N}^YYY/k.B͉S;ڇ<;:}CCCCMEE.ͽ*ӟt5kdٲes^5qĜs993vL:53fh9w;>o|y뭷$I,}믧!gyfzuo 6d޼yg?eK]]]ck?mرۼxgN;m5kV~dNJ.8 ͯ=rڏ7Nyuӝgotҥ̻oš>m햆TX:80hG8yFw'2wMGZ7IɌ;ڶ_^;}4Zi{uBucb۾-}-;D۵ަݱmo~g>DY:i?dTΒ)Bә;fI\Yn>_IuDS O]w59&Lz4UӾM͚5&mW֡MsclC>i }ϛV}go~=iMsp޶]=pZj`ucfKC:zgG2;Il)S͊8*ٺ^; JЫNSj;^W=pϷa>i?&X)X=pڷۚ^8]-3޾'N6]ߺMz}HN9o:j՜8;MOmgG΃ӺM&3n|^8󇕪:O[׍]oi&/(vJJ:^a˅D`VmۻYm(NrQI XkT PùǤj1=oB26zj9UGk 2N..=TJ)?WFۨ~m_6HR5K=:ޤtp8pz5:&7L)m+lI|o?r"Z8ϭ;]@{6sZmZKn_ooFO%F̊8}3̌Aef(TskI)VtXqZ}"'x,2:{o-LϊG|4no-RόY6zf؜9v48VFؙ>@3Cș:FpFk3p̙*ޤ7t}jWLHqf\_{o0#&gĉ YI"ğ!f듮ț\B ooFGxb8|KǮ.pܟ|_VƕG7+ 2<2%HDE %ϩ"ۮpk^m9pu 7?__^xWG_?*-G̚aAYIzЋ>ә}e]]39s{~9sn[ÆQhe.Ι3aZݼƏ8_l3pJzl 3 Nh %#G*{=^S^g嚦U ֦=5jI3O<6qzWHں!;ue}'ۺ#IxH$×^ ;￙uUk||ɳ䗨f Lk' goF`1y- =1fie!k2djBwK! Lh2CZm_Apw?qCEu5npkܖ:&n6o!eEjR/G 9DJP|]=%#w'_kPUیahL+;<u*-dXp/2>& )))")geL.|r+1ַX:n|zr7o?%]BӼh瑑c ezƭ:C'$E~M:z[1]Y1-4u@&ҺO@ \H꧁V }'{Y:w5#Ux.\<|a\ $\կF]mMDk !{EK?pa3s:a޷~ç_[|## a2Uխ*ƥ8E3,(PL;w''>7Vk,Υa{};otM~sPRQpӤPqNuٓ,H;$qX>cjſ'juEy^)+!=u ]CrZk6֩򭴈55qK0s<774=|TчtncBJ&tщuRd%C&uWk[/:)^koإp +W!gP)Ŝ,ba(8e20N p:lFah 8 Jzr3{vM;9&"q)TO@|r&N ̷u9S3!e ȼrS>wr]kC{ռEGGG!K+kkIN14 fų E3;f)*'<>,FMY:Ea'YSkrjO% yfE^,.R*BA(FϓSZ6|JDٹZ1\ #+3Yh;1UeU w~/QEA/HRBeHEv)+,|jYDMB( *$~ PTCa9n˹7 qs3/)SRPG)W7Fv5‡IW(ô @top_Df.7[?X9Sp$K:a҆NM G^;IM ⑘9"|D5v*Ok@Y<#,:ʪ: Ad鐰'gNMsjv\t%GFIVS6: 5ói9T6G;p}Mi9\zξE+= Ş I.u ?ELZGɝS%h'S%"Slpj)lpHf*TH^5(! oRQL@ ObK*{(۟NM.~A/~3<ŏ=r_\J$8utBJK:DUaq@:M5d\J48dwG}QJSEOlRAQ\kh. (0Cty7{j:5ӝ>eՠ9ԞA4| R12]2"j8Z~*z(οp2FR ?RyæթUwtj:5KWR9mHgZNU:T>E\)Q!qZ[5S@xGX(An{~eUvT[7O{qlD{W# <hQ4RGhJEhT7 _"-}sʣ n%8ݔrD۔ E-)YC18ݰmoe}+Ԭ yݑRGC)DHpT8 879ś-G\k̘(h|ۉ?5 2[ J1T/ǣ T7?X$5p?".7<3WoܞST١(D%MN)pvqe#zӮltbFkd`$c J?vZmsً&{F@>C0S*ķ6ȹ=_}C& +j9ΔJ#4ZA2Ԋ:e**^=QDGh%YdU$5Д:z(|GS({J}TPAΟsg+X;vhS䣇wӷϝC3BaS UzyџЎ~HBzL-RPH:!osH9ud׃gcg/C:;^q=I9գg./.R|z Zb WR}B{oÀ#l=:*Rl=.p ]BJ9`-n$=dNa*0R!K.Ek9(jU,'1(26ܿ勇O5 fO50g**tyQv7$S#zJaT`;Y?F]~e (Dv`"AmJW.NdRɋbƸ1rٰv\C B{}"(ºB3i֡{}r+#Tc< 15xT ܞ1`>uxl ho:0|f6FQ}>X t8F+%m׹<64%BgRd{ő%[E=t7SYOi[F|4)= O5cjTH.ZWxO#KJҕP!9P6dK;TSnp3OZgQ}HZ ,ۘ1_֍+6WK'$:w߈  ҩ(qDS aJ5Le.8!(7~ߡ~E71`Uwq+aV6lѱIx-?RhC{2ǭIj;+wXPr6CM?j$ޑNGmX$ #NGx\;[^锪7߀M]d !([ $jdN^aOS OEGY*Pń4:oKTJ bR0љ[8 'e#Pg}Tpx P='3O;uTqi(JHdWZ\ZIj#R I QMr tu"v:랓Bz\%wPF.Po}`L5Su,~@zpjLLڴ^ر9xU2>)ʻGLLbW]ɿ?#_ޤP7 yF ̓^UZ@˰2F8S ZUUj"*S7z`0nfg!4>{L" ]yOjg.(ߝN-]Eq$P@f [GQ=4>qM,B͊5H IjJcT:ٴ}09W,E4oxi)B蔖+I-H^F[?Mnl΂'&Ho_©MƵL6G@q<{{aR:$@6HOϯ?1Sgu<״߳N7A޲Z^^Ш~6ϰsoWzhKG^SZ xy7>F:H30vfHϚ@{ߏxejwz =S8ĮOwm{xsЮ7A:G "/x 5"w|<֜?TbZP1TլBJ W:2<Ac6i4!M͊fV~@2X Vi4l҂=`j0O}lvKcN~х\f+ mڃ]\RvῗyC0*;KYK4Ͽ`lZO6ihITx"Qۗ "/= c*olol!C}5+(?4:٧}HiTFEWUhKHT74+~ŭݴ */;d"?.~oy0+ZLLy 5g"4!RHBStT)^JtQѤ?8_/yð(_wDF1o0*ࣷxTAw.pc"p Ӎe'߲= O o0Fv{!a45M hj0M F-i> owķ3Gu4MYݞC[wv[4Un۾?dDS!A~Oh?T^.u0jtMBӱ] =}7gD!s ;.w M;|҉3]s\qsF` M}F|ϯ=yO 3J- lS_™sopS4%sr.3~`Ȍ|Gӿi+ "t#'ސ8f܀B 42i,mhpꌹj@S}kiZ]XM5h@mn ȫW) )l9 MR]n3HHF4|R">obҧeHGPCZd*,!G4ol=hԴ(&aإp)*&SyQ(,(JIBBpeh2E4D&Jdh4t,ĤF(HI]LGb f4LGh2EFT[IQATV5?D_,kClhO_LI󵾛G_w^[\ NܰD iLw}{yy뺻vm/, Lћ׼[\dB:@6f H7kAil N@e @,ZH{o@5p@$3rK8r"\ٔ !5@؆fp cg/oܾ^D@ĩ@RɻM8W juhә~=⪦^9muLR dm`!!&829} j@RS#+0/$ِIHCN)s脝ץ"%@D IH:ށQģobV/ֺ8!Yaჼ<1E o|{V?bxzm@1$S0iE4̀2IlrfߔYd dCD:\A9A-X- \d_ M@FpYI9isuA,ZiD+Fk8c_Y+ Ia"d|ցJ; i `i4HATS*= LԆcZ Y%M  x DZ>q)yc$]J҇JU?w_j=۷" &[~܂St#Skgd.Z! =}x*". X>~FRVY~ ÿ umQ4: 5Fh2Etd:F(]o:FϐEh4L:ȸxxqpRҚvU2M!c&S\&U dmabj"A/3" z^CU)<Mo0HYu>pȩ i9ECWݯieL5’Y5d* " O*H)X9xpn"!W7E$yF55෧ִAy\jy,CMMxﲫwpQe | LJTwy}נ*껀@:yd *#3[QU LxwA@qij\r +Xi雡D=0RK 0$ִSm+sx$  (RBH oxhKL`k1mjڦ&3$43ƴ1Dc:XMf33-,d39sx}݇>{*Df!ËjBsoZ9 djMϖ@h"Bj[lolGrτLB͕M@Zܤ?}1 } 1Fd*I3I!YfYfSF,L]u+֗{ NdGPBHBHB2B2;}NtBBN x2XbrX+%nh0' )C{A0;Oox7ȯ)R?#{n*V'mp+$>4 O]cbmT@~Q*2p6 AڳvN>z 8sĚy$Ϧ,!hO !S?l5zᅤfag+IKlJRdډy{[(!$S! ! ! TMK׾RkX&n,+mݴE fGJX~,]:X"վᄑdE9\BNiE-{v53IlQV9 ZtWMa$)hX΂tN!n: # u:B {G7zhv;8M5~I*@ 0+Ա\Sf,DIi~N]jϝ2S{pP&Sc8#S[+شBPBި\E?}!$S~g Hy2=^>Vi Wĉ/a{ڶ"Hט8lx! 9'ӂ^+F4LeV**:|B<zNL?5! 㛓k}(=ay<=F`d9W(PS< QvT4!7BgUkgߖ];8yе+*IK♷d˴ ->LFLɗ6ЂddkY@0-YS2HLY=)uuϙݥฑ]392Zy^?˔RAWHl3c.l¡颜˔lJns²5|x--. O/ oXn?L\@w4ZמC"xu %t/d*d*$S!'w'Ng~RU]?]wxԙ3YDl˥9ޫw*NCv[cHUE֩MqirLoR1=fͫQ#v]TZIO&qL<x IovMhEy`YD}\5Cᾇ-2u2w]t}&/2#g/h"= B*ꕔf$|]^9)6|2CZt8u:Gwxg Du\1Do#LawbHHFZ'w?&B ! T $S!.1UP5qZDED:}g.ef]3~9X1}Z3 Pvjߝ:k2X3 {_`]+Y[-""-"T-"t %d*$S!$S!$SqT {E̦7}aY?\Z q0so7S[ZDEDXZDdS_>)>};u SPjjBN_Ej! Ti[6{3`[gƜE3?dy}sT1?P6ׯh: C3`t=eI#Onݾ.4m6e|le* G]re:$;eھ._WX ؖ@Ȕl|g64 Obeꛜ ēj6ybƣy-ZMPW7>ޭ!\.k360 HlNe h..1e+$Si;tcdolܲnڸ釤Lk7#b\儩VM;~|u#ׯU5Mu~5\\gK2E^ COCow$Yj!"b]Wc 2TvHBZϤ)%qob2Evukpu[v>15ބxwάLd 8)iXBսȤ2mB ! TTHBDiУW/D7֠OD}8vJdGx?H|R?liy6NwwFK/&wtܙjE'ͧV6S`cS\Nؾi.SW4ZDq(`3ȴw@F*IL<޲öҤ. ZO&j(*ee6KZDEnLd*d*d*"B}sڼJ?4[J 핅9 qnYKԣV+'@eIƭ/}vKѨr?^XR|(߃ɔ)<[l*ωE@r)U},O){:tXMH`AYch* Y4ݫw?3Vp#RJRhwpv>ba!z޾3X-2r> }7zu[\G8 _T NXxlGBZ)*Uqg텐|Tl<ж BͧBT!S!D$rO(HVnEr Ⱥ0C[O+e'cUaiC%O4r>Jsa̞ϧMI" f|;: _p|iE.Si->{fsϬySzѡ/5=8O^ː̮%c8eVPC8˯:+o6(;_eA/][n֙o~'@ή|n3yĢ63$gMPd뎟|z"vۮ=XccN;O:-TRVܻ1k~ý}?ee΂iA˗0֊euΕxS<%(KCe,CD^JYy_=(;L(rQ\"W ܄,(lkH,0MV-PKA4R@!SD}7=h00{I/:yz1yh* >Ᾱz1F.UP)-0X<}Xx%-xhoCO^9|uψ!'Lb.gr2W?x k7nAcrz=Q'=?LQ8e`DU,`:O9xosqqM]1o5֩,S... itZ:rpv}BbdbPU<*)_SyC.ِǍͩgѣlenI2<_5j6q4c;\\\Hj)ԭ@=bT~$ӓ ~:3vub\\\h.z[xw7e/nn܉:+ܻw.-Mw;8YZͥ͏-0oB™c3F_v27rP=anVIa3Tu.:]@/;$jAؼ’ɕ_F ѮrhL#i:Zͭ/:8GYt4sT|JpX4vPMz{Oi gYŷ56-Bײڋﴝ7x,pjQH9qY%O?3Z W1#)* k\tZ`iH-qO%FC˳oM+3dA֓+,?eE' @'[5 ot{ʾ+b zxhlԞ[h|̣r]=\<сw}c,Z|j_8Sgbk3ͬ0?XՕ+7_S[O ֱ/]sFmp,fS,%A g4*jvOgZ1|n`)5d",y*L >Ε S2D"%) Kס/u.YS(L8 H +)WT> e*U˵+)=7ri*.uӕP@pdRFCeHa7ٍۛzVUoQ0fK'[[ʠ({)|vRxG${={D'RS/dgáOՕvvݾ}Fvϛ[@a6apf!OQQ U3B="p2t?  \b1OVPviJ*@v'yд#<6;v^q(u穧o ufc4\]Uo !C i}>?DZ|ԣiE/|'uO f:jOߜɔʫ2'_畿{KdĈ3_hxٗu5צCԏQ?~?zK/ ~Aħ SAʧ*p >A OA|OMsy}w?0vF4z/J=eđtx{݈wH+ԵE+H}ŷ`Pm\b=mVN!k\%X_74eƝ 50jcb -]شFյb5g/,_m Ճ>68h#cK ۤrZ. ${ڰ.L`<ڈ81,cs۾;'N>Fgwj9m|ZD~,Ó3ܮmfvM{"LXSmAtmTQY+kť0iq몈`,e5w~dN~C%|J#) GON*>(:^a71^m Snr?ߪX0ya`А5*!i@6hK6mMg~)ApC7 ¶0&`;=4)2&\XxiOWmU7x h2Uv8ZfyQ61:!>0M1>6xP|ڹV^yM$)mmWϧkx@DmX_eQF'7[xZXߗOO} EfQsW( Vtj TA OA: = }A alsTکDm \&u4jk =(} KK8Z{C~קϞϛT&VA8="l+ %3D鴎)/DSD8mi(Jc^Z4~~ݖ)Dn 0$nDnTtZz28&gRcº"F(VrзXݴz{L{9g^ߴO>K9{Ú%+ħάZL1FmkZ(?<> -Pڰ8X9qFD LlΩ3>;FQ2W;O Dٮ|JΧek ($^! Q"-jp)ȡUğOioi NCfGA OAħ SAA|*;Aku :C$VvJYu d,oL9ԤGB"vR E-؎fVXz|ߎ cFvs$g'1tPO/ (+"~3>"r؉]18~Ӯ`z'7m5Жϩ88VAm2H/U"kr'n"N"HQC#|Y n?C#ց`O2'Mզ+t&9}|Ƹ\6-n m{Zք(^e|ZX<+ VS5u`)3]I{|:lcP|^.ήտ!Quʹzx~t a3uS3|h?nxʧ.%$"wQ0(Y}\ NfP ωPlC\LBrjfNQ-A7VgaE0)es0GjS3sq 08;8NFCXԞ%y˸~dz;cSDύg|jΧ2kt@B.ughN\1*S:r J<,JOx@\ofQB+XhIjrn S*MMB|Jɭɔ(o5h ~W^/uyW~A SATA|*dՅLqz^&KpX8C{>~OST2cba%_׸ޅO`;yEF݀b{F5weM$3$(.6f1x3:n*":ħ>`qEP85}Ă)3"DgdUd K%N&m!Lo­8Rw!h7o%zRPjPuFSu'nضߨ>>) M!>Z;n+xnbK!vQ9z~?bux8bHKژ# ϴmW}V6g%| ַØp1nWj1~r+6lQflIXWϏA(0Xxī@~"QeLcѮG]HW_mi#K ^oO! EWAܷ@!Q~5Ȯ@ߝߣA TA|*>A ->Eү_Aȧ.pH#zgz֩]=q#RLO{io7|?aOTгM*тu(Hu5lރzѵP&kز׍1HVQYEQS#KlsiqЖqDF{P3nBk*;(/[#yI"𴉡d&- ?Fw&\| b/'Miյ?EMpEiVh'C$0fWeӎKޮ&nzyy߾~#,pi|jRFfNK>o1(޷;N-&Si-v8]T|'WsQZ9 y6`h ~k i o\ |SSH?wJ+|6 Pϧ nd6҅5F6ߣA B?S OA TAzyrYeeum;psZҒU\PCU +f͖_}pi8L<ȍ-/rklo>arQNہ H&տNh_͉4+מџ&"y3+n Bw`P_Z^E |qZ)NUtV?|TɛO1Aյ;ΧqxO˓iYCIMѮ۲}5+0ocw7POH'y EVcK^]º"dFU(VN'V7zOiDǟ/vW ?g^_&3>)\:§3c 5)i9CȠBd[i욬BnLRK/x`O-Ң'B{VUb9e>Fh?gÎC8AQ SA TA E=l>M[wK=)לO>Co[PMY?Wfcd oG'N)+on3ewACHӤ;nG@2lԂhf Vn֪Uc!~0alB2E#q}'OWEDSJN㴑iĖED\ޯ}&GW;V|v0MBA n-ߋ8/k`^]O%+)sb([1o4-':ƹ,5!)WR,+ VS5u`)3]I{|:lcP|^.ήnͧKVn$Quʹ -~? ; gj7ͦ0,N)XXSh[gLv,!M|~?xlRXlCx.kOdHbxN`C_zbS3sbm  #-ESp #@p?53 biOlT)9CյQ9ڳ$oÏLZ~ؔ,K;r+&F-ħ*D܂,O,%C1l .ȷ`(rK,gY`97ӈ8 Il|JAkEo3*BjV._Qzg/%Aħ S TiV蓟oЖ~D7\JʑOv($ݖ=gq]oD/??]S^?c䥙&yI?!sk_}\RJ& }?,K=[R3Rk'`gVΒ+&KJBm! 5<`ĕs,w>VB󋦇)wMLn|&=9#E|Z]ʺxOQG&SmUQ2FRlEߊx.BhdnZ>1>BTLLtUmNF§8 [hj֡9D(Bŗ;~ >q=/͜c}x8664nwm?N.#E>ELǸ&19 @ 9gCKU9-r:㵠!42&6yS,Xs.O?Dee|JoV84dZn? Qbw_7iwS1]sPwO~A OA TWACYuA H=oBRAh>>I@ޖo)ߤ@C{ */ 'lr -n쾁{-!c4X%s9c p}GzD[?qd:XySEVڍMhQϬnOmdՏjͧLF.L!zdeR tQjg [wpEKU+C,\`uG$9^XNxm L7]P7S"8; Vk2"}O; ߣAħ }O# tz>A SA}JP~wAbDtL7kX*6!#k=Ҏk|XO mt]|y Tiz-6=&.`Hw=?]yGk=;.RcLN};(5n(?A]_9*Gm%@|Գr'[nǧ珛8)'$!>TA^QY(U$ey5QʳS)xvSw9gMjl|ԍUW̚Wf$dt)$}YM @uM?:\q 0%L2S/?0S2) ~6lm QPjf-XX 7C-ؼEpg-(og V*]1 J(nDuǞx>|b&ܥԀq'#g5UOS2S?'?{Ƌy}{&*8iQTLr>ݸ@um=KVnߴ Ҁ!!>5oAin%+}(.TWuapMUpشOrSBFp?̓]*-m+ 3_-l@MqjC^/L%`ʔr)N3+?0:2Ť.Jf$?Cjvlw $0dsH6zαhJ5:n'cgyIr'^ L/_MnZȳq1:>y0{So]?<|ܭLvwf2OuSMLa觿KTQʦҚҚj\2s)*sQcI\K"\4-rFGe $!BhŴ/8 DHPs=q罹=o~ųZkC5ߧ۵vN b%[#pʇuM*?is#H+;zG-m?jl}e09C٧[BqEZЂ2x_I<> <8P/KᥲxШss6l1ÏڻmmGGuk)O[T=\eJKIQwjS+sCAI{?fda VT7''JLS,s-;)2w(CWrL ǭݭ݃Rpm.YK@I:aUm#`Ya XL1*|D{?i$LpSm;a{7fC, G^R` ufݦxđTSZWiBa )wٓS8K̆s)Ēi@ONׄi2xaSk^St")&q\HTjGg~|Кx|5 $̏xz! Kjbh~ahr)dq'GEpٓCSG/Ŭ>V.Yޔ&^Ob5avK0ڽV\٘҄)|\r̬L]tbzx"Vg|"WM|8<׎V7wm0OuLŁhi;{LN=ƒuM+WL0mGox `9Ѐ/X'{Tp^z RQ[ 5olRF]([Cs܌n+-KKZTQ1[VP3R4J`a=ǁKL!_(bj5'OlrNgvJUՌSqeGvqY4cjz>r]شlyu'<_g6篣O_F 5K~oy~Q!:o|P4[|,{muRT#bĹ4_TGKġϙĔ%S-X)L%T\ĴZ1*j.bLHhW|r:zb*j+ib= ʫbO@GRp*)SIL`ƾTz)1kK) =q1)cմSS0,6)#fjiRjB 0Ƹ?k[hLXTML1Un L1b )`J1 E38ךC#ph6mU> Yt.".6”]@Liqd7vstg_iWgZ+onMqbvq{L$$rKm:rMq}tddEzfXr\oom?=@4;5]dW޹w@E֚rgUVcX3|BЛyPSGt:?jJE"4!HC@P9!@@b8bV-VՊ((*Uh_Kxtd~۷{cpf_3^V7ZOۋV1L~o`OZg` ):_LiI.Q:zk˗WFF`.CvvmnpjukPfqy͆ʷ¢_ *y?}Ў'cko`m8&/كwV78~jfKsCԯgY<3ܤb;ln?oi"<{'5wPaU~ItEK"V|m<_x~^72 (`2Yyz2r '/)}"S;q\-GW,6}fQfx.tXΊoɼۓD̑ʕ}W ҔDďn6Sy j\~j{۞/tN|eUk[ZFyjiG{eW˗ L[Lm.='5adw6咒e,YIJ.LC jCpe?ı 9}BUbOA TyT'=\]aeӡ iz <'ȹp\껭qLً>AH 5wEY'?Y͋S[w;ڋ85 loax\)6y"8}*yJ颜L]}7tÓ99'-Ȝ( R%֯RPz-3}q9vQuXGF»1``W)ĸ,>:.~VTb] o(At7 9ǘ:cMup_8Kk ܓs0vR2)\_g^ * d=@ı2*u1F4UtP1\mjnc<P  Z! 0^[TC"pۘbv1R$┺WA'o:xD$evP0h5}T*Tg#YY#z=PS(vK t ٸmy0g7OG*rL52IgG Z Q?xQhV!hxn9q|cf SSAP1?bDp!pva0%Nu l7;`zү( üC4qxk/ފ3Kh|qxiL1Ӈ )S4 P 1xE1Rp3nLA`Scbb. #A1t$]%tyl y0H'`cy, ^(pGp M,B!dv [! ݕEKL 1:!e,an ZGУ*S얞RvSRlJL_jߍ8cV,4_=۪:[o?YVBl8l9z+|q]㼍lOـ}s,V(Br`9` JF>1&O iگLi߰N} iӞI/9Tr`JũB'L97 \`s9)55L  4F )S+:’)U0(Kusy[4GoLLQ?xK/LF0UJh,dW }8qj* 4/ED3e0%i"ڍCRy0dg-3XS@U;}X`=x) R%gsuTLiי_j5/:bnx$eZGحP`#${fhOGaϸ=6[{sޛWF;P^{,``jx 葱2L3s eKTIl"mہcؚ2u )SjAρ)G@ L)?ӃZ}ߑ/*( s *øGZXBn"+I 3|L=à&2p1c'*Z( $hQih 8 ~tr0Nm?q<׹9s;;3ʚvvJq1<3{4~íZ.b3S"XqY{{dӱis)ᩩgy[ss˶gzY9?id%'ҕUaUn W*HW569v+(,ҡ-8, Hc#R6> [U0ǩyJν1'M|uRG/n>BW`FD. G^zvw&v1p4ʂ5|P)n=ELY/Yٶ3 I;WobkzD DHsf<|δ({S7% BDHWV~GK#}_1ؐ&ΤxC+̾^7PyԣS >>:'ߖѮCܓ#+]}x?;0s2!o N&!%Bb*S! !T!T!$B!1B)BBHLBb*S!S! !*NJz?^]Ky<%45SqKG⟐d;bTu؏zʎr4X{ JMgw<ے(8uw &%1(șo'dj pOaӥndӦe*Jk8ޙwQ/O+;$@BIB@ %a=t+.2j*.ҶfϜ_5U$&&ssϭ[Vy݇C-86s&#VtH,cb#+[BUPwLB3NVsNYefvySپ s_k=0otG:Ct*&: zy6a9)~e)K+VxnXl~`dFnnjs5ͷqAԭ3`8e1=&Ar&1'o*utMgd%ǽxOQ)3;?k1#{EdN.gR ʸ $a!$$Qa/Vl`JKkk:5w>wI%8Ib)epMjGK$0= K?vouj ^Ox/+ȿL< OU2U'tZx*QbEWaZ!z;LA#@G9yZ=L ~pÍ^F:rmDG%45N5J]B<8ΈaԘ7!)Vxf~;+GQ4)%3S)/&_-;9!8ą\*Q<,/v24boG%2[ع;t &єcs 8ѹᴐz!ff;.\5OX DqCS63/b 9ה 0ls <l̴b:J(BlKn⾲Uv(3e-)9.xBd+uw쿚 nq)wk>ACSBJٺk)D${eK蜆,-=t'LIPnB|L]}C&5՘$MJ͂LM< u!S/8y&u2toHNEYX~F%ƹp;D9:dJنH9;)` "|MDNz9u_W͓C]p2j~1t$D(IB9J[vȔͻ&3/)QwϾD=%}4L;iMr^ٍ87ư[9.#Wƾ;._|4>WPqٴ8@fj/Fc/a4:+gf)pѼʐQ0s.88‹uB2]\]CbZcN KZOI| *`cdXaQy!S]n jv0XuAgm'Sy 2 TAd* LAD "SA  2A LAD tqh~3SRQT'^_jNpdFtzVnžO>*2jK ӖF*x.R98~8H%JVAGOΖ2p¦?2䇣/EwR:g[,Z dP-u?"{WN-Ò I3L4rUjj!c`jWQՄ)Eߡ`i;B)Mv%+7:64" mjf ]4F0ۼ${{<@ GGS Ph%|tW9^#S˹gĖdG%b.3IyI }Rgǔ=cT{^l-RY:|e7V9<8haG曣ɋ-g<=S*7kk~g 'Gi{sjɔWnMRFePg/ Uѹ<|Gm.Jɳ oغ7IhwN"<' A YLqC'Sֽ2pʄ7SNkhII-J&ʑ>Sci8kXՇ، b LYN5pY.cOa)F8d’ }Fq{gOP']ו.n7j/i#aN|N|[w=,035TA/ 2AD tLAB  "SA  2A T2EK!\pcN h.^QqN(tt.Jj= =^iqJc1S9|qI!V[B%}岁Hˬ?z饃/l?GI|2E5 vC,EO&An'SR>Kl1q?Bi^bmE E(%k lh-vAZFFv7:uGdrrQ2A#SGX&π1qIʓŮBG:D-Zrـ!}_l5!T\S+Y*Үv* A㐢>">*%/q`M>-z&ѵ cgf#p?aV4v*©9*۲SNi¯ߺ'xيn4iȞr+h$@ȕ泲#eZkZڒ=zvk< EoM>O0Ÿ gnp;W~JLw?;MA>]tV~."(CsZ뾖L)@z7[^"Sx*6 -[7ݜXo!2Ÿ~wgJ]. )[iD~A19s=~C"mxq`(Ǥݸ;̋`<P@dKglTa %Ssyd B tź:ʧqhv)CkށRvK^#yݳ({%MsCdLI9XcdjNIILm%ӌy~̆&4tҲQ!~6 [2{'D˖It骍ٰݐLI*1(Rh^.-J±1(SzcOĂNW^S Iv S;@-y" uNjLX&:`<$$Λ 1YN R f4fSfJsrڮOGԾL`4r{VUeKd hw7 )9"'S¢Йf|E"S*|t2u!wV<9,YZdd=ȂASgͷCݒnWd+-8Xd@k\)[X|`Ό0)/E  TAd! 2A LA TAd*!S7/AoBe+A]yw 5o}郿}:/_{gƟ|>z3/=rEpnu,IL:LG)kP+ Gf cqҳrT|6.%@ Jd$t 7n1s*:E=~۩~ťng㈴,gSд^\4҄K> $;Lp4\y3/7tkîA26k7)~wi AڔK+)L;>z\:>},@Cy$^koi#xIp>2h"Dxz#kgxq"J,ÕsGo[2X.2e6 %S|. 'ӁD\Lyųb@/26wJu>BvgT,_z8KgI衸`Vi:ruZ@pEՍΒpm|;>fdO  TAd!a2OJA e Z LAD TAd*Ѓtź:M+woj8v5uh$FȻxEp>`2c8 fKi˖}oə0Em. 1b1bO٨DcOu<̋!B'!NZ> ~A V7~'jw=|T?eXjmE҅Sa(ZE* ]*bZٲUN?Tp֞NJo~P)@+Vi0HzE_3{z8ZݏldkEF{~>e|:4x˝l(ȝ4Ô@Þ+,^ef2N :|:UMR f#d[rimC#ЦfEs+zyhúͻLQ>g#ً4pt|4Ig eVRΧ Lw525j;yMlN!m/\+>i?w'uL3Fى@-UWfxc #˃+Fvd9H8ԑ[y#ezf+-_jg?{͖_{}d.52uS#-Pپ))P5TN~ F3FV`9 GON=郏2)7Pv\L_Asy qt]LCgC[lغ7IhwN"<' A YLqC'Sֽ2pʄ7SNkhII-J&ʑ>Sci82嶐{ID䒮nj1+F,5ے f!4 d<bsihwX_i&$)܈1-HV,[GXqtԁIo2 k gԁfT(K+{>nMqexYa#y[eOe^ ̔ GݚSgCGLSGwnɔR'S*9O)PW)jոiY) 5X m$S^A@ Q!\ڍLt|Sl^)dj&lń_NJ.;v2 MS(2NCyfjbdi `({Q`/(IX K2/4'Sۖy Xe擽[}Hɏ.Hz*:LPQq ȔT2) bCfj,,[hG|qB]JSfK^`ƒG'G`=uGh n/6_{X`afkӾ ~% 2AD tLAB  "SA  2A `2]q*](.;4-3JcH1rվt;$שjMAӁ`Iz:?D/}//]q5Oo>-LQ7ѿ`Ȍl$:e3~^T/z#0 nLMg:L[kb%Sbiv^&ן#_lt\7ǎӎHrjGGCG#pO="w0+Rj4j( gM/.52=G 1&_? {?$|YՀ.~PΛ<ȔC|X Y돔jlpX138EWsC{A>BU7eB?0BpjvLDoD $!GL,E|22EEy1qI6˃z($fqr8hn ӈmLSDh^%!q.Bۇس̈́d_(U;ZvanEk/ZEh7иV=L17 5MWB/w4Lմ L]BcNm/qȰT뙖9lM?eaQiL6EU=Lgy<='S'.10 ^PS \Ii&F)o>zWdGqxN_kdzYȔe|tmֈڣ4G6F>;'S`hcCY]&̘̐zK՚vLIJqHL9Zfc^Hb/SCd NaO~DmC^&BЄM)%2]Uͷ )dZZ\5HNTSt} o7. DḬ 0^P]@1{S[{IM|%3_{cd?ؙgd.^LYh?۶>lLI 6Ӂ; !' =TLĂ>ϝݳ/Q9'})gד4x<xQ+d[Lj+ )f|71}s 3(V ۲Hm;06'MXjk< J}Cڄy .|­)|=tͩGrR+ "ӞE]8-;'oGxFa\alcr&NtJ'#ԎC};2c_(!XLiA"|3gR4U|89lJ&ZJ;>$oغI]wI664 A2mh4oF({ eYPN).'C/ZC]Nѫ7D4;w|ӿRv4d1)!UKd= W9P4yO0UэJhhL\Ii~$F6MڶHRsR9|"F{@!{3KCT\Ä$Sc̄tl%L]7À,2%& fu8tTDY@ %T^xuJPv#djK4+gSϿ02bQn>՘!ɼgě+vSL=a4St;z( gzu=xUpNLyݏL9T7aGN>Q~s8-x>qmWJQ\Uc5/F2Gܖ.YC%6a 6CWoN 8Z= g\hGPj'!HP8Ek-9>&.i|tRhN{1ے˙ -adQg5wصpKkQUV/0l*!}2 - S6[^G(NGЁ(k 0xQ4&aDTIFǖnWS4B9GH4L3sŞ&P˵=<YӎJWCoШD:s-gDb$ȈXUH'$Q?|OL n'[ܽ/︗JLaefUʗ5q!g)Zt9\]jJgˎC6Iɔ2wȔv5@v7ڍ\IwVFvB[iZw`L{Ӈ۔.Dg (k3 N6chXc43#\SD%\JrOuS^iA%fcg?y@M,"S_+s'\`?g”Fa+HcE $F AFAPA"+Ӥ XY[BӨ XXyJ4] L2{M9LBjZWdO ~ܸ O-ҢS}fiҁ0q^ /GgZ)G`lSM1Iq[{ڭyT{`0/N͞otɯnc\\2)ʅ Uq.(tBl:ۈ\?M./ȵBc!%LyjJv;D to>*E!DyVJll%j7uS,QUi"?A!堢_&->>z䚂3!( לVbc2V:7ۭ~QCAE(JM"*z ᚓJlI7őn*4&R=EɹIO&nJ!J5'ؘ8MtS bɷ ߖꚥyu}gս`^Qd\"eع7m_dd((;)÷[*JӲyrzS8 M!RnA0Xʬ.v^Tk[͇ N/.B#O7&5ُpVC]"l=w:7Wvں[ζ-,UN -,:!t%qOӱ7#)C/F' ֵlbpc9ޣg3mW-U]}t/drdez?2iEVŐb%('j\MAK#.D!0;RfiNnnpx|M J*_|A En:\Ta+2Ǩ HB7])7T Q } &^~Ky펤T6;gMuն".XʾȎ˰Îb@C(""JQVK6i?X@J?M^&<Gl1'w=7<tDirNs+~pYTb 1'g̞IpEXl::ӥ+ 7gӮ~S uOO1GbSVкnŰxJv*r|8c=fF47iZD|g9 "f =l< [?{b}#3-[hMkϦͶzҵhEtR~I#l/(on{_ i9Mǎ}ٴv+nwU l  9Z&jPn_xzi.T?WI8һæo*A2\4XmݗKu 91>A~!Q*-lWz9n;uQ7lBwez3]"S [\h^//lm9u~ ɮΞl;-fS7!-pdں&?>l IC`x`S R5shevbF!(`VJJ\7 \sE<8X0PrBZ슧ISf12rCt4 PGbS.{)ͻKgS~/4.J1-"Z+bҤ 6偁 P24al53YR_Ya ^Jw@oq ع##̀Wm]Xl˫TK2.*syuSO?f^a׬6)Ŕ 61F!- ķxV\ĦQAlS4 cS NgZSLMG-ihi wBشZP&Jh -oZTd|/0-'5pӔQ̰4*([ot<Ħ[>>{ѭ;+0! C̦B%eOU KGҐMSnkZ;~Ϭ99~LU! 7OPtpK# un]bA=, aSu UOE\[UM%'+X)(1G*Xr6 PĦlCrz&jfkgc0W}O ] \$̘1S1 ltZ&OXY+tN/dS06N5uͭ(3i%E+A2#o >[%AnzKǣ)Rȧ0r &MQ"v\EA.gTfv\/R\7E1% Jr6USG+ؘuSgl*WF5WUf\aMNanyӎs44/_Vp<z)ܝMTEŞx "m٤.ut<ʦFm[qkMU-4ZIxpD|tRّyRO6wJ* {›a][~Ʌ끊hr6];0 BC'(gS7+c$3>56ޟ<I!C*gH|S$lj65.lX0uCHːMåkXF(T(*BTJV,[6-Y:RW`P6VԯnPPIIU mϮdJɦ+w6ڇrʁRPRtKQ%IT̼ljAT$IfSI$c3(l*IqS٘M%I̦$IRl1 /L5̦$I,$ITlZ|Uc56.[[S['I$!I$vȦ׵p%$IR; li$ITS]{ie-lll)2B+nA"ԎK`-9cF"ʤ(A LS2òdFwXR1 M'͹s9'7i@)l dSȦji +&7!>ʁjHߑ{|rr`x8Pv4[׹v3orZ2Rh#F `+#aR .tYC5b.& ^="r)R!U33sFc\Bv& -2V{^/]ZuYJ>jn7z)ɑ~9'»P#}O1H4wG$)SM -Tʆ0;;m0L$gq ᡒpG¼"H3T˦N #q`tl0НVCcx35.L&T.R*%z:1//?lFfȜ4NFv·]:. k5G!cR#7o[qܙVdM#F6%^Q]Ŗ+T~vqYddCq"͛+MWv򲫪V/=iT)$D'Ʋ+MXl^XAPuۓ_$$(4an!e8h< T}Sۀ/ Ƥ '[DnA :zG'w>嵑k፠񋢎YBYgQR ;D}6-ϠǗ{^o>tL֦xy3nQ͔c1A*nHS7󠪮37u:LtH .(dǾ#OKE6VmbVCTDcHEF@I;37߃Lpq9ws *(]P5a1I,Vt-'ဂҪG̋L'Aw.)]xt@h\hLclKIF\V2)/8: Kr=]_!a̬^GΗ5xF&XTj_(G?nU'ť2W4+*<.dj~2cN2Q-; VuA4[X]G=a76KEۍ۽㜧yvv߫o@olMybPGg.^ZF݉F9E^0}?:6Pfn<8sֽk '-!!>*JrrGN"Q]2o7{n顤K/mF|ѣG(o]m~<^Ϧi ɱ d⮆ؔ$822XN鄎#V\D% X\gzK6;/ g+\7Ƒ[x.cS;U$xbMJBh<]XIO$ WjXq2/H'oG>GN]R҂+8j^I?o><6nfy!s$*I:V:l[1-<ci뻀(yNw `04)@ؔ[xgV7{lJ:OeVۦsV`϶xE%Ś%AEX嫫/3Qz*j}:5B⒇g{r)(ԙSd7lWY?r2$*ЉY`㦭]CB%B{n0}ٿ H:5nqMAmM˴IqjM:bӑ6yG9z,l2>fayF*~ȟOĝdSb+Bw%"((c%@])=%^cm&g34zOw*Z2-F 5!T%g<1oJG^B{y( &Qlޠl/oLh:*1S-h8 6SfS;F*xj$Cbܜ=L &bb.{u.jma1(ql.[ff9e'b0y0Vɦ:8W,~06s%5쩮ERwu-3jFƭcQQk(mODǼ˗S0C_}7]wwu-x9ش_n~Tky|FHCby^߷S_sc0?;.^T*e]geXcTx^o8"ySV}:>#rF)HXTɦs@lPNOe1q%! IL6etl*hnC?!ǦPn*d9n46 o m]0Q!޻q6IR\eX1+PȓI!% :`M>MAض/QtR ̛!ή$+@| !3ʼ)  ma@J6%v)+]ZemQcb"PCcE_ H U$.UlVFY:tX=Ī 3<> -JV$nٔMHurt l*.1kW@5a"KD餜Pџ]X?nIBI஽X؟oz+%=֡QE ~le^D"oJ@gq*%q6eNVd0?Yۋ?cS* zfe4%e W]De[5{/_(δ)HzS>BL'x*nASÿ0,~߷o/7C6>4YOv.NE"8)3tP)@ /ʛ:֎/-, f6ٔweIy/́M`l:ļ)Iq:W4[I=65 6Ħ/_z(/b(!iNqgW;cS=}/_Z{{>q0tRJM9t& u";%;GǾ4qܠPtS&D(`RJ447AQ/=UKآEni`A  7_~t3牢)…s=ܻs>QaY a3EPX8_)4 PEBVӜ"˪N#6%MrqiPFCSYr'MMzhis?yq70b7ݝ 5$T5OJ/pAʵCJ94󋝔klJ8po۩l:܋v9>WixJov; ? } {ۓFCO_]7=*o?EAa)|̼|4[SˤpClBu2-I|GRUu!PD}ҋI3 -l ă\TO@hؔ(ȵCiDY9@>nԤ Likz{ۆ6$?2 }17˳U/fo|trKۖgi+"Dߕ9 O3yDIymz`{ i* 8zX+9wnI-YΕ.!BAXJ+ffkkT $"#ЗnOC}"ck!e<-c9;ss[Ud^m4;E-KK W:~(bc_BYpCc6I:UnsX*%÷tk,Mf^35ްrtgh2E_M*4[Zo~)HKr\>T!91)2{.1Ao--D_44^ۜڥ?0=P8btz||굾]{4Z9UJa[`HycSEә+v'm ЦM)@6MgmZVnd6 hSЦm M0?UktFb=z&pƭNz|ȱֿZZ]>.\s>*ui$֣3UrMCnVvuW rX|?p7uP/'Ywm*ZDŠaO#]l;EJuSM; Mb'^|tr]yNʎ$qOyB( /NLD |!VOZՅw]֍E뢋6ZgYn=۹x9ώR]ZHO30U[u5rb-SȦby9S?<b2Ezcӱ>M6?h+˙;H"#QhH;Bo1gVGQRXɍ֮B?i6 NE<:y6y"9/)@1 /) P1)eM mkgV_д?+/`ӷ?eroW _RU5ۜjGSF{ͻu&ILd): $JpTU瀼B[HկnD- .oTT ;D8,st106̶Voxa74þA(|avP@\\R`hjPzƫM9 vt6(k!p{,[=~BTuv8:::)R W|. @ !l gѰu XxV7dejlVrr. <(Ha( ]-߁ulj47k-N|CXTGM¼Ds: <DS c"߇,#Fh$c{ܱAaNhM 491/&Z:XLI4 :Q(SEKif]Nߨ)l\B흧u~/h:qͬMH忕ᅭÙMS'^^T~w{Ym" 0*6` i(XDE*-UM*h jj ōnݸ9\F݈+w.7aȁKi(d29s\R-+j ]L "Hatߠ5}j&a`j,߲t.|MNpIǘ7ScLA0_h|VWwH^f:J>?MCYhޢȎ `r=B6 Ӂ|wE sabedAee"eR+l(Lg 35xZu/d1|̼&KY߄r.>W $ϛxC/J2J$IfSI$M%I$$I̦$IT$IfS$I̦$I2M%Id6$Il*IUM[wڏ%K^~;Z7>|f}v4{}Ul)lLPo^GN3YݱkOOk,즡\~#Ň7>9w)~Q6lx7dl{ 8l24%0DaLbBuͽkxFFrqq1`u}[\ Ųa>?x'ωM܋Wo?n~]}:9Un}ַL0smVF7qa,jNV% o( 'Ao: vD7T ʳ[lnL:4~ɍ/2¦ȕF9lSa/213|)b.^S*,ŽVKP0ˆ$IN")J7drQjvip-s7C5= ,-UY['~KVl%̦X`pHJ:\YoxIzӹM7yR/ޔ&44 #-tCv&MN34jʃ#RySo5 ݅¡ikQDD› Wӡ"P +DƤ 1:TDDDD"""""zSћ7Ͷ9̛5}fv0j(jmzdB )XJ RDr,%d)ve(9,VFr f\Wwf{[0ʯ$SY /gQY35r~{ =qO>8>8j)8оYn%{" Wϣn.`SK'dF,hӌUy!k%=cPHU\;RL)@ D }}毕hgbKOQ?`xIZ1B5V&ZbPi-jCKAk#YqO;7d2Ձ%I;wcfΝ)ܫ0Εk&nD)`uw!EXt<2'Wcqs=GO:0U-b,G!9)f^Xz—#l*:*ՠ eޥ_Z>sᛳHkkir԰i|6ml) 4܎hײ)*!#S>7'D41X`7))PB1gp͞=yt!!s!1e %t×601"0Gq 2EOulZta:mP,mXvsc6`[aS'[}Ue8H NϦp#ވ9eQH T=z9L D,/TB :6uqjښWXmHZ׻?6D_Z% ԑUMulƥO C>%b-҄v=/ @LX^fk7V +N5ƱWU)_yXaQ rwo.X"4q?0֤ˮtBĪ5j,Z&*4bNeD7T7U@E!MBDz/qb;&fʁS!'2Tj\Z} n '#W W[Ŧ|JYLٔ$ 7о 4kPZv|$ pH "2d1iNcS/ d (Y.sd3/̷ī~t̚ 3;OO!st] ܚHMh>3Oc]S"\XM]!@ۤ҇{'^"20>ӷv_v_I;+WsS4i5v(tMGߜTƵSYz5A&f`g*K -׮;q㍘s1bXRQ%(YlM9wǦ{ vYL&SCr+G<2ikL[)bTQ]Ʀ&d2L!A .TJG~{d2L&d!{}i*8Di2ԙ3/sj^ZjwUӕ+O6vutG= (1FVĈ7;9q~| lJ6dS)Ȧ M@6Ȧ 2W͛hZڦFtajOk@q$z'TT5Wn)ש9KNFusO$UiWW"R7;b),s#;4<] 3#/7?h]m&R.O6tuH3:Em5})q"m=N_OMOmxΫhLTԚw߾sOQL?|L {eo^ Ot¶<2>]#ûqv*}f? ]2sD1-]#rZڽkEeUxi_L;JOԉ qЕV=-;BItbȑӘu;i\p3OW.wE6/ַ*:dd˧b(ѧԼsM)G-m9K ),ѿܩYf%U@n=Rgf;Ma~e-PZ+%dW$( *ek$eQ1|/ C!Ą=XɟftfϿw?Ͻ}j{CIFvzM&i2",mgӍkDY3q7a,)wʚ[H,nRWQ,\==}geqL(b(?`L$3sj)+0Xp2Nϭ1}nefC3"CÏRp-+,o`슚>0/rHzoq"'qU/JIdlP88J88*|6i@:rReq5.Ҭ$j)j'oFS.\D7W"Z%o٪]wc 90933`ӠΞ5Mm[PBNɎ؛۰dO(4m|r.=&*4dp8hĭzcòʦJZC( DЈyC 3)ȦdSM6Y)xO l M@6rMucF$y}}w%z ,#N9sH}U=X ETaw*& Uf_}6ф!mX˵jb/GZcZ<=tA]_Z GTş<}qߧL˫NW6oQa{y j>5xqj8/ihu,7tHSIS6oۮ:)lcx`8Va**94Dz\5~rcGllh2qӤ (rUJ_ͧ_\JJHǫZUuZ5vU>|]D%6&5Ŧo{85޹fhkHx/vͥ A"K)6rkR"w[(RP ĸr#+V$Kb1Ѹ00>xJ0$o3I{o*]>/کFfi ^X+W1vjfal9ljjuBVEJ_1[5Ғi0m`S[vȕ꺶-R+*uLŮK4c9}̜M;zK:(X+x5sdle"7X*sKOC<#`LLZi)`̦d%I‘&,3vh|N4/tXʝ?P4&gWyuCWJb6Kgdfa4P-6,]4<-L/ձe6wca5s-M?|wr'(Oڬ\Yx~ȺWo?)3.y:܅'D6囐MA7ըV>?~gY'OͦOHQYfSdrE }-Egvo,/72c`_Z`MN_4Oc*{.2~'S8/r%Y'^d 9gLMO*%F,e0WQQA)Uj;&]DXU_v$7M~GWs l,s )ٶ}಺ ݵ7÷ :!nl;RBH{]trIDUWh<*$(mt6OÏN+|%%q+> GJe%D*KJ$IR$IT$IfS$I̦$I2M%Id6$Il*I$$Id6$IRoo6f).I˦dBB4ƧnW4Jarkf3o'/hh2^^ʱ)'Ж_f˸oTY۲N{j5/&7Z::D`GtћR=.+֠QQ-z)Y䉐Q3tWjk^Z՘_RC1veIUׂA0>VEד0wo>:45iqI"mgZVQbt=^N-VӀP^K ω'֍LnjI%gχ0qNhD0.8rS\i=OM;%<8l*vNX)Sh}6(.'_}ԋ!/LW\A=|cSNbSmeӦFYYBZO]s'jh ʀ­zGɛҩ)" 0$1lM`j`J'1 bj;-iqI*OҰz,T`M8W8eSXdiT8qbɛR#/l[l01-g [񢀳:3#9,.Ej:U7Dބ.iaS) =5voMirogS3fjf4yճ QxͿvNsdӈ؝7ݠX؅P&!_ M_|=Ǧ\Ŧ@( ,GħKY/3&@~7lcpi ɰ§ԈM ZcNQ% f8=C4oÇiĥ"pwsɑMq@! anqշa, »M,\،6l#/<|8ZS4T4kE>}Y1d#?uiرkGO6lnp7o3{>Ɋz^~\BEZm]3gf?MQ\-t]h-R ՖEPR@)T "4j@&.ƸDQۃƸh$FhEg?dr65QQΜ9so~3whkp/i)VqKcb%9\WKi%?'_]"F#S鍹0w+ʪRLJaw+j"1`hpɒGnm `%%\S'`.t=7M&k=䕠 nvl+F4D4,9hy( oz [Ibx$B/e/Q(Ʀl{Z-#_Sj\:64R';!4&ΦMrVsSjͦGN>w*Ee/ubWew#,LLa)]K쀎5`BgHfg㿤̱)gyB9tlbzՅ*[ ՎVdS&f4ye0X`Ө tn쓫3Rp9P?V(F$ cykCЖ<; EIܰ'y1F9weU㫪I_a~{5 U6Lٕ1v@@..xS%;FP6Ab:&.ځo삤2@ӃoCT ;N(M9Rue҅? H-^ƒh`Wɦ@+l#]] ̈́Z[(A1'oYA5Yq*R,-GnqKe`EEUC*RW7 sd٢`Kr)pOtzf8iUpR v<_w^M{޾+r5\)&1xp8vnJ;4Ee֎G5Y0~>wvͥ WV VS EU E*D^"R,%B \OĄqaLݸr/8ޖ 79sswVыA\ޟ_&2v*-A"!$ph)lzk<#eEI/[n L̠T0RlV6%z$_?y0Loj)Ke.Ԙb5/Uæ7\XY4Ro7eSl x +>1EH=EĵeD*:i$!>LOL\v6wGI=?Pqt/ @L\1!^fkt#ڭ +¦.?Z]MŢ>,=y杲#Ŋl 2 M)O|lEX6_4ٴ=|8/^%E}eSmlfULm]&Q=ņ'2BHhccoM4S,1ËfBl l:e8Poeh^> X[zk*p@s `ɰʦH& Xg ѫ7Jz΢_U(%֞ќMBvγϦHg+X̦MF;Y%I£JrBF%1.u ɨ1CtSٔ[:IȀ)'I%)1tQ4w@FpR!AfKY Ζ70xv{ۮ\λ#  TD " E ) Ex<@ĔI)j661b% lr}b2ơ{sߞչgRKzĢQ ޾kwoTַgM)+kͳIJɩ>i{)qdN=͜zW> svImtcuC)VFclSh%ou+.jq$a @I]mMoKDhWпG-YuQy][WFfնY,5jl]PZS4Zߞ0b5>i;ؑW\9lz9s_qֺ)jw/'UAaX1iKS}T?2uKU#jSaQ3 T.|?ԣןk&64A޾ ?6:a xOg4͉*>QONҪ]{Q`kG3ި1I7iU47#DUz RRbֺq̗HZn0DTڠOZv^=$3˃iab4^?{qL⭠1hՋw|BlI,5l *k(Rh8zXsyJ1/''UXU4d׌S/\Ҵdˬ48yȱjqk7mkTlʈsz,]Vnjr"4О4yS@Wu>0S?kڜ祼z-;H}ޔqBn̵a.\*亦/䖑M>٢ecGr827h~ođNٔX#?-庰 :7×@ )@%V/#5Dj0*y5 I<݄M5fT 1itM 8Vcfh<9(zOL؇U&l*z)!)j0 >${-E%~Mp+3"3>dX0ޏMсN.FH_B&{?Qcg%݇$ 6W>1:֦\AQc'"<|# \{,zqVa,~ ;ב^R 4&M6=i㡬ڽ~%)a*L4YPZmU,pF6Mq^z:aVmbCA;6'Mز",b0G'J +'4>{dA>[#^?:ѤQ k>:B&KҦD] ˺4P Z eFεXcT- lY/UoZ٥""{wc߸mXrB.03E a6M1W6|> ʝjԦ"۪ML@Ҿ#8,|.#"`.Y^@z6FE^ )zr݉=}& 6dq.B`t d;gOepej^4Nc#O1e7aEDDDDԦ""""6QiӬMEDDDDO_DDDDDm*""""jSMEDV;8xVZZ@-ЋP\*rW@D.r/Th)&tAͦf^2sq6͖ 8o|z@{'9r}߳)W~Y͜)}j݋4%ׇFU% 8r.4۔iֵ/ GAf*feږNgZv'011=W-D¢.V'8{(bSak#3ؔR~Tki {m4Y. qc,V=fۻvȕYތ7Z#1KUJJյn9{1r.7g 4ZiunLYؔZ7cSN4)"o?wќ.?ySgH1\:s"~TH<&N{Gɩ`qdI'O/|SJubl艏?=wKy{ӲeF0ޣ?ѝo蓐REݑ267R2raXMKGoԶ@EF5,J1@5uI(]t^( owoS4-F',IJb~A׬o4i)麺 *(mso ƐcтɐڤlRmHDҚ&'P{i_ucEZ$"e+V&@OWW[sKp[xEd^R^4u"nwmje"qgbb)qiu KP Nes?QKZe$X37w*Y#<ʦp9O`l> 68$ OgL!9C8HЙ14z}R4Nk%wCNgIz[חxv¦N&{_pt`>L .AT9 ƦL>s?O< ALI/)2 05`0͜mJ1)^Z[ՌwDpspCʦYnja\43]=o;xؔ~LrU^bNϝiK}&0o6#oԎNkm㘇Ma t3-êCnx&&&."#ضq$έH' V[$C @JA0<8͎-ؔeS" haI9O;챇, %Y2Gy/ D!9'M1$qɩJc)8;xDSR%Bѫ兵6v\.IGu]=o$""Үj ,g*aSEB"L+("N glMp_FdMXIʁ Y4H,p"k4ᙘl 5 %¦^%WL le>χ!ILA")cӧlJ2 ܹ7zwLβ2عR{Ձ;?޼d'NaSL3*%pyGeu ȳJrڽ@ؕVMot/jn|2dӂՕ׀간Q"*P܁kɃrKFNjG+j[C3 `RZ'\Ka.V>%l%9+˰Z7cUxє!jmyE@f4ojCq((ʕZ`:!E.Xw7-QEa?A A`X*I !MTXژ3&h7"WE-`ڴ ZEE.EEp6q|?zsg{DtI+l2%JAo唀 6P֠%KSS]c3˵x"ڔ,E~HD4NY3NAyt b0)1~8Bm >qgoզ~ϤU?@qz$i?C*)Y U6嬚2gH|$Idm*I$kSI$T$I֦$I$IM%I$kSI$YJ$I֦$I6]ꜥŹ,==nK$z)5hg6sa2P ௭Bqx8KN:GZ^!XXᣮ>wZ:}@=}X̢okl^<ۛ:{ p}2˙7ݲpe`?ݮ=Sx[}a =޵hy~W.O\5mÁlm:omz M1۫ ~?Nط?}IOw璷Lxm/fs胉ɟ_{Y]Nk?N?O)miL|0>,P]o営@[*"Җ.t++" Lf38Nf1q4qITb j"bDPh?/͵o9<=mrx_g>CZ?N;xo>ȱ%KCp'殑M[-|1S_|+#p]ocG#ua7/cGtߜ)⩜WOVGVYmW}WNaf&zGg*ZUFǧn;8q`x`Mc;<,4zȾ 7{hzt=-Qq)Z!5#ohNe66`Tfnoy(o[]#G'UC-]Cnś_909pIi.mva]^7ME.FvԞC͝u'gd˴U8$;OKvjF8YknЎYyŽ{񧦱#(8|֕UloAF&ЇK SʬPYZ^50>;4ypkΛB9n^^І5-cdUr-pQ OVPK>g7x CwjjH{Oк6U5ַ(E+STjaPXRΠ3}`^Cd:tN| zR͜IG4AXM6lò09êgזnmQp%31HCJ*!kWMUTE%jweEU=Ґ[NIP,<*ޛrV@~闡.$A5%e"kڹ@oќgmJ.gfr#иjKsi^10:D+NϢ֒IYצkhN!, AE I(A̡t CHLHHmA0OU9% Sz[\H(GS N$v.6%-z`O"t@S$VPciE>ɏt%KKZX%bm2y_'[3 ~eLNϙs>%G^RL-C+Ff˶Z)ېp{i☴4VLzGZN&`(*BRpc%Mu.B.E%pH r)LȼiEu^bૠIJbA(`fWՋGRV")phA<Ԟ\"=vۺ8EBکm*5и;ePclB{Q sW5*A^KMs֦AsBsiҦ$%MYnv{QmJ-2 -"iYmS[{̨7b }Mۄ[B )0+צC 6EmS'koU9[wpbj Ext"ehϨ=**wЦoot?Ah>,,y=|$7I%GKXvhEXKQ LP-zG^"kPYn&7M`LbB@1 ə# ĨYt`j8s8)Ot9^o!S[t QMЦ[gхqtHr*>t%D'dp8FT:xi4Igd@ȡ; -6oxrT)GLUM/A:p6e򲟇@j:L:&2- rA1xbS;ND<ӿ@|9AW\֊0K;CXu[(S pq}hSk0V\pgP(~倏|8ᴄS~c006NJ `0 M `0 Ӧ`0 ]FEǧX7 `04O'm ƧdPɭ `0 ?/HM'ӡ/ `0 WM `0 %IENDB`extension-manager-0.6.3/po/screenshots/_2.png000066400000000000000000001101021477302130300211230ustar00rootroot00000000000000PNG  IHDRĭ@bKGDIDATxySOaVaXQ( **u(hE>.UAmZEQP)([n*˰ /NI2ygIn{=9s@BDu .@sB78@b!t@!0Js?B"҉hZ ,aӬCEsnd7}@h5yi64cq?bL(X&SCc)9|k~\xnGá62Pcc9eF`h3EpK8{,&LSc:ԲZ<~7_Ӡwxnm7xh RƆ`߂mm܇#Ttpcg6@zs(K9fHcCĂX@m$f&b<`CƼS`F(/bF,6"HXO,܍x_Ahrmh= ޖZh;0&1&bQlHDn?S )H,EcÄ!N $BhL |pN@0{jVm_gv %L|D < gs"<4ON-8{`D0s&b:Lz4/WzyoGaS4O5 {># $L0 _gu 1x6 y&P&bW"D!}a =8Q2tlh `^`4iHjʍY}[y/H/@p ?/_c|y1y k¢D(|]`BEG$2ϑ`26@l26~$Hqtog8p\m<|8 "%|=| _!"I CD.]ttb#);plt۷IёP 0| ahp B{MaMކ/9aJV`s[ѥKZQuuua2 3[\XVYV%''+99Y}qI']犊 ՙ!$ݮz ˫ڻww:$m]oCk8Li aMNLV~ '\ 0 ázjժo֑0y6uT)M:b)HJ`ޮRo8&g/Ν;əNCv]Ó#сN~QkG0[1]CSZ%jjvfvUWWzRo<H̄)vJwuk< މΝ;wX,1USS#rQΝykIǞE|c"P4Eǎ:N mSJNN0&V Tuuu&)E/Ak@mƈx؈`y ۛiKNN%ASrr/հ7IZb9HRS,K>*0dXA{!ۥ=k̆h@+'ƗuAlJMMUJJdiz֪&mSwu&=M&AL \'&xsͦLy}j*%%E)))Ruu***q&O !:r5l_X&X1sYvӕm5iiiJKKSYYBټ6`{ܗExv> o|XFF.;;[[3Sm4A"<o};_{ L++++dee)==/G_6"A"Xqoժ{=͚5+EѾ}{o>gl6[H=e¶Fo$H4}&}#ZjW_}U{ֺur䢋.҅^>}(++K;vмy4m4B Z}uD7nԩSgE\233G0 qRzzTQQ!δ̈ál{5ΓXl.M"Zl3fwںun<&f /h᪬ԦM$IϏrl0@Tu%(ESuu6m$áI#<ѣG׿6lE6ٙB39EBc5 7e˖zW[ꪫ],t 7hZl.H:rj(XӟTRR"ժ_~Y gAn.v1ę@kWZk\srrSO2uga2+s$mGrTX"c4atDN!ht뭷jѢE*,,;CaÆ5xNaa{1w}Zz>ShtҥKfM6M:u aZ_aa=c/xb3}zTXXUViƌ:\%IO?F-I~F߮UVi֬Y3gtiwH Ėo۶M'tL;N999zguꩧj!ۄHezLY 1uUZn~}ݧI&N+WT~4}[IKuYgHw&L:)StWoCgPuHn?o^=F2ekѢE*--mœ-Z*6k,=s.ҭުRmڴI ,@СC/ؓpwܡ;wG2eL^ziݚ#5qw—'|"&N'jҥz꩐ z$&=3gΤgHO? O}h{u!uI&Mҋ/+WjȐ!;w;9Rz޽{5{l;Vo̙:(++똳;yzj}:StWW_ j}w̙oFÇ%I6m o}D\r$5~ ?O>s=vٵk֮].LIII` >=R޽UTTɓ'z&NzJz n=cLBoOhڵ޽N:$رCk֬$=ڿJW5k,edd@|.rm۶Զz!=䓲u'RKp&LPfffP+))я?#GjΝ馛vZjj:su 7JwϡE3gt7… R}A@lru6tA]{~!̺!nڵdٗ,Yܷx EZj]aRUUS^^\6Dm=&p'Gadɒgj*++p83QVV\CD$,TUUVAOVEEהi ݮÇBJIIQRR⠆a^!@ fnR.JL#H0 4L#H0 4L#H0 4L#H0 4L#H0 4L#H0 4L#H0 4L#H0 4L#H0 4L#H0 4L#H0 4L#H0 4L#H0 4L#H0 4L#H0 4L#H0 4L#H0 4Ӓ]0]Vp8p8dٔTl6@ ÐnWMMdeXdX]4DA"A!ͦ F8 YVYV%''KjjjTYY) Pjj]RSS2&z1 Ciiil12A$'"+++EDVVRSS  ᖝ-& $aJOOvQ@3.0 bf*--MII'$aӵDJrr2s%1 Xnٽȵ"@J%D=7aBl6[ Fb!HD  ."ޠG"1$" ᾎpƺeZp8dZ?hٲe Kc7PEEEķ/\,?amݺ5`\zUVV+ f0x7UVV, 6LgqV\dۯ'|JIҐ!CߪM ZF \EEEi:mٲջҮ]@zz$o#%%Eڶmk!C(--MԒ%KTQQkV;wT$I˗/%Im۶СCj-]T{bѐ!CԽ{wQK.$M8QSNi6mhԨQ:p͛s}tuשH}ʕ+գGm߾]~$իZ/A"L ކ)Xt饗pE/n:IG.s9z뭷TVV_#hBZdڵk/X/Fs֭.͘1C:uR5c 9/խ[7\R{QJJvhBիejjjԿWݻ,YzhM_&bᆱ2]pw-o߾V.7S9߿_g*//OVU%%%:p$i۶m:պuk+33SÆ ֭[cǎek߾ݻWahƍo߾]ÇWzzdXtСcm2_$@0= &$?_kתNܹs0 v%''cɲ:|f̘nݺ_~4hfϞS6|cӦMѣRRRaÆcSYY4%%%5:|1 Òiڳg/IE{tdIG%ݳgOIR֭}ij߾ڶm+IرV:TiZdrssNTvv$]/ׯW^ԣGmڴvmۦCzXz-ժ@HIIQv8)=ffC\yʒjէ~cW_@'xΝs}8p@)))*//WUU|2d}i޼y>{GLuª=?p@=CMV640 5L0 5bWx5{l3F2 C>-[bM f b׈#CBī1chҤI2 C<-Zbypda6L"]"Ǝ+I\u$"_ 8)DOYgpr8\Af.j£"~iלI&nŋ]L /RmݺU "H g/qwfi1"$Ӄ>~!EA~J~{cձWJJС 555&v'~_QN4|!áLs+0 mܸ)))JNNV}}e3ϨM6Zve̚5KYYY*,,܁?P_Tԛ7gVjj֭[^/\i/IQëU{^UޏL38ӟjOW_}w?+VІ \ܱlyb mڴ)='>c X,zW7駟vSN7|#sf7߬s=WZt ?ڹs^yzO|i&;LOZv߯g}V%%%:쳕$ZJeeeڲeB.+EoШ\/\TTTݻw{TΜ9ڲe~'=r81b1ϳlk裏jÆ ڿ>#UUU)%%Ecǎգ>-[h׮]z٠cѢEڴi:3gbh̙駟c͛7O'|zkzM6M!/,\P7n>{SroƏ_W~*cϐ`%OS7^@>m4͛7O7oVuuu:DЦ+//8IݻUUUc֮]Ν;kΜ9Zff͚UViܹBt] ƪ{.رVk ֪P]v=:(##CׯXRRR}ҷ~u]W2uضm222\ec)77WsN:$wqjٲ10GV߾}uVԹsgYV=cr8"))ǂ)_0q>{S0oxb=ztk~qAs,5oޣy?U 4nven6z=z{1YFwu3?"))IVUVUaNowuuu;fjVIGYZl T#dz1q^zI|^z%ٳG<1/եK]qz%IeeeСC|:<)rܹSV5{vgǒs[))) [>l8ߛ@w \$"6!,ͤޖeee5߯_?mݺu҃>kСjӦylΝfx+?UUU>urvڵkV{c?|-[Lٝ U߾}{N[nUee޽[w*P={*?L9vqiʔ)뮻\AX ~ XՠA47^@$7H l޽߿ڵkjmtd!CoQZtZhѣGM6JKK)*J}Q]}ծ3ѺR=ܣN8AMK k׮Յ^vک]vKyΘ1cԧOjĉlotT˖-ӝwީ.](##CC Qzz*++V~ԲeKq*..g}TYV:x𠲲te)77W{z~OO:uR}}^{5z:eZնm[*ųj/^{5zc-rc1B}o>߁Ho(ڄ-\P֬YW_i^I'uZn~ߩNyyy>|n6effj?jCwtHN`|eOjҤIzꩧdJϡNԩSEgց;YF?2227[nQ}}1&I?&OiӦ)99Y6mRQQSOn?$}g=Wjz4~xr-6P_~eO=n˪ɓնm[:tH׹#('_䯜cǎUzzx IGYf?ԗ_~X e}~ X7>߁po("u@m}X^tw΀V{.ha ÐaʋzǾ.BuY4ie޴jJСC}6IW_}Uo͛Ŗp@d۷57)Qh͚5$JKwmm8~v_n<;n MPؿ)Jw8{q4̛|ڵQ[ )))ڵvRŞpbiN Цx1ׅdXT__P/_2dΝ;뫯RVt뭷^tㆯz3몫? .\tM "qf$u]zH;C9sDX͊fS~~&L7QI=}9!DD0!6 ;ŢVZ5\|AVU*//W@+//WuuuC@8N)>ĩRaEa(h, W#اOJ{Q7f4zq!!M ^yyR8?0Q]]:eff2ohnr8hNUQQ! D$ A"Dj70a> *%%EIIIQ뒌v#!P-Msc>}baWmmjjjdeX `ÄCo*++UYYz޶CL[˖_k!ӭeh!Id}1v> >!"1${p޷X,r@ICib}wwփXiрB"u"A"5.мG~˂xnBA  H@l&j/[64`>8$"9+'Af)?7-n!gyJOO"}8$F un6>#H$8wh,A"@DAi $F`Ai2qDM0Ar{Q)bɓ\tM,kպukI? 4qD}ٲZ233vn_|^rrrt7FAĉd X3+-Z4y2ϋk܏Xzc,ƒH$W^yE^sYgi͚5:|pHzpoNN.rz/C^a'h۶m<DӨU]]-ikǚYzl5Wbu8X,!=WJJJ̬1JKK~zwqaY_VVJJJ>Dd9mݺu)kǚYzlz֫Y_j}nCdXtM7i޽j۶ O?iӥ^]vi޽:,hϞ=Z`jkkuM7i֭ӧϟz,X ժ.H۷nwmSm4zSSSգGZ*tQ#FPzz˵h"}Pyyy*..y;>/f/ײe˴sΠcǸ ìp:D5G0 J:3N:f .t䟜z]jo6zUQQJASNڻw|k׮Ր!CrSee?<\{ڰao|xOrS|^|ڵk޽{/>znw}cZTTQFS˖-}Wo+**)-[t9(%%E*..VUUUXHA_u[\\8,mױ揯:ٳg??N7oֈ#dZիW/-[LwԣGmڴ)ϩSǎ}~^eXteiݺu/Sw6ؿW_@8nXmm*++[o5X>mچ2eeej6a:)p9r{9l bQRRߺ ,..ִiԻwo~:35{lKJJr*^`L|6P|`iuގK0dkcqٳHcgzl}mo߾ϴ櫎ծ]ԡCuA6nܨ={{zաC,á~A'p eИuI96DPUUZh!Iڵk233գGIG'''^?l^? j,0@{Ow֭U~*Ν;չsgiFԻwo:t(7Rx355U)))5o#93 C~  QZZ &VUU|^|Zp.vڵ5 3>غܱc /K9Rz$}ջg#aٽ{Zj]vիqYp|}m(emoǚs[yf$IWzzkNFcp8vZ7Noϋ;~…+_JzsPWW`s,:>ug~8f m,0KY~SdNJ:?rrrf͚AJ%%ջ66~n?r/enxlI m(P֭?F(Qճgϰ\p" Qү_?ubw#~"M@A"H0 4L#H0 4L#H0 4L#H0 4L#H0 4L#H0-)@l0 #Eqj{hAH`CC6MiiiJMMfh0 vԨNv]E%EC$alPjjjbjjUrr$F| 0 *;;;Eq(55U*++SMM a"A'0F!VZZs-A"8{"]Ldee)550 9nٲlr8. A"8h4S2 0@ "))Iiii.hҔy| A":]@$''3W"$9g"׊lo0)1&EW^^Jfv@3G{##BDp~#b@9H$Z!ofddhlm D$b!C+I'|( $ڵk`֖-[F 1ֶm[ :TҥKw^IR֭5l0eddJ ,$s9͕fUVNS6m4j(8p@ĉ5uԀ۹kgmVtRر# XQgz'%%EGܹsuuM\pf̘!ժ /P|߯tUWWbO>Qii4fmݺU_~u릕+WjϞ=AonE3gJJJԻwo >\Jt* 0)B%4VURRHmۦ nZڵSyy/Ȝ!0O?]b 8v#àJJJ$IEEEʊ. A"pƦHlm,99Yv]:5yyy:sc\Rwi;*A"J=޽[۷wMرV:={Cjٲ# Ţ֭[Za N)[YY@,HIIQvdX]I1G"㰦+BaHjkk5sL-ZH#GfSYY>r}:UWW*-YD7oVΝu5רAW_}x≚;wkyUUm_lmٲEw}~Ljo799Y7|;kI /r!$!Rb{x5{l=*((n?|#iA?O֋/? Hk!1b+D<={ƌ|P˖-v1}*,,so*@#FC= ƌI&0 =I;Dİ&!9&5f~gi >"aG!Ao"!nŋ]L jB/;f ̑D<󌮾h1PPP'x"B%9ku=aԘќ5YV|ɦ.@<:t`]s5zMv(A"L©wޒ 6D$޽{SOi.h}}]k׿ɢ!$6rhjtS /Ȗ4I:$hM F ڶm+I]wzbQ  aЦM]s5{n:M:U'xng}޽ #!8[oUUQQgyF_}x Xa=]_|EcX@b!H)YfEh"̑xN:)## z̏H0aMaDlݥz#~"@aDX,WJJJDֿ|ėzY,hMŹ.hho$z$X45Y,(++ɷ |'gاOĴz$AX,r8VZZZF' k?UM}[n>EuuvV+a"A$,&Y;jUEEA"Nшq樢BVQ@H v]V-]xQgvF q$H4dmZeVeZ/ 檼վDH >ĩRa3"^8>9Ç4%Dp~aZuuuLy46:9'}{|$$XDNZEm}.mn{]]nj'+ZTHRDNAr002|s$z>󘹮>u \]$?tzֶ8b$" A"KK?07S  vrQ rݲX,GzkK$4 غ7LL~H6f6d@o,(""A#8.c.ig.ۼ\!]:?Iw$ )|; : zQT BG$!A#4 O-$#H0F` A1D{[I>|A-X@Ew]b$$$衇w)~5m~q&'S@oߑk֬ԼCo{%\euZmm6nܨzIܹsw^UUUrvO[zú L4T=#8">ĉ#F(&&&][S$3ްؾ{@GpD$ժŋkСrڸqΟ?/I3fΝ]xQ6mRCCEbbbtR]V8q.=33fzJR M6ҥKr8AZ6M'Neeeiڵ-qh1b***4n8߿_)))*//\ڶm***4~xu]zn;GpiUn:UVV tw痝9s`1]w>uuuڰaOVEEEH >iGwoݭn'=OIVyyDIRzzl6nv-[L4h5w\*,,9eP6MIIIJOOWqqp(!!AeeeJNN… !nښ_k5JKKSLLRSS[ ǏWzzVc%&&phر:vXh~=|YBڹQee[̯8v[i5k̙#{4iz)_&w/'H;A+b4`kc#-ͦFEEvFO=5}t͜9S֭k))JII[mWQQ aÆwѣG1c護jPEGGvv]mϤ/BYƍk1hkg;zҴh"mݺUeeeAIտ&빼6M|TuuuHy 6LɒtC}!_ΝSFF~2Ցu7dŋшտ&9Y[[H5A'zLkS[Iw|ol6Mҿ#hSCC^}Uir\zu}̙3xeggwui6mڤ7L3fիOͣ#ױcTXXӲp5rH}sӳ>/}K˓fwiPՒ''ԭުK^n}K_v0v$i۶mڹs4}tIII*,,G*,,zjCӟt󏉉O~h}ͦo~ڲe߯[ni1z饗Bjہ_R|rX?{ァ{ꩧRzz$mϠAD>cرCe[׿5h= ,믿 /$"mݦ }ھ}$[o [lѱc$I/~ߴx?11Q:zzEPя~+WIv_~ZӦMk1ŋ*++ ;#I;v?裏jΜ9z'eق^ٳguVEEEiŊzCcĈzǕ_|Q[lQee***Bn @oƩMd?~x nܹS.Kz~ӟ;[jѢE9rZho[=O;vhСZ| d\.}_sx<{~6ԨF RffnرC+W|bѢEڞ:tMfddh۶m[GFFTXX?:wQ;z;D I?~~JI&?2旘(Iɑjծ]r$I6lseffOMMq$áx9sF.?[nE-m4)S_&MAb|j҇~B͞=[?ӟd&ވ A|G(''{zk ar+`wTbU]]]'I3gΔbѣG%I咤;vEigZfΞ=Ǖryi_תΝ;;2ޅk$"Ę1c۷+++͕m`N^233Ĵhß~$i޼yyb\sTGddd__r__ǏvkҤI*//ɓ'ƠDWccT+SVRSSoQQQQ/鯱X֭WU+z74l0%$$̙3/˒ &(::Z._t\R;w?w}WZd$ut-ވ#$vu{%I-$?8#G*..NVj1ڵk;w}w;$^z%)77W}-['Ov]wqN 2D۷oג%KsϵGvnF0֞>@O<\./… ڶm[<*--=ܣ1cZpVX!өG*((P;z%`p4ր}ە+}ωSN]YYiuڻw,Iܒ\Ϟ+=o7az:P{l8"A1c $#H0F` A1c $#H0F`,*wx<.V+CA"y^y^l69vl6-x<n544In[E%ܥ!f)..Nv=^jj*::ZР:n~`xd5`p .ݮj544&"k=x<9Bppe"HDߑpvD"HDE]mlz.= ^<bcc] bccx !p8]O$!HD]@wZB|[78)2$"f w c#$9/| ]F9$#H0F` A1@?4Y,p~ OjӦMz7/jĈ. Aɓ[}o@{,XӀ$Icǎգ>ʑ tڕ9s(;; 2 ,ЪUdZTjjjBC@HΟ?9snІsUWWa A!9u.\3g9]llrrr4uT\KȄ d5zhM2E/ɓr|tkĉJLL캆ЏիWV~~$vg?\%p#??__t!\f=ܣb555iɚ6m֭['-9H̜9S.\PmmOs)11QZ={l٢ǏKj>}j…:ql6f͚7ٳ=~z<x'n:-_\x$]xQgֺuz~yyyzG!b͚5Z|V\)ǣUVi˖-. 6%I7pC{^Y, 4H RUUn> קO$y<3g?3p@%%%)::ZǏ.m}! zھ},Y?(ɓ5qDZmίqCRzoG@A@8$`DGќ9s#IRrrf͚^N-Rt wj^'zj5+W֏cm۶-e&t_ >\#G􏋏$6ӷWQQM֩|{ߓfS~~>!a tHccuѣb9N-[LΝӰaeرCwy-[~t|Kկ~+͙3ekio%`|[W<>Æ [xozzG :˪f\}}uey<9rDMMMjhhо}t)UUUOuOkQsG2 /^(IӡCt:K.ȑ#r\j}oƪZY,Y,C.\xFR$$UW?ݵ*HX[ƪkÃau9qԩ}wG?b=c?>N%%%ZZ# DݻwJInIgϕמG` +`Xn-(8qj@4cƌp9Q@!H0F` A1c $#H0F` A1c $#H0F`,*g#1xp"@IIIK@&$#H0F` A1c $#H0F` A1c $b3 ~*77W6mқo_|Q#FwIG]zL }kzaG$ЮL3Fv#::[;w\M0?JMM SUo8"iΝ=^xA=LsN͙3^uuH?Y@0avF)S(##CR^YYY}iΜ9QF^,p8TUUtC_ A!x Bڸɓ'kĉ*--Uuuu p"H ,5k,=󪭭$*\Xz+Wv?m2яq&E||$/l~je@f)??B֕;4b9N-[LΝӰagΟ? &ru_/V=77Wկ4gBzA:~xr_""A"BO`?!H@( ` A1c $#H0F` A"B,^X7tSqg… TQzHC+V5tbnؖqu3ӶtE[mOLL}yn=}\ !{=M2EXM4Iv seOmm6nܨzI-ܢ۷gՅ msm&LOi[#5om7C_{J~nfIG#ۧ0Wx^8q?n_# }՟>mK`w&ͺz{+}}]T @ٳg~3Fcƌѳ>oSlljjjei{N4j(M:Uׯo1oŢx@%%%JMMUcc?oԐ!CTSS7xCUUUJHHwܡdl6}_KѣO$5JY]]{cZ`5JGǎS~~,~]pAiiix<ڼyΟ?/I3fΝ]xQ6mRCC+66VzWr|G=򔜜[NSuuu}m3KH6mjŋ5tPnmܸߞ`˷N8qiƍ:uT}֖aX}^nyT\\Ty<ӵkɓZo_ok t7ntW 6ݒ%KTXX*۷1h]=.7obbbT]]ݢ`ߣ@馛Zlo߼ys9Ԥ|}ڰa\.$phҥZv5qDu]zg?p@K̙35o< 5sLmݺUuuuڰaO'wҳv3fzJd%%%i*++SVV.=䓊ӢE /N̙3{nqr9555bjZ~˕nv]AArrri&]tIEE;wTyyLyiڵ$:uJ۶m$eff`˸Zx3mG꿚i{Z%زZ]QO5:϶z:|HR;HCZ,?Pt祮0 ܹs9r "˗/tV JIIv3dŋƃ*''GFjWSݮ:tH6lPzz)**Jcƌ$9R TQQ5vXI;#: dIRtttHWcחN3;ʹZV*Xvhk[ ]UOCg{8p@ǏWzzN<)IA8w222ŋ%Iz7%5ڻuV}+_QMMMS:رc;vxUWWsԅ 4x`ku]\tߖb?y͟?_z%I zWٳgrӧyfENSoڑ`ګ1X˂izׂ.՚,T+D[Zz~޲/_,ݮӧOJ }9sƸ暚m޼YK,VQQ>/uzu{z[={Z5sL:uJ.]2+d~kgk+ÁX>=lW='N:uwWl21'tƾ&11Q{%R[+s' x0qW{^jm8 J\\:={6ܥjn *_ mF}FƩM@'pj A1c $#H0F` A1c $#H0F` A1c $#H0F`,* KJ҃@K z z @ U €#Hp5ހ @@x$z*< ؄Y&&g*.KO0=$"z*@KNMPblfYUC=yҀ!1i_/;j㓔0$C+.9Mg,ُqt"B$p\;p?DՅC䘰\gx=e=NCYs4b,x# @I͞!9D;w<-`YU9J͞Slsunpz΀!KNSFRB 4,%XRFqi0$#e$ SGK.;,DŽt,9&,s%}"HA⒚TSzZ1\ yro[CE NDCmG#lwo\l @7$_WpD^$?ZF` @/Q }A^0Rڔ:2vq5_EbxUE.}ȩvWkl ŰշeF4tC cѫ&EY-k wgSlVwY9I[)L};:H7 n{-ՉҦp+J/&cߗ85> $5ntsCO*W#IZ${%]+Tj:MmWnW WJ]aҧY7PmWYwMcHg-ԁ6ԤwUiv<8ՠ튷[Bߎ}J,XP-7ǡ*({t̥}*xx]^ݺ~dn>V})r{Vd܇*Z<)NEn9-֔ꣳ&iٴx=R9 [fmu!cĠ(F[tB*<&[jωzhWk҈>1N7euKVinrAZ6-A5jWaf? 5!)Ѻs;N7*o|Fҩ2W-Yݟ>\/%(X}HmKd*5m=~ĩyc5vH_#a҇nWXsI(y5}]'E}\ #G%Jw'dfJiωn;T'I}]=Ry5'5フJ>>רM1ڮ7 B]Om"|m>|QxE6xӨ#I_=.H)L/XvD7'd ׷G[6ߵ(U?^Ne.+߮TӣԁC4iDMӦ:4ؘ4\;5zO,d*o|+YUz}!єvkWӣ}Cd\hm+j~8Y#2pGji=urWYcXc7=q%0[+N}~}C~ESӣſR:mvC2Xi՟ʻlb;ڻw,Iܒ\Ϟ+=o7az:P{u=8"ni[ӎcք!HDhEŪU ք!HDYcపdCHZ]eRRzd|K5E.}G$eH`Cr}ANz翣'BDFѱ ']V(n_&"P$I7Nm;$ Pw{d'U ImktBOⓒAUpe=|_B\A%}&Y`XӪ+4 fRB9 .+TM* fE&KO,t3H`; > $Is>ZU_ IU~VImc8"x%gU~M#&-P% f5Vtlٳ~ETV7o|ŋFxבxHuC~#;?vlERD?OwO1HEׯ'u\]]?Ljo< mZh (J$1%]ۏ?gNSsqq~ayϟ)ޅH;݁":8hXJ;6օHMoLRjb^ŋ_G{*S&~W"b8LT}ܔB vo㔦 g+0Oe[Sd}+9σ!H) v 6Żu<,GBmWZwMIZ5EK%ۻDWw}vNDjǥ?ixhCMkB*F5qg㺞>66|kl\ޑHQq MqN_&}Ż{S}]K;]w|{w`y" y)O}weҍnM6Eleh;M<"  4ԑh<,SޤnZSD]|&]vEoQ<XX΃E&kК%6Ĝ$NDku!;v%xS2yU- sK֩MwdJy_/]S1u*)HwM_ }_ҍ>]Moʷn5ihjt])Mw5E1}*{S7F߹tO!H|u_@HKBD_m7bo}țt%c]Skm pj$ tXauv$ƍy`3nyjշP:166 pi+LDw&^us`Y6b4[MQw;u!vi[|wڶBǧMTijoU+uluk m 5f,(L FD$n&Ju7%$"J! }&-M 龒7fʱ1Y6 SM]DT,T5 cwcZt8|M NDmBD߾>'$"mEzHmO=>۱;WC\z1cb8kÕut'$"v&cP]i( 'c+5s;>jNok0ߴQS[1%Zc$wmbyEa%m^i $&ұ5^G ߦcQ9ը6yj|] ޽v#m]^=|I_ koCD8rخ?MuAbYd VSjSW6Z &NNl$ā {r5(@9~=o|g_,l ڳյgM7:H<|x+:`ŁrSC@1aH)a756^e5u-ܽ؜\agf^D=wCw:.]TsѥȰ5skaOC`?WV>VT$pΣGf>*bSM?t!=~BR ~u=&!}öݟ>O)U7`hL]=A>{BXZ;6Ctح$ҵ/5 ,.%np 17gGӁ~3f׶$S`x,`og%U†e8kQQW+аҰJoe ņxӲdJ|#a^CRV`J`@S[k{skG""lurXi# 4iX`G% H\҇58*|9yVaD"L]y(N':fVGc#:w-9)i>dM9aM;`)6[!|lj5mݰmp*pmm)9GOT79 )82Qڍ+C5j:%E!hZc>eFu +~CԿ 0.%1K['m}U !|$?[iXiXiX'U 7 o`]>1z(x/#R:wҘJz1%Ytȋ^ tY `g6SbB%WB)`E8 (2`m[iq[JѠd|pb[BԽfcjf=z~tꍁ!g7 ˍc34'VS)l@)фLGƦƞE[VԷF44Ij[%l+F{ ;Oؙ =n(trk+.6X(~c;6f ʡSW^q K;DP1- 3ma`idԷta-]HBE9Ű-/C^@j+%-ʣ ![; +ƔƔ&St'lIFށSAGœ?`_!>5{-;:߈]C);AAIVv.D&E34J})N9~+yE/`SpГ= KuYD0%ߦ$Q@%!C+dWlq R :fk [߾҅ JjH:yVʝ6)BV{mIVT1sb*ʘU[dbVJDC`J͛wV5W]8$2B>Vly#VH֔JyT|{N1ebP1='w+*VBlp7xiͺϺ$@T)ֈiQش7|Ua?}')PiFY ѓM|҄ԝ68Q5MMr)X%ϱ/ O\_'m)U8Tzyro_W8%#iw "EŦ:(*94XH3 #Jf\ӦQmgl:5L}t#9oRΟu<&VbN0À~?:DGۯ?W.?_ QnE[ҲdYR#HNMaS}~)prڨxj65Ouw=YcdӡW┪^K(5 dA-%z%SH&̀dax袻gaOELVv[,-}xY*/Ш0 Tm$+@soA4˞}Oͦ&&SMzδ*PcT@orPxݺbW[ޅl8'Cv+<=r }KA qnd;ZZ Տb#]/ pkEkB[ ğ\%ZBFt*qS_H,p8Iș7n)2D4d8p.l0VmNhte`OG^m:{7uU{ \l fxr8[R H*z4ɜ UMr* luĻRQRꅌ `i0?e}[sS*CI92rY%)u4IMT*є:RGShJ RZ@zN4䂧isE e'є:xSj]Kmܱo$g38nZ0 #H  @@ ”<6"*(6 @+8 #J" mkZ-y?ʪP2X쵾׾Nus9{%TfXb2iQr: [" wr!AP|_bJ0c &>) n٬"SI@a^;=]l5(}P19USuE*ub2Is۟D x7y28IŨŴa Wv/4gksK };~f uHjbɳ]lyGN޻B$)-L'eE+֥ <.:S 8>}hA;Ӊx)%$5ș48ۂ_46aI6P<|Xd8\,lu;"Te2ULҧs*qyS.Yt!뙑ҔB, ! A )L~7 a1u&ߨAKH?0N7OJ¯~Dg1ʈf5' ;{'M)(31W^B!W^zpvy [WYr@1ohb\.KaȜJ2a7UFSkvN8c^ZFzWsBLL%ԇ#tΞ ]}{ȣǁ70C0*weߋ3>圙x gM=wYgF$'I{LH%S?+ӗ',GT:tD.YZ%bێHlNP3W+TlZTPV6¸hP~W3R׻dZ=bb5qAa*=Bb.aK3$!nwFYeL0+S~Te9󳨽L|f5*NHj?X| zg;Hϩ<@ͯ~OLܺHgTbZXg0}0Ub:hFgXћVi0rdf%S xqH.9Ip̀JP* EPGϩnd$8| ҥ?gC[wt643ݺ8`T,e矍zdT؊P"LISzW:#cjgꚦO>%Q$@6LMsϾWC44H'o@=7=] V'g4d9d1 Uh-`)/.I1i$#4␄B=8ۧ?A~}dFEʑtρ#WN旭>zs-#M;g޵TBVg }Kynͻtpf6C"6=&! i?KS#ДLEȸ$r_##b M)ʽi6trEUDUpdBl `o`O!A Qj}N)+,7ҕtrA1Wt B%#} MWu_ڮ\t[TNӐ>>Mk0&¢>^ 5FMu ܠҴw-x$n;B7+,ðXݚ DͯBvh Q)#XbKwxTD::tbuQAVt!PuԱmAV mUvF:uCV;soƭy: Ue7UJoT̥C5;$s7E[.C M+*Mk MvmҾh`|F% ˑV4%1tB)3zI B-M)M=5K0d¥\q{-@הsՠ{˶A5;{ه|u {d+ MIvԱ7L)6,[έ+T0? 46i7V4ro~eA1'MpWW9szFѼFOxXO(AS7C Mkw5)M轢cZP략_~"hʄյwtueǤqTQ L@y!4i

Q&%֓UGr\6O܍$|zwϞ+WN$ AN1)8zivmyD˴'(o{vC((rHρ+]C3PztWD=7Owl;颤䷲休Maᅂ6^+N7Ol={(KBSltphZѺ}g]J_4U*M TijMS#" RM]GScӖ'D;0ry(sJ Ѥ(f/8.6h*5r |C />dyaɳ?]pӞCuJ Yy5 PFܲ"GڼU|hwۢ)6ԡ#E Md${WF2dxr"ACShی(m;`cK=4^r'k|$iH[&0M #7T~BhJX<ԔN?DơeWT5Q <|lXUp:fSiIvhzwMKf;u\i ^Dy;wL@bd)6>??>7CiA L̈%!K0(/Yf$!ld53H㨕,Y۞م ڟMlI t{o 4-#XAM>JS7u}S=HnnăOu6U*#McT*BS}e ;-3}G7O?rXjBr9eM'dD٭DvpB Bɝ!-= :Z*| ya?Дdi7.CM1dmYn|}~,>h/Q>MITdwqqSf&_Xv5f)&<.sޒH{7_4.i(΋^I(#nށť$ iē{ގi ~2-f~вs8J+f;y_kQR>ud<wkBS⼐NK<$db$FB>ZєIͳ/g_7x9BSyWB##'íoy PXҔH]BmǙ@8+F4ՕTW TiP*MJSEMSvqya#&-/ȱy84;y88l4`ہl? )i#qw"BPMZ9ËH-7nӡ3sJW&W*OlL/)4RHKPil9$߃e!sT@S0|TN33f'ęlawN :Q=".1b!,LR׊8qKa:3]|jQτn qg4ݼu;>$Rh 1sgo,[~mJ^G%H/];4%)*>nF -<4Su K({4] MMP R Qp<˶7hzӪ7i4LW:Mpo{Rih M 7UAT*M[7n M[ڡmQ|u`ۛ#uc[& 5]"Bh7m) jՍn:S}"7eb$`#lJ1 -a@V4ž& *-۸EHh:*{]逴 %"4*VQM]z~_7n~ ^E=8{Hto$G+&vh%"jAga*s 6i~7 08QRMPuP SeN-1] P&G4 0Uz. Ș@ 6muTLU؃(Mv)MNkjhԾGD#,ݏbڟ~OsrL~1㧋2|-)Ud/^Ҳ=R;d4j}1H9FA[7{4~=CS9Aӵ-iC.!.潒P즞5>yH]L\g`ABp-ŠrEN5$tDOm#7ҌsH}6u\Ȕܠӧ(JSCCipbhCCgS Biڶ:A&1:a1~򌠞QW%\Y!dyLY >sn9^pU.- vbp4<͓#Wx+~CCGΙ7_AdrjzOnhɝ?:Q>Ŕ ^M:ޭ ɳ"'i CMh5 |t"$؇ǰML!#rc' 'ycpX[TJMژN'zzHV1۾W.P_1kR$'B!Pc& 8fj᜛C[ߊ0R{ huKWg6KWsд|%$Υ MщZs<_SLi 2Xe54(:oESH i1d>%X*!)u"E W/8hJ)'ՌIIrhG?rfǾ`n%M VL Sg-$1ڶ7dMӴFBmٶ阨MK(BiP*JSTp:V?ΤC-کKDRl#$$JtK[7dV`m2h t"wǎgrCSIkŽSӏU^ZAي_M)UN5EӡYHWoCJH/`CSWԉJD! tށ ) d~blN0U^ \v&E Eb2PY4oZ% ]B)JSTP*JSE}B-A~QjK>Gc@6k E5rQ$oeJl3od䥫7.Y<Ȝ3 4e<Ӧk*Ή쀆$BSȮ>^$p-5'P6e }6VqPi/2¸_*Oɀvw{D2n8 rO1 ax^$ܺȫз_p*yM?xK& )u9.V1K ^iFmLW0F(z>fd⪤gT3 ma"Pr&͔NՀHt$Dl",_MIFMcgj4\PHP 'F#R(((` +t{_P(t>U( Χ BBP|P( O SI "TA!1Wr p ^>Oen`sUߨpqJyaY5 ̪)tycyy_Toc>\_BҡM9dɚ:OG>PO/\BG>v9nR& IęC2|DϣrJ"* iœ(#'F9>hX3.X\aDL9,[6;o*C#cT-|57i-_uѓF۱kv" 旭(X\ekp|zuQ~ʞ6Hؙ?/_׵]ٕpٺOe%$L {@y̧ȵ=,];s;&0]D^E]TQIlri "'V,CܩdNlL9MpNMe7"];D7xLJg{m|,=x_# Jp@8iw Sh(4 ),˜pcsTs}0ȳ;[8vQ~Q"+%lUyHO9?Dd $Jg{,mK؎-ZQW,x8#WoEns M}]&z=u fd痉#ɸq1PNjʘ -mݐZ%S$ \O-wn`(b O{-g%ʉS9Ņ4[s+tJV@zJiFCG_!Wit‚gs G Wot`P"DޟBLQTF)S!` rX*04ÞpDt-U ō{"Č]PcsVH., aa3BXi]W*M6QGsN:VX56o5 ƻvyvyIUquS1_K]~kKդ)?+@Ѕ<g8zR,TSSX1[1k1L{WOЏzq $OTlMزyصw}@bJjlFvyƂ̍..H${*Փ'/;gTq/[ν3;;M4^4R&dFEDP7^EAT7ZPH]uVuX}ǩӴ]8|qγs<<͂|JFMj vpz8Q!aRox8ڣŤ7ʟC[ɧDϘzĆ QJB*P|ZuD.4qGD- `CM@Ο%'%!\m˵>$B:&7*# tZLgRD>͉O+ i٧|)SVovBZMcy|d}9|`O`V٩79tF;5%pD0prlpੳj-nF(J|Q>GTv_[^X4[NKh[;psױ-ƺ3WpԵ[^qz򽈵pU o M٬.i| i/9]V++7mߥ{mWnd斧q.ܭtђ6ɾ1S|fpXo\z^EY˧SWQ-]>!*{{ȇE;OaU_s/dfN}W |{/ $t%C|O&RZn9lul5pP:fj Ey\}^7&Gfoι4qȴr=Ҝ4[LkM-'SW:K\R\cn̴*zX!eEQ)E|pӊP<^qǏ{vs>w~n;sB[w>Wh4V(Ҳ Z:nyصKB#lO4 Uv??Cz'1j_oůӡ/_ɯPz4c5/ʟV筅ASA- ŴA0ڜU74auF@9":+hF3s90o2CT;˜0Ub9GQ]9zRy_<E6;yjǃ=td<}]: FQ*D0jmR-F4TV|~^6ecɰoGџx@23J%.WD6cPxe()O O O }JЧ8§fxdF!dCf;ZO }"Eb>퉥$ X71!ѓh:/\]4;2-lHt?"qS"FXO44)@jJ>%)?%eZ2F|V ?$ً8]#o_iJHr) I6Xo|yAR$>+¥>T%=;tx͞`C*Z"3&wksw"՟Luۛkr3rA<$!C 2֦n˞Pw,?~hH!y4|嫩hZ4 bv<tIIa}ɡcyjRuOx\{a˶gr+B~J} 댮q2&;"hp,)΁N`+(G/ tٰq3>%r>nzAU lR1J;#Q/pSфQ| *GYlCFF8&}JF1飳@Twu0T'\§FZ>]A,NXU?38>_ǀ, <~Ӗ_KSaBaJYD#rMS)O䲥?Zg[1Vn.^AT!߆~106_;g<{`|8;e,>Ck9v4ˮ+~7 -;:#Aҧv· is2eƤm 7{%f@fTlD T7g"W`i2j)8ҧ};>9Ol_1{bKUl&M;;2dӚ>[gl`=8l>O_;_?"/k.Fm'>)6ϧG)["IȨ'ݝ'JMS)@?Š̒KF fQ{jF)1v6>w TIEҧ58=P#*ilȉtz%|*T4 C i~_Th>*_>y3U7Җ|*|*S!S!S!Sr CkÑ|*Ӛ|-!M{P^G6SPmsuZOO 0$O$Ӵj9dܜ[pV\]ѝ!OlwG}}O-r.{U/KTka7l`:#5Pc0%rʲ 56nRhAHbbsyH),lϾ g~k7ESCgF_'1A>o\Jڨ[ ?AQIGYQ}=S*g¯ZfD$l\ ^}[T=dkw;DJG c);iVC=Z}e.2Mz^h#8 Z^@ nv6~6ٛ/ߢĥSc Lʜ2{zbhc^Էg8̥iwvuv5܄ӡ*g$31mԴ8Qjz&Gs*>V7s$P8Q =c 2xǯī)OE# 0]Uyt^LBt_-6&ƔkT? άiNt`;ur?%Y0"OEj -{$sR@ܠ<5_VAFXM[f߁e&OM4'GSP2 I/4,,)6Lx'< zcJX#,4<];LyT)fmQ{m?;ۖ07M1uMY7-Mg>?JVJ)RE/HרW ËDjqqyv9ΏoH>S[Eu#—|+" TSOO|*i]OR QQp˝oVRE7DC#^"A)|$.WrKg**j}aSo BƇ]0ɹ =̤2٦(=8-)bc1:% 30Rp[::@eO1vcR=5~,`O/TxHKAJ)\w<|9sĵSb4qwSϥW? E{&b 7!Zz}`;KF'aaO.ɛnZfzfpSAF`әv1Txg.E?:=OE>7 F f_& EpT'CjSL2eO Thpc)[їؽ+z7yɛyC=8Au{Tli?Si?fɿyO}!S!ʧB>X}A!|*t*OOS"z/ӓϒ\g9.C!Yc Ve?}B*}<an.OeWe<󋽳y5 p8s:|4s#"H1( CF,)(%,|^ 6,dWwRfa|䮫yLWޙ~~0Sk뛊J*&Ҕ $WҞ} M'T.=0j RV3%^ITHGS0 YnaiV8g矡ݵ9e)v/olQ,yҶ_lvKp[c4fjԧX^\Tc4`znScOW752^muR8hA"D=Lx"($O5 e+%&ƉTOW8ЬʚWhTyj'fO}|Mޔ ~O/OSl˟$NTXYzpt#Qt##I)`jO/"-.YcreOw&'"C-m8$23TY]`zeD~SUm)Mpquc݃@B%7SS+#~Sݠӆ $@ӂ8~pʿ<"hI;:16Mn] .~ԓr]WxӝB]8 ,MOQW  "ƶAcMPS1)$"F݀DCtpF7XMX&ƍ,.ԅ;O=񤙌E9ܹL虧ws]l<,[;["~OH>:?-h!ӣ6=awV6OQO- /0uJy`xjT*Ӛxcx93;u-ūw[$Su=sJq <ؓRYJ(cA H-hFKTЇ}7n% *:zTyE?O1JcH*܁'NNТk+R޼hx]F/,H)IPDԣDyGCS$IbyKчL*E"ɛ\"U˦_1)f 8|ej{g!WW-@5DEFE>6R 54cwk7~hA}6 cwr?!wCIrs_It>)' 1]̮|u/_;T2S?||#K/<&1TM5t?}m1T<0iDmߣ [X[n5Fc(Fq}I0?Ic; R.Sã-!pxS ċT1x~lƧG`?Qi`ƧNN/#YȶwvK]zM5?TSb]sGŖvں*f̚[X|w!(_q,7nm虒iG̹-=^BtɰQ/7pb/>xToͺMmbt8u ~`:aQ朅H\嘌"ݐ9 *_ ML+<q5c>o'턀(Z8O_먷>^[~-|QO+NqySNd`I/UJϳ*DWKU Ki! ~O7*=z&)cHl* 8s9e8[XP3R5#)-G{ @PsJrS>_d; %A Z&CG r"HwXXq&4U3","mH|9-]BaiЕ$N 쮀KPPGds^-3#UY ƏM^yl jœ켢_=§"/ʘ\?rc?z5}U$d&bsG7mO%I = uy#!^\B ؔ [F.¹ŃQJSp@o^m\B*塨%s>u&ϝ@U?ծ;Kp1(F/7ޣS>'SiZn>>7#0䙊e'>ʧL\tH* ͢9ivngqޗŋ4$עH5JAkӐ rR7>GmE 2K`C0(MrdUFM*|jߣ a `0 `0<> 2~6'p=)d/r>[ dPg!%yh4@ZA_㞃tQ"1@L|_ϯ3F^$? &c?ػq_oފM !߿KD[x%$GoMSS1e_ &fYM^?-" t"CS]sÖug,ZG<؜bl=ܜQ.!|Mƭm>}U(D(8,IreS*ɃND@*"yt+WkP>VB3sV8΀ȔD a$3Ez$#2.S(LNhSad>u:3a&b=AF$#'4VhKWPXqQP˔>K3Ӳgbʧ VcE7M>%0WZcjZv^. WvW!ÿ$sjAJ=`X_GIK`QS%?-| MC讫j65 S`|7Ո`0^iOGfUDؿK~_*4Ϝg_"h;~%7~}9Zf"$LM22==OZv2I&aUss>Qթ=+G%?wx¯b\" Jgpњ7<~G' Hx1O6 '`{Qf-AݕMbJCW%mQZ2Fc ^*9H92!SWH/vDT/;)P+}CMأQSA"(~|dShju;hA͆f8ݙ$X§Ώ[}G `0L]>%`0 o0 Ƨ`zMbO 4] N'd#^Ie# ~N5Rڭ~h`1J4i&-<1 D.<&LBzO8%koO ٲcG<_;R`OI=-N|w2O\+._fIz.)!OH3C|TAFN^DH 3qM,@)6W,$&j`+%U$L 1$/i(#Ott)q`^ |S;+rᐔ)`Z;:"5a-pե9XMKQ u_^tmW]MKTQZI5Ԅ5 уHb bpTDQԅrB\+ߎTPpk.;s|pg=w?+{Veҵ# ʰZ*Ovh/عs1mdwUc=IOF?:HzF$]>O)2J>]V _FYUB )b0a= mJN[?Q<~~ GC>*8Fd)aUzW1ۘ\w. 7o={cp Wlْ!xt}/rSFNy$EBu^}>K`Ja*I$$T SI2L%0$dJa*I$0iIOGRYS)ЍKK~x^}nV9#L;( zTTHRcx4|Jqv tLJ~ESaCuraJJWS)\_1L%05L ݃Pz[[]ߤ|4m`nay*md`׋{#~04(L#mпiaJrJ=zw>2Ebg;8mY"H"0,`|'$]py.@bS 98!1*e+W-fjQA޻ecc{y=x}>,:@O0_LxT_]>Lo,p@2:˶ѧ+ћ]\#c>2ܧ0)+CtlbB eg뛎x:&1rd(v47EVw`oGN\he-;42ț ֕Tk`o:v!`ڡJ]P<ֳ8MbҦyT_)7OVhْ/ߎǍ醵?7}:Sp)}u)Rŵ?f-: ߧ9rlrD2``b2'ӆV,:>S V}[PrS*ķTG2%H 3G%TȮU; 2FE1S$|ga̼"IHNI ؒ+3eZUPlΆdsor)T ۭ&|'}C92fBOZ``Sڠ.N* ltթr Q)qh"@;$Y4ɔl4+s i2)^-J2%"0!%A޲T"Y")t'V)1&uZw`AL ܤN>@$S"q*3:_',dJ/ny&ᙴ9}3OQIDҤxcl~8]l@@mv[(ʇ1Z6UT`1<^ѠATDĿ2!7<}7l& pE e(k*a`^7?ρUӌL9WI`:uH4ۻkNˆ ![?w82ULɂ)[K2M$M.ޅhE{e:}}!8>p ObL`ut!?(d:@ @J Ak*dia62]?[3W]~w&0Mqg1sY\ p:*PGE (Ct@AK<@g(%kfGGl&L)=ˤr,2BYG*7Q%hvB羂#]UwSLM9r\Y\#I3L{LlhTZ)#$sW x [;Be55Eի 9=HŦ ]o7zpDOL9vL{Ed} f+}}UӋ&Ln2meSaZ-^dxܼ{$4fX=fx^jQ<%EN_Vt\|<\Da Nh+lƙ 4)e=,GC?}(WvC/Ôud"@ (á:){n0܇Sp }t3FY;ޫ{AFVc}d`_O|s1߁%0ӇSTKK.9URioBQ#^iJ%NBIQjQ-0OS׬uTtۈƦ$5WcW-zpLGR`2L o`h3l7L{s0I0-eԽ(UppNp0 )ԫ "SHY($x7渉͉'F~)Mڪ:}2zy*ӄg9dħ0]"]^xߪIhAD׬@ׁ)(E֑S<j`JxRe73,].WohJ[ $UiS2/i"?%?c+BVBy,S,b`an#i>s7oEaLkČ ͂QxD42'ȔԔ[WQ !ǗTh<Lz:@PR#}NwWSlbJ&?L9}X)dkfAyʒ0('}}}Z 0+߾|ϳouѫ>2[Sͽ/c7;S; K]z'SYY^WeKe\^8h(4-1QGF>5jb&H7$(j"paZGD2i/|8^<~8sN=t4`?wwf*thF2*S5:LLd*d*$STHBHBHB2B2 '?o {'LM,V]O! 4VNݝmM<|M4QMZPh'" 4Vq(2u42-] <[9aqiy|ugk⫙iU=-CM}$هa%S!ƺ2aω]4WhEm(^ӽ)XOYJB2I,Ki?ɔ.)P>GȔ}dTSwO>70. ӞoiqK3ǭi2%[_t]fk_d*$ӿū7F#`7)֤XU7d; 5Wr9-DiF$35X O-3$!&;cL"ܐ{I}$F]2b|9.spmh'8iS[wkuL L' ѯWXF&i?$ٔ$0qυ;-4?m%-Ye0$_Xaeo1v}pbN VN/+ PK͠9|=xȔ.*wEӳRed;HvfN>W 5sdp,5M<w* Mz a _0+S^iqYmrZT2( 5Vkfcq;LmP ()BN0v˔AYƆNƶ~Fֹq7~w>/Qa bNn3P]ALBsCt !P:uԩKtA[>CAv ^^vgg`>}ygfLC H'SK5i+H[p)_aO8Bi. š&ӕ7.ӹg3$S*J"2{6Ȇ2 .SntLCckumLv㋫M_q7l}eT& &ѱo ms-zZg*$S!$S!JB2B2B2m&Ӡ/"`2I/stv%$Sq2-D9uq{TUW-[栣(B\T!w/ rrԉ)cN4eŠHJQ#Xo7ٝo?|{YZf?1sYs<0U)LU*JaRM)yH3Q-4oYW6'$y^ϰk$7|~ CQ{G}?xi;o7#"e6̉LWo9WzjJa:Vy46n? g啐OHmh`?r;5HT -s6\Ε MJa:b޾wi6k$vY [5<ÿ̓nd]=׈̎p~0vdէDTaR3S'dZ.YzM]r$NQLc ʪi4էSgC K#R~q~'kQE1̂G)1[KꞷXz䧾!(` OصO`UVK_}3@tiFvd+oHa:>0VƌX ԥesk;0-q>g|v)]t/X0aWp櫦$Lc}TɳA!yF,\_)&HszE1s:.4.j5Mǹ;Qrڹם"i9"ܠ+=Lc|Ni!ء/\x擛Q2I.=w7" 鑱 U/^c St)  L.u4ݔz$Yv^"PP/NDS 3r !&q&gc4,&B -.0G?nҎ&(05~# St)?(0Cw $ hDĩ!^xlc{XP^/lڶ$ED($kC9^NL?XbLܹ/[rj+' Lb3_qΓx]dk7¢ *nƺw);B/|ťO;z$C:Nf*V.4SHdHAYEoN1iO&90R&XCE:Ƹ>e.\%aSxDMNY3ޒdfJRbnqMm\P$L(&I5:S憺TLvR+ SJaR)LU SaG=,J0U)LU*J0U)L*J0U)LUSO/_:T. Vva4߲9PaRڂ"O/%_TaR5S;U7ϣ0U)LR#.wGΙERGDݮKSFD q&n$˖kLfnKNSa6:UuþW=IWGXnN)tc^nbO5cqrӬC)p8c|?.$*19o;mk'϶9J/tQ^iO{t2:ebr8d3f5ʚF 1°!/yO-)DɣSK^B(RQLlmkgVK?$[ys=i~ۿޢbH bTL=뛘ee80W<^!H1G; z~Em#^84dɘ 5d ֔w32z6OctW.O59{z[މovMcQ\$.||>vҌ' av=aj#'k1hX%dn(QeGmmٙSBWEJ{Q:AլKCL5~Q,i";v͉ ӄ4di縹o \Ҿu)q]H;GxFOoRlg0QR3?"$)"31ga`Jz>~t JʲM o~)Lә5a)ȏ: ! wەB[&TG`ޚbb$Zf4G@}&Ŗ%Hs5k]^dHT 4L65~S\r^_$VXQ+*u.%"}fI0SixOK[g GMN5G&6· >)vŪę?& xtJ󋥽}˼>/^t "6cVAk?yޞdta#bSI`z23:ŵ1e5=ÔMꄤ4wL: S*3~)sJ ӜbA2JpɣJ($i\QjP u8앆;a=uH֕HrU S2Ss]4NdEeai4uOD_y$˽zIK3_z!+ScEںNZ?=ǟaJ I FS. 05!)'|tW>{q~yQc:rKny]0T `ϙ4)9F`0ɿѳ}r So0e4A6쬇[6#HQNT 2F(y xт)6{.7#3LIkL#cb [7.%2|u?vbz8 ;e)Жe ;/62 TY&z㕗&&^xW11srᒸ$GN ÌI9yǽTԵ{+iclw?$L LYA[PH]N?0˗䧂?ַ Sށ܋ptw>.zy(@Jr~|=mYw|a;JT},W*x9d| [LET tTҭQH)|M8LPrh|Jaz6>S`*qG(]0U)L S.*O*}ߒoU S]ԂORLfU3*vhṈ]JJfoV|rFlb*LU*LU SJaRT SJaR `p(*U0S СX ` ŕY9g^1X2" Sa!A C&܌p ,=$.*/Ϋ2N1֮S3s1e,w)Qbd V43G.-rǵ4qHoAbeY?c )7X`!|T󁁐QUH Ʌ`ze 0 \aMPY`xa?Liy^ZMvgS2-:r=G($ز%3ſ#,\16٢pY`0N \մs~!,y \]xn]2S8<.O |N(4O5 eʩҪ1LT_9*6]*LVmT\ƹw.Љ/ͽ ;3m%5@IjApzd OkSLTV4|QC [hm_MUp@s`tGٟ2 FS&`3/L}.Nx7ȑi%QSH;46)ɓrMe}c|0T-oHN܌߽~M.%e^U:>}ervwp\1)^#?S25qd7; RyB1Zf;^20II($ҕA )A:#nlgm(Ċ um؞:r 0=.IfzȞ*e%cKo0il'ޏ g}L-ʓ73x*ӂE >)aJ+e)Z Lqf Y*(f4^~E`aZ{?U-0z"mYud|/m!3U!.&P@i Tg;>x="Cه)2Aƛ\/26E΅Oh藵9m)fL2trK>S}w6u"PNG11Sal169d}vNoCOHKC"-p)2ſeFjz4X"C2%F6=ʔʔʔPP2%2%2%)!)!&SnC eJ̔ʔPP2%2%2%)gTa@J}5tK(S(jpG#aVRz﯃&^k<$^O?>G\VQ-j1ͭH 7@b@Yx}.(9W/65s g-l4G$zTIrQ.Ng5PQ)a\^-1* o@.2r l}cAQ}mdB+*nb9jC@St/Z(/N2X>*FR+Znȗ^/b9QoE6qc*D~쿂Bop#ej8rdAYO6Uh쪬ٜ[+ӀU~Ffu.%G$ؿHyX68ͪ](hd=DKu42Kꖣ_*DsB ZJUif`HoREQqv*n+srW2@ 0Rl+g_%G *"א)z,G+)bWOe.Y*)SFr:ʖ'lsR F1iMAkWoU$aʴueJ>z•GO/!5;nY;2PM*)2OIHY0M7iQ%N$}yok6h ժsgx ck1L$WYrhQcoduT-b=+[gEv^.71WR11L JО:st'tv~ރ)eJ& % ?|}2}yMR}q{!ddJJqGOp/c+qi锔ilbr>RXI!1(S}2ߵOX@sϾ(9ߟةx=wk<}KJwUž;vk|M&mQqę7.qW׺D˙Bh~eʇ 7/Ӝ"%,rMsEṶ S?`]79t1k╖ W2ݼ42H9BRLLc?LayfP'ւ"1Fg]ѵqG=-_y/ՕJ-/w*Z%2ohdW(SBLdNlZ.M?4RG~ٽ>ĥt#jgwGV x ˃DLK)SB&L=bǧ~2&΀LYLiJsf XI/drn]:L] s0%k ܉s-9-uU sn/]yzUmoh $BUT/YQqa)LLb`i]?~I|ZOұ5TަKWŤR}Ra G̡^ av:a%v]]sX󳑦`J`M → Sp )al WעK+Rjcv:[J?z +oVK1)}13;L["?H|dOշ„Dwb 4si7 S F+TFhV6TQg>#4'Oe1$6$}[sܥn)4nr)EYؽ`~N;2wZHZ_;v޼+%LѾ+` 7ͱ~!YJ{fr&zp0R PI+hi1L Uz&SD.L)lS `O4JRƭڊOLk̖v4iS~.}˹_>uuWW˹p) 4-k4(moV?>g2yp+)%`ND3DCKѴkmSդ2Sg6k_>KVcO5B^:ELqƥh-XU3GrWg*lg5Y֤c|:T 0NVqM3%ќ|Q# ˱i7bvH3 0m.9 xwOHUї\YY.)9]ϿP9J32h0׽7[^uه6Z FZZʕa^);~\sIBgYH7 Sc'lwDwtrpgMj>zuERHF2 Kfp)2yIƪEXyw! `xLC >OI Rf(T3e~=H!O F@:8ܬ0XwGD3CFjM8˃): iokȩO׹.k/ ca]|KK 6/[Y۾l29c&THE1\&%QhHSÔԃ S!-0'kT*մPFIu0:B R#T5}劊0}]2ZNz at"U::D$1:L]?9@\(cSYSQuq>14HH\uv>? >b8 \'Gg5lSY\I_a,j-F.*:L].5w҉r\M*VF%2 _D+/ 7~- #•k+Έ±zQ9iUhmȢI bw [zc] >ޮ藹=){d/f gJs~\¶_R6WEu, Jmfi/L~[m4~E3sjQI|}gJ+nc: 5aYaJ )0/p6.Y ^6 S= 방$73-HM6pz9ʴqm;Iw}e'Ub0PK$G2ZH>濇 e04='/m$1yp5t zAcQB)6c !zWs0<ь9 eadEVVQ vڜoRs0kv^A+d[=Un AR-U%&3S#D4~TTLJ͖m \'Bn4VÈ,E㧵9tcWf艳2%:# DVLͺ_0|Ђ1OHc@FшX Yjp5#y{|rC )t5Бcsv_?S&u`x$E3ٛ[j?~]S.x?shY,JXk6qfh.YQ>ţ)=bYcI~Бի1MQ0MI2w%GwOП׌?V`Q#qhq|#'vI#}K(`[>k=Υ`:$[bsC GP2$i1ʺ2|43=Ufj0OywL)amܢ#[qۅ IfbK(+>Մ<'WT5Nٙ,6I5?d럁i*dd|/W^Z\.r.0u\.W0MLr\.Wr6r.0u\.r.Ձa]&a/.qOx_yG0Ǵ %s[c/tngVkWWf<}$ zvo0ȋ)J|ǫôHo<`_4)_}wCG`Z)GEoVJI|\}]aZ-?P<,]C_Rm!aHU限(|ap8?b!9 Nz!ihݘ-zEUYy S '㐟jN `N--]=au(XzMVVaO,IJfT*+%^M;G5{e&Qi `p5Qfs4nrh3)Vmoh!؜c/Ohi^A1&!7r57) s5E8T@iOsheKN匩JO((iѺi_¢?)5uo_FGaZYkO6_v?:L!;23:eohY"J1庆뚄Uw0wi!4 ILk0 LiUoM#lw59IflY-| EX.Me_lms\K0zDMS9Ҟ8[.>^>Hf"DafKGpN1H4<8 Z_)h} ˖o4m6{OTjL|2:=u F_L~ 1 ӈ8ڲ^k=JTiSg|0y^\sXNSf`h"}POIT6v .{)X--Eff\Y6g0Uˆ?ahExS+Wfn ` bE7H2=g:l8|U( 8S4Z EÃb?DnAhuk>i\ÔnAQpʔa׏>@B:<6^] E 7to(x.VJi -/qh련+Zu*NQ_@~7ADA'8.ے\Ln{''4LO.]rAo?[ɪMr짲iF%f_͐HdzMns$-5yd}R$3ӨzvlOn6{[yXSzfL"%tj#Mg7?R2]gtL躗K*OL3me.L3PP͒"yNf+%%,q$Y Qoʟ&?nyG2Vmd~#Q>^=억64sQ;TK,\ )*XI]eU))fC!+ɤ{>ZӢYuŮVWqؔZ'|=RA[ HI:v&x M@o M@o M`]{&&;Sx&m"l4O[Un}Vv.L85$] H’$DMM Jga\$b}]t/mho Qի7>>o5 qV!J"ͮ-j=7"՛t &tMSzT%{^^wnD7Hg݇O?~~zg~Ϸrʉ3s ׮,i,-ݺ@%U^MlЛJ"7>?읋WNsΚ3 ca5]DbJ*)T.EW-bȠJEB*I.H̸ r&h7]g/2zַy{?={VM=CӅru62r )1 Hcfn! Qi[/[\xO6qS'3[`V n_l&t̰T^#'~lp͆ Wn"j??v(ʸS~_CǞÆc'XS`ӯٚͮ¢۽锴%;{aپk7lZ|n[䖻PiXmo B_x4l\*F7@X:Y>;zAܲiM?yc:xOk܈6$$[Eu}s>Φ!QK?aa#,Jꧥ]gQPDw@Q}`zaZ;fXj`4{t #h~᱉6S{P&lb=??숍oz~q圠(6ݥ'ZzTLI]n$6UIk52TG,\)gSDz4Ȉunpg^} _AtQcgБf [(H糩UGct [r$iK~n \b|p]}Pt6}.6u`ɍoBO4:8a?E%b߃yBcC[Mۮmj[lnkQ@m>u~PTlʃ3!r"F>{]{rMa aPDNfS3K[ZP .~NAr-*ۇQ>m;*HFd+,#Mƒ6g㖭Ngl5 5}lTQ7O^x:ih:i=))y3lJ2eM,U?]{`]4*Mn2%qП޾>7`80<D~ŚlT2RHr .(4ap3e]SǏAOn8t-Vyz~号/ܹ]QAaEWB×L]+[h=zwzVYp/ꤛ?m{[v(YA|6URV(CdSTBOdECRl19k +kEtI:6kt pKuS Sp?z[1\Mקf09ws $A}%l~C eϧR싺!m:9KT/0dkt9Xl:n#U@kt 14pDc7@{pi~ͧK,&Dlh[Oq"MFnXbS9Bx*x"ɦs!"MߔW504^PRDb Wd}ꖬ윂RI0ّInuyq46Fk| 'vi+gS*S P Zuģeljf5sA[TaS)nԡ&!ˋQIOK눤v>JYxLf~6 ߦwnHaPuƑ+cK ZSYlHaֶZ.]PO@B !LcTgS|(>Mf :,66M6$u~M7DpXBEHTkfA:PU$;(N<v\gE$d+۩V1QLT)R M [(H')YZURPl"0:~J S$ySf F#▒xI(I[( m'7/T ;EA? ՚>[Tnk"݇ +oGŦ<ɓJ`SJ PYUm)r6NXjMrKG)S7ٞ*/oo[bcyBu+ @ }% /L(۶֌y;F:MyT*ꦜ/M_v 0\/lܖ%\'X fJ>@Oʮu1 r6}7m<~xu(WΕ4QB\hDƯzO/Qt4w}/ &Q+@nC<ϒeNkuQaE-\@4O< ݽv:o>{6Yem)/|n׻lG5N*5B;N,,;p'c}Nv6p 2 >]~o|=֦Nnȶ)v'1X7!S ,6鬏/ƷuԾ.=y)g԰6us$xքdISV tX/[rm&Y-e2oϚGSIM]aϿNk܉B64f4 cd:O m Av=?$5]]c MmNM`* (*uy ˭0)u{T]cVBUNM Wiobլ44O{-L:gKSJ@sQ*Iۨ _P5kT?)֒ʛ~0J,9 6;lRE8?JF6EP+9<yzަdƬ4^t[_z-s)Q*b[,,ڒM]dhSM#nl,ULpv #@"0my*$O/ڔi::r+qsЦsu/NyJ@P.MJm4>/";ן684u"eкZʥp)e1h)XX+^h4116oex o],:MA orQ0mɞ$;s'i~ؔ3l{,Mn) #ͦoz㭱ȉGO36mߋ[ Uҟ| cS^Tk֝\Vtw}cA&70x$>IBj#e{ Kv.Bp{;Vɉ?ؔ4ѸROg!8yUI2XpdĊ$ٺxlb ũ:j,SBH\]_ZΝ]E0tДgtlM!GwP62OZTBZBF鉉 ^<-+-eAEEϋݰ94Tls_~+0" < b#iƯeHɎQ4FDs)?ZT@l1Fۦ4BءmSAۦ2ʐ!—%% KoI?|'#RLoh!R5 :7?yիTV}ZX(,"y`O>p/߾V9 C;wW'09w@zne]{5w3>4SRr֎^g;HYYC: 8958@IIȧS ;e(F(bSѶ(m6N6uqd|YS%~hPZt6&fy_ӗ>~agֺyj^!@SWoLtLJ_F|ĩH=)Pk1i,8ٞeȾc-(2M -ſ+0)ln=Axɖa1Q(C,&.[5v(׭2-SGy@|՘ uť2rToydTl&jd)lSKܻ}QϜ,$rjv_rTXQcGuT>4\\\GZ0#|׮a7yƕoQ鍮.zR ۽[v3ݻ߿RNi{$K0}lO!Egax2ݧ%!&.%_JʧT1%i(.e $xד:őc%K->\D# g/3cPx,itcq Nl-r,O9-)CPړEjTUX8IS0'~իĘv^~Sh“'`Ӻں2.9róOQ`sgv~\ET YR&.-rjE%LI:"k0y/fZ.iІKG"cBRBԕPH^GkOHr}-ʡFf1~$$L wJ@WcSiEC2 Uji7DB2ɂaLfd7Ȯڧ]{XbzU`(TᦏĐ9MO^Y"5#G6UݝMAX*`n*SE5#+,V**;!(`(B`hii>ȼm˖F;Xg^|Mጋld!ft1;S\*ؔRLJ 'MæTM5cSgK[O)MPˠgJʥӋ,YL<8[zHD5!7O뮮۽鉞φW\1o'T&4=3*}fS7;ohЃ/pg=M;zČBѐ$lJ JBoʥdSE&DG%p w 6E"VQ(Ѹxɿn~MY$$c+ޒ[)KYOh΅W&:6ԔxC;Cs ;Qfedհ(fK`@0Vi+!_}؁p#n^sv~Z_c'g}D0+3 GonZ`[woa?6%"6Tή=$)n{EV Bޙ519Y}e|p@߾#U֣-k?_k{ȳS7Vm5ucrɏjP _W"Z)lS""jSk DMHFԆ{H ;{Ať/M/_:9<|'cm#9j(lqNn_(y>dT͗ئlS"b۔mJD6e۔ئDDlS"")۔ئDD6%"bM٦D6eMJK- )&"C !SJ)M&qtshb#[ˬ%:>6ݯҵ*6ƭ;:0ڭ1ӯ5x?nb9\,\\I]RaU[D/kGCcErޔ7E);MalH,2pud?b ݨMâu\al<^W(_ !m/^ 6\S]r̕*5OEb0۔mj6Ea3Xbg7yvD.qL' mJĩv*=J?Z4s3-DdîB0jV )۔mj6y6E:Ki1Ʀܗ]Ƴ TAJI76 ޾Yl~'c ܽ|"2/5d(U̒MMئfn2TaҴg$m*`.o2oqy6ESnʪ M8a8@b[+^ߨ-Dd^cS)R 0 fMWySXDUmN0""bMӲr1]\a0_,P!I Uʷ)J_pƮGqgSzrKaO|Byp%6oYH)XP$5V/g۴o$E5A1JPyn)OE<W|T!WxnN/|I*SZr=|mjFfNbXpDR^>\=vы$dW[K_8)ilRZd\fk@Zve6uvs6%"I@зHOO.8n<_l4Ӊͱ Z#~ǝ͚mb>% Uyx޹4a_x " VPJHɊ3=V4 ?; o)>$JCbz3{1ͷ3.68{jT,Kbkj扽g@Ϧ}#m>>_oYwdpxr.W_eK8:]8NWsu~ieuh/~_RNeSY` 44x3J ;@[LDlJ0[<Ǟ>+#TB=4?e"{B"nwi,d*hUcڠXZW-&"#:.^65Zsٵl /2ᡀ6K7lnss7URRRlZ6 Of:-˦o?|{ҞdS;"z6壷} &VdS?A* YvOXLCѹsw>/QEqFA"!EMdXK$%5DILSc*M2"2I[&ڴ $,Wo%Iyyx:8/*}&wneqX0>lCL͉ɡ`ucQYbCJ/uȶtHpS(/(M1c+V577nMzo/G+k~;R3bMCގ ޑoF?7m8f//q;^xy$a])&v1Yy|yaN}x;;NfS顣$-g.2? 7%+=\wN#0mrp D#U65w?I! 4d7m/?ydcs'+H,Ѷ s&+Y-I#`DSK7 zZ?MOYsSOs+i<ʹ>-*%#AIMED7vuag WPnC$ȼq%rݲGԕk6n>}MM2_7Q "7MED7TDD7MuSMEDD7MEDtSTDW7寈;e, \\MK<zTDtSMEDtST7I/^CVtSYnoOsTcc=<bwfQ_ mbόݹlb돷 D ]9:sOXh*P/{oaAqYًk{qӁ OTWǿBڈ ";UDd"*H,60YY`@ Zmk5Զn.QURQ-KRO{LQM1w}ݗ'{w7']Z+=:::>ߚ]Q x- VO<04D%bCl]7Ҿ٤"!k2mus/JYU3nٚMʗ^NZ\M8>K6%ijO`AU^;(FDI(? :w~#Ј~Ad\H6=շfH1%3[S `?,6>/l[Cl:y/tqq0HM8rqqqq6}.ȱ$PMa*Do}=*JwhO7mj%xM`dGBwG &ȉM߹! V)bVFu/xQ"Wɦ#cp&ɦw> ӛBji8rq6z7̻nznO;9st#;faqtXiʦ@ؓ=̛\T)*ҚRBt1r$>gSǦ*}](#oX0?4[ y#u/ټ:(.UG[tb>,BZl2!%fJ[jDH^YWQݔWfHti,GJʚfn|4-K78$;~"%צ?B6?lk^ =;[7Wv^ƪS\ůXIlJn|v䟈sN6j=sX+dSE?>dtnbL{/fQ[(Gljo>?|/_S2ra [D/p'%@*˫4F0jv+\we5-3 *ݥ}[RY<:xCW/_#*#%L]6()CL/8J+%lʂlsu+ Ͱ#wEnQے q$6OVLTZv1A 7 tKSHrv[-UVS{'w3cړL%rͦ: ذB0y%ͱۙG-#2B9:9@tvNnKLe1z#6%!K# @7ՍbSmDQ/ʗ(cpkBMKe@! XQ*MDpF2p0xbS 1$\nB,kMSscړ$.:cVC2Եx}U;}-=WBBBkVƸa_BSۂQoR\\\Mw6]tr"O06mhދ`6e 7P qkq)b2J'?dEb16Mϑ ?a b®CldbeGPh,4qQsng9GGV"SaEZR(R"*骻 (E>Clox]qvvvv7ܨOmtۘV|k[J?7 4 =;1ԟS3:`h]$U[.OHuTkW̝ la6e8 ͻˊZc _cř<]\yMM6-rS ;3'߽3M|7MM4Lƫ&:TN"vp3M5U{fuDf*V–|k˨Vi 8PM]@7uij9A;;OUk٪ʇ/<@c4V6D<ƍڏ|u(4ptBenhMx7=`^Vm\v[1}, KDӹb8xEהW{ۜ̓?Q9̍0Wzf?z:z4-*iSiG۔hӹ[hN:NPe~kLyH{_`oO$DSC צ9G}SM6Ц@mz]3hSmS'td;21W<,;SDkr{NZ~HȢM0707hSm 8HmItd>eB0/-ǣM6ݳ6uU)mj2SM6ݛ6e@#m )m ЦŕW;檊,r6D b IȾ?Ix!/$ĐAPD)FYAY?W![u*un߾ݧOIE]/??j?&"R~ ly)[֦;psϛ(j ~&mJUC ^ /\ȸd>pg?U<:6keȱ1)O(CQt>lݣA]&ĚȦm+L>[2 >ѹMƘ7LDgZ^rϸ DĥP/gsK3MңSg̡xNj=":M(qi9 j:ܦ ڹo.il#>ZSY q>f:l۹g;n߽hY62\ Cߺ/k$JKbvEm3rEcW85=ud&1+'qr9/)9oW_C$sV+<;}Io_ҵ~BL2S ՑeUkq ư@]sЯk(1u (}}$ 8u!V]G( 5w*+cqщX@Wve,) mFJ|r&V57Q5E鹊b2asTB*#y1m1t} } x[qЙ$d꯼b3ÌUԢaAiW4G6O%㗕Φ3(s \Ml z( *|oLĞQ=n:lZY,:Vʮ7zvP;r3x$~ 3ÚbBdNH tBk?TjKPRS)Y:VX `M~HMX(mó j`y4α o}r4l<\޻BV[:=`Sй{;{.OYLlj!"<=DKy77q3>L_\(fٟ"=2tMq,6nbia&rϝ¬TDPX ^,9>L1l  yXJR4qg"b@ !%nJD_ͦy&e86 M^MMِ7?+2? \WַkCI\4Kg.1p dUka 쿾 0%B<0/^5+T+ 6%dݛJbS[]ߎ _XaS2llZZٔQ`-3ljM7lzQܺ?xdHe/a$.LJ*,i9̋B]p+(K,XZ-+,ΞzژGf--80L) ( lxHIDm"JRk!ϯwБʬ{<eR%r=ixc5u'#KV;`Qa!Lu)q&onJ("R!%".-%8[]T7/nJ!JE\{7K\""iiS8߼nSX81nZJ75GRAD䯠6nZ<*"TDD7MED7TDD7MuSMEDD7MEDtSTDtS)O7jƖΧcSP& ~%╦u;:ZSw_ި[jƟ.oh8B._o]&8=^O,cї$;7=y~4Lf֓]}D#e" OCڳ1Nj D}CcUgB 8_G_d7wϤV-Kלp)ܑa NŷhCϞnd~<88E@ZJ[B[r,( ""I,szn7Kv]lqYɶeh\tq1nߴXIȓb~>y޷<~/] >gΏiʦZoEg0;w;4+M7JξG\ętIfKi _}$'YH'2{yt4SXnb݃TN(`I]5=DVmh=4}6MzdF\%k#KeSVx7$&?pT5)RT2e^6-i9p[Z^[ckeE(6-nXؖCGRs]u}XgUռ%"'H7PƇ;?E rAjyW s#a!ܹ(JbY| 9;z!`^agtjV'vH;8 V 6sA{LPNo  '5"!bSfe^^JٲsX5;=&KIc:lʷ1NI,榝DJi){lz9>ZOLT2eՑK}Qqv_>q[Ý˼~ u8C˶yM}8Ncv>|kMGs;&O0|t"hji_Z[f:QahoΘ7lx//Zv5أMԌN&2NNZ(6Ws!"Pe> !&ab/"yg0vHC%" Ғ4‡eӎC§<N~=!/ɦ@Z,omj%BP{l1( J65FP@9b^R7>rbK͉Sцi){l†ѳz[?QR3,xi{BQ'C +\_!L іE^ZN%8*$;Wq{\f'!TW᪤̨;o=fB}{]pD̲8F#S'.RWea%KCŁ*Z &fr%P4kV'㞢`t *^MQ݀EniImq@ J6tA.k hAuPL]l MÎB51h 苀;zA1BC!ї]|@+ܻ,Z9[J#H,-~c.ʦ|]YK7h20Ma#3 #SY(N=ע +@Cl` -J4n*5;L)Ɩ6uȦi W>dÈBAt}v]WބQaP:0a#ڦ_ svQkFCn]`\Bz9ԣʳeEJ=!9 :AyMЦY)&w]m;N9?"mu{mw/y~flL %SаL|*&Ldħ_6M7MЦhSMiS)6~3_G]ӵQ' 8%.L=גf/.WYHְ"ٙsj84:E邍U<*fO sYoͶ&\* Y񉇖ɦ&7Eڬ"iŃ 1aSsLCv7>cSE^6#i+7j굽zɑLumcX>Ueu#R/ːUh'noG8H),TT$lzc2D"ўZΏ foHŦP)e,MBftlKN'gBVQI<]VWFlM׻9*Hy3ek`$&~MBTNd`>wyRదv6v&gW?3NE-|XQ1魾UT$)/{2a&DM11p;)l.Ri%lC"gKhS.ttMϾ klqC'Z?/Z95@3k̀P= a{ȕƖm7▔&l Bmåؔ_|fMLoiV)6E"H;9)ND-?;ۗ8֞4V&Lf-S %rjMg{-(ًU|e/(O NK.ާq'_ gu;sNGSaV+r0#革" Yν~T.!޴8_AogW'&EJWM.71(9qӂASB7%bw7 Mo߽|Ҙ Or2r9p6Q:4Ex3C헯߂cSonr5qWO^`  Π(93 CŢKʋ8+nLNIpZZA0uŸ)7%tSB!ݴygRRC!t؛rTB,ub)!MqSكRLXݔB9ttSÕ)!n $Os*MM !Pi?7-妐밭Zczy.D7-BH)PvS&^MMjPLn7/)!ؘ)vSMi6wJunjDg*嶺wӵA7%ۻT}4cB2b.{^R޳=>B3JNў/gG,VJf p.̮~$97ľ uO~u2$ߌs.Y;E&6G7ݶ_s%vv GY4`zWnוnզcgO^؂GK7lNo.x_9:ݴ嬪cG3hj݊ASܴo<_'*/v5ae؂,eJKaX(RҚj-.ۃ&&} <4?pf&7;%7;sDVt|j5MƦumv.Qn=\yVai{W̮u;3k?$O626oo\_,Xz ϩ_|m:=8YpR:9Զn Z%*O;D(z_8),*p p812¦bgx#}Nc7GJޡG˫.lOݑV[Se J'-7/_ {^@pRQEkrr}P[Pv~sޜgCK/^#e;yXyzݑ9R\V% 6Ex.^q~]CUJՃ+%(P)1hQh==l(ZMS/ߔMy1)dOf40,GSF7VHTP)4"'5gnRRZΦlsemVյ(3s^ SVĤ*.6d,$qf?U*-}%ZXZUˎMږC(m+8T!~rjI)YV.~Ӽ) d`JIx! 'FO1buY.ί㕔O3#7}[uE)E)W141 F'oN:xR]{mڹŦ=B-#w.UTblOwP"2]=4 D:BDFD9MMl|hIA4(`%f wQ[vDQp$4 L!&M n4Ör{_}ǻя$o*_Ehܫ!QGNܪo8itB2)ϒ,($T6}O*.6}(H&c7S)ϖդ\شB~,~bt665E08C,ijvSXREox*&)CeKk"wK5e8fzN1T 6|AdUl:242Q@vt?f'W2%3l߈rSǯu=wl/qi|rFHxUTv)ܢr؋AD-LQjh;S*@2D"q؍=&1a`y-5{j"h[X50I߆A>Cʩ-ä<$YmKOQ@/PZ5V(^hi@@WtcD %@6\\CNs0@I~!@\NT0Hmyb:ץkm-NAmהWVww7w4TxX0WuLuuQtVWO=ayPBu5543}f:RmM4Գxv9:fՂ'f XmZmtR.~FU6ZQ=r\ l8p^uSDIգڮX`JҘ TݥrVCjS"צNbka_1O*BשF"Tl"(")^J0I_/ǥ6LcA[>>BƇf7d6y(OS< /Twt fdҗrzJKNtnֲUꆩ7{F0O%2@u 50՚Xf)^MRcNv\j$[M`ZNz*SARIs%LVJ@h=a])c-q]skfם)5OU+*ix1ꫵ4MJi>Š\RgR+_*< ƢU1ʒQyY6FP}LOX_}s't{6QTIݎ<\S!Qm c4LQu{ThSTK{fgW?iSl_PejvhS T?:9}N]?>|ᮏ?_s?{ǺJ}5Ne8 Fim[ r+b-7 ն`[P( m6m:77%.$L(3#웝䬖fy<< < qwۥ16y G%jK2æ' eʼb8kWT 5mP0.+ 9[r?]-,ss5%TXAI4 C ^S#Ə2dاWCt h0wQJ#"N )l1G v)Wg'FVémj"ľ:# Dq bX{+:Vy|aʦSCM*EnJWO^9~y[k7*k,{fctB0L`zX8*8M/_Pʼ:$ɦ?:o4EBIֹ>: iv=TiER%y{>æNgG0xU$rH66D;FI0M79&nTz!K;,Lm4aR#NE<@xhY; WiVc2lӖVMy{/'p*RM\2;r TX\џC ^8 b@$Ĺ7cV- B6_;):(c릘Đ'gzjMjB}bPbӉgZvQ3:"ioM#aS$BչtST<|_<"5Y}6s#c`I躞j8!.-OP:/$FW~p_$@Yo96 l:0: r% E )gd!g"6EMuMzzNt^κfPw67~K" E2NId]Y XH,"WiH9c?h[UVe\l*88l@\_LN)J PO%#3L="o?:,aD(&pp㿚 !uS:h<7,:\^7W#@A_Y<+ 26+((Jt<Bk"MP;j-RFfӖN')JPN OQtNۀ1(R*t0gxhZ)V_܇0MF`SP,`RGA"r TCpX?;8s˩| u-NgME|VәOinW.P_6 D?Q+`ԢFhsA?ھpp7={=~_w/*[d=9zoz)yq |"N&MK t zzḬuӈ[+q8m+ĭycc4kHFnJwu)8K%#t)h~h{_{Mr佡'dQ[yI~I1Dl(:ku%Mm;kjL $2:<,_$ &Q)mS-9""m'dF%> C [MIpMfX9$bKo#7.*Z6Z,I |*DL*}\kxy2j\p87eJT9DX0=lZq?*ߴwxҤWAh53 ãucrF%iDyk"kyhfa]n ||=wRvB Y M +|/f6ew#n`|)gcsȫpe 1 e40"6t]vZ=z2QǟEۛkj'ѻ&IZM`F"؉)TVUOLy'6l=I\* M\^.1h,2&n27WS!,kx+XKH1Ϟܰ} !Bl"OJuSB!bMB!T!BB!MB!T!BMB!Bn*B!rS!B!7B!b~47Kw!B~nTb 5wP_/ij^Xig`4/چ?LaϿx7ᳯپGas >TQ}HH$!18q2\P\ɾʺSg3 #~?iOSMǿ)P-@S)VK UHX(BiE͢,*Qcܗ%w * QA]~a̤%[0ir̜{3gfux>cܸ8'O9d )V7-fz';/P02ƙȏIpL;.!QqI+2MӗBnU=*6hw>| tvsFwDci1qo}3[!RJ6\x >NCS;p%΁Bw=elfflG嬮k{0_6YxԹ7aQ|blPƩ/@L_rtc L}-$Sb¬tv w__(3'΃7@Xh'Id`q@ a tlS'ʦ\/{oļ:TN3 E[:kJ$@ƑMREZZ2zn24^taL'vd٬’txΏt5e֊Lg)7MpP5U2V:x9e| |\E%bF++-4YĿ$!|NBC64!j t/YA߂[Et<,XF&'iJ#ghN[81Kehs}ʣm:| C&xxӲ񨨴&UK)f_lW&b|m B%Kx!ʹA;݀,MJhTRbշ۞,|RugSP-3\X^Y5|\Q xy<`1i:Q5s 3q5iQ g'd3nb)6Eރ^-)Mk7PҧQ}Xi~[ĸ캩ioMUO6{^rc޼&MVn[7E9NeLߘkXM67U҅+ɦog vQ T-'\&2MAJ`HMͦ/[qf'u3| ( Vf 7!*ΞUe H 8Vs) Zv1~ΦrkD2;&Ppe֔M&ƒTF Q)QӱM!+?3H[MæM<̳ΦȜBYvW0I}ΐgrKd W!ѓ96h6v[Hl)vgzv= PHspENM;wΦ( Nmf'RE EѕADDą\;W\B,#:p 360=p(܏}s|^6嬰LA>yF 3~.}5<{zw,D xo߽]!݈鸆"m?~UI(zC??N]{,ZvTbw?k/^S )v2ѦXT{DWPP=?0㿳g4ؙp~mQ,k7Bn|m { Ê eC) m@XȚT4M60Ɩ!f;8;>12Pbo:ܘ?RipG0qnNcvzKCaGCT?d޼ei>2y\9yڔsWxtV3=JJAJ^5Fq\Bf"֦dv)io?`@4U:i&Г M"֤M11nW66=0Pl6e2 J;vp63y]F8A'힜gu^@6XFE^ )z5_KjTmZdq!vfY `|O?|) 2R}=Q$X'"l=6TDDDDԦ"""""jS)6ʱ&`TDDDDEDDDDԦ""""6QTDDDDdڔʿt։S~}^,R'6_NU;N۶>+MHDBENIs0;'(:2>ƪigV5F'fQ4Fѐ*偍(U۬4-jmS`mS{شMyDѶ(Z(4&7 uc`DL)spnT@D*A$c+u,26.7dY%M`(WRSRWT t9f?4HJʪZԴٻQ4FmSD=64u"ZlHqw{䔽-VnQڶ;!&uvSҰqpp]j= Y;z'{O̥5혍/?Y@7Dj%fEKs'~Z6>w-lC@^m"W`)yUmVxlٻj [:bVN@&fZ'-VQee..hlPlŁͬ啵Ml$dqy\Znw`mSUjZF2a]2J@) ;W hе6ph6K*(gTTo IdW'va'd7`j>! 4876%78\<%GwxiM;V50Tk2G(EmSH) H85( DA+)G2:^,1R,qlLSHJP= B =SH,j,$Oٹ:͙v a{Ù˦*0C?ӳ].V;ڜ#QuKZF4j6aӼ"6$窬Sօ;*OO"ݝ E_]>3 |{7tfvNٹwl:zl0%lJg^a5 æR kB0Jdh82 rI6$;|QaWo9%erFMSYE MY#(zGvt6bWA`xBæ#onݧj$`;sƺlϳ{[7@ aSc)ٴ?.Gd I%GJUdHao{_ d_!![95Ƨ]UIDV^\.KiEF0NNMK+A8.l_MQGd9kb6cL',GFWRY&ݞlg&T1o̘1;R%aSTJ\z)V$+3'߆đv845:Vv6Φ*NQaNrD^f o#唀 vrdH-Mkk)X⩊Tf)UA(D4NY3ZAf6 @6J՘7MA٧޳̲3 ?^L:SI eOQ:>R)gL$4~$ޗ$I̦$I2J$IfSI$M%I$$I̦$IT$IfSI$l*I$~giwHy%ITlJmH\hӣlp& `W CUM4MݹC54&ޘJg4%:ٯ_Ng{Uk6ΌXy;hG'<׻MuZҴ+fgþpl6]4@)my~̿zιVUq|WqKK@[ E -}Ж7}wXP$ͮkV׈f&&,K6.jQ/4?'rnfΜ9͜|7vM#?~^8|4qY)v=xsԡ(.|NTvɻi| ?Œ=Ǯh<iqgPiզu[gJfdghIixtm]}{g*ZX稽Ŏ9Ť'+bhÍm}aQ 6Z!1%Aa6u`{xjf<=ʭ1'UCٍ.œ];6M-:@>kC\ZGvcv;OW&]{t3mv=!2ϳ,άgxZzcykk_ZV~.k]JwJ*|/[a%K4eVLlv"kq~E{6׷N .צ6#Nˡj[vљQ'G<~Gn>t,Ht|ԵSDqC[[ʜM@`AF鶎1% ڝ{w6%ӡo|[X fj欙tDÔ1~v X6 )?8T^ӌ?$n*t~.YCH99{i=do7){А] QAϸ)K8d%9T $uh&A@MוJ1Xfɞ\3<%Ǽ&$+?[V،([R!r:1iXclt+9Ȫl"J&(3Tv]psdd X.e7-KT9/A,[PD0C%H(PHmy$aY&w6mCKD{I OɏNH޵aJbs{ϱH^?u* vy獤 jIG?6={kxuӯP6t~.y7^. A^%Kզ6%.aor[ǓOhSllYͰ/([ !AJ+&;U#He)ojo6܊4 VAl㭷6lڞWlUmֆ-`4X, ;0>Ut!TnM3Wx{h7Zƀ w^ɴ>C䘮CZ{ 6QsE,$Dy>ߑMþT0J+HtF((n|@|r/]:`R059DxObd9GL:9^Z'DA<*}L1GH%{m oOs]J&njO^'ؤ3m4%%qϗ6OOL{csD4>]n}KG^&)yiTڛgqn l[o0NcO>C}ai"Qŵ٧)F6"e>XD6(SUED^9&(d+> h[L.?)=(v1BxRs8K83 8GNc23r" ^[Pq9:'8e2 11]℗XSC'`s&L_]#47CnU9yyF,{P.u՘%F>q-^qRjm+|(e*0A;;i5C^%eKU$DiDq qyhSѦL^[MIDe>AY^d~Gq~Ip!^f)S~\{'"Tt[ @ }OBa;.EGBq~p[J~E\9{:| <7"T".JBq=#w8-TO}BP( SBP( BBP( NצШ&BP( ōiME!vBP( "DvBP( fBBP( 6ɠ=rIENDB`extension-manager-0.6.3/po/screenshots/_21.png000066400000000000000000002416111477302130300212160ustar00rootroot00000000000000PNG  IHDR/ VتbKGDC>IDATxwxTUL2% zPD]슽ֵb?֮.*"PD:KHH^ggNwι瀈Hfh&e7{]Vqee(栲DV xM\\&""""""TM..sIukCkZH}(WTDl"m(0eHSQ6.r5(.N+z(dVɣl2^rJDe-n%u#@K%""""""Ҵف$s[KncI,!.l`'@ E\;b۱v՚}̙'O J'%[ەdm?9ݯ{'""""""vVkÇ7Z,g҉wE]q-@Gww'F{rDDDDDDD`h4zG={6f dSi6d;K+jGtrgwEDDDDDD1ƠVNb)ߚtдZM%܃Zju_/""""""ҔF8NSA%F',{xpppdi‚:(ʅ)?vɋ[{F &M* ζ󗛛?E_(=x'Ӄ:wل;D~IsSP w}[P SpW.%M+p^ʷR-""""":z{>\2᮲[yu.NmɶKpWpݠ[ QO]U].OvvwnvS4{=@uPN8ȑHSHU.'ƅME;=;O?ԩ5v(Dnn.6AO>ns%S(((hzj-K(l6iiilݺw}zw<|B >uZ\d!Nxر*+yѿ2~8f͚͡C΂lS\v:zɗлw/fϾGcOEDF*ʇŮt)/[miVlHCZpMTg%##???}m"""1b+WlűsN}o9s@zI.?ÆM5R.r^P-D|rv7 ]wɟ'yŭ-dbo{իW+~dٲ dذ23o븹\ĉʑ#GX}6l83g^|7,]Uu[>|l߾W_}|_;7x>v?K8s  ŋZ9ijjrss3f4F˖-cq9Yfѱc$&x ~G 0bpRRzu,nnn̘q5f]r<`ʔ)knf.b'^ٳx+L&'O\;O}0ydOcz]e V}*""5s|H^}^}(NMM*[Dl\}9t0>uO>cX7nODDtCL6ݱmxx|1юggUYF>|iiixc~_qtj_(`Ϟ=N+F#]D1uf3۶ms<9f1lXL}Kyʿܭ^ɓ';?u"##HKK!55q­i9(9Zv1S<<}+ٳ \nڛ6mrwz)q.>츔wϭV+G&1th,r|lF}.Ԏb B sV-7%EIU5d6ٿ-[+'\oAp$7Jn'??)))< t xxx./ג xK-;~_O(l0^H]-$TM̜9Ç1|pƍ?8YKի{\*3 9sfzVVXf:oߞ_}'WK+2^];''2kr.ʪq]Cvv6ǎuOLL\;O6YDD_HHFǎ"""xW;NN>ݠ(foo9+ZWIt  dy%\|DVZPmرX,f֬%???4h Ç'.Æ 7ߢh Cd/_+\V\jw^dddTxttt4SLɓqsxw-*``͚8֬ȑ#̝{;QQ=zWtA>`Æ_زe+FC5GhqVFRQbbbx뭷(,4S8=.syroRRPz|TTDDj_r$s oNDD̬Y4%򇣤[w۷=`3x =qo>?;v$$$z/4(!ٽ{7ÇnE7nȐ!CX?Q#),4x 'O0}|n__{qx䑇8s,7p^{ +WCKm;V#ԩS֭[?ԦsNϡCK oCr<9СCر~9yHST>-,""5յk<Ľh͞;N{.]άYK}9}4fͮbQpax>ݻw/?ϋH#Mn׬\grW5v(L]~4|-}n=r| X`?pP L4www)˹EDD:M &-NmW|{{SR޶mF%Ҽ_\5ed.RvEdd$_MعsEDDjjwl&NB6/xG;,QT${_jr'Ǝ!H3j*VZa4*pjihjfOɴ4Ej? %"""""Ґ-MVE+iBӂIRwkӦ?~ez?H]SriJb}R-]JlHc=L+Vȑ#uH9^@gIUPz?Hq}CBywvSvj gt9_h;-M^qb,"""""ҜniJ&u$^DDDDDnivj|+[5%"""""Tnz[DDDDDD(zcO<Ŋ?{}Q<ǹf\A֡yۭh*?w#酕.H:hL5CjpKXvMFuɋ\6 [ƴ0kdX?'E֭:d7͙OO"${[nYå3ADDDD.iӧ]7TRjGF];*Uۗ݇KC Ac70-LB e*NE9ņC{}{r_͕M/d޵aWW#FUnzCsYtdXJ wWӉUDDDD䏠n ?_ z ]SUއ#Kغ};C tг{J&^&#nFjI3]ܪC(oh׶- hDDDDDuZ0gEf o/XU)((da3v,Fʻ,+%&:OXC~^˴Sx޻kU? vR w욵38cOcf3]g&Mn|&LO,&]Z3_M!|%GxpGw'yO6if}\K ,E}X+CithZ3SQ5yJ+U;%7[US2wf yyrmvxw)n>˩l+vlr)ZCRvEl6K>o3gҷOo.ڶiS'qTGu|&N`ϫ8@Lj]>zq}]gԕzO\5c&^RcoNrYڪ7p=k{|bE}t}>DEҶM@Pmadfdw~܉Oɕc=d0YY$$`M\w5:ud6mʰ_؊10ٵ1tmI&nۂ`;nڀ@zyϝǶdB2,vF#ۍm<۾UBbOmֶnGv[['NDE5x(4yܙvmyo%''u*+*3tO_9}}{U˖=6XrU.""""RWKW]QhMNfcc0X,6X|RRltRb0s4$?__ Dڵѝk?vL;;v~[mS~W^x)8_6+ټe+wͽATα|[[8c%=B&|<Et/^gl?DLկn]e%.l;ğ8.omk[!X AAE]ܯJ^z5RRRX,t/1{ѤZQQcoh4ҷw/.vҨpWyFl.fa0wcFpɇvӍƭgt]Wa1lٶb섵kǨ8a<)\зO+r l\z -idGox.ow3X|s6ed#}ykvxUBَfjctwP6m6]>zm2a*ilX&uƍnF<=54=Mv6[u-)$-6bX )'L&]*]וc7bX ۶`_Su|XPv8Bߒ9cɡti퉯 ZC"}xtnG~ڝEZFsj]Uk[g6;֦a3/rh?xfo~";wKxNNNݻΝ:]`"""""uI%AAnW شe 6'ػYNE]}|||D{i{̙|xI eOKp!f`^f]֭iٲcb}{b zvEBʷц3αmMqxfZrY2,m ߢ9փ}I>mnw&6r쌙]}=\9(ǗggRY&~n Zic%-0x@NѧW/zm&S(*pa(!7^vnNv߆ RD7/""""||vY@>`, {84.""""""" %"""""""@ H=HC"l,|ADDDDeJVF;!!!H5KH=q wjC-Ao"""""OmeL4M[ymy)%%"UN2ƣ\DDDDR-hM-W2.""""ҸpKgZbsOkxx4%$d9hn&(/5E-"""""͜ZE:pjZMW.4/JEh-Uťd\DDDDQ-JJNއ`y?GxXXbSMkx_x4pgeevN[ڊa0!2)$;իu5ROMʒ).Wno"1(vݥ}}|ܹ 8~+]g<}ӭ1+|LC%ĺ6:ē~gxvjol&58cG&Av'bT7~R\?8#GCd=+/)ndM<[DDD[[0=o&,ZH}}}t|}vz(΢G13,f(ڇ7LR!% d(l8x;{s ^^^uB޽+]v N8[DDDg5[c9nL&;wxtرrƿ_|½*6UqւzWNbe[K&~~~stP P-۷JAIj1tA<6h~V^Bx=>xZeX'ĭ[O|b"ڶ .yRkN`b6n̩ӧ ~};of9\^d7r(J_ztV~!x/o|6C[3۸\:}=OuΨpB'q|aa!6//O6gkU?dرk۶CT]VKßNeՊnݽf'/nP|<^^^3ࠠUWp!N>ML`@ݻv{.SDD|Pѣs43papckݩ O~A7_?OHཅyM3UZlYzrf3wݺu?CPP 'OmN|;&v# _k.5o12 f &!f36y/ըܑÆѭk*k|,'+a9rsstپ}kp7w$#3Fhr<+]l\֬]G C f~4&p &U8v6++fd_ڵeȠ4N|=_k]Tn߾$;# |u<-yr-֕u#M 0zp{i[ogȠݼzvY7Pw#:r YlQӔI-nP8@LRǹOWѯo UO?[n. -7\<}w݁?snI'UOcDnGa6[x{VZMAA!#G 㞹}ߜocĮ]KBB"as@b8zl6lf3l6~ݲIIK~}`]l۱DwFLl6n%!!J2hPko`߁:|`_:e˗ӻG:tƏMXvvvOPb׈8t 48HNNڶaDL ^^^pP,^ʱdz'z6@l\w{v99g.߯/v#IIז=wv+.YD^:7˯ΑI,|m/xTn2ٴﻗ|D=yl}K}s֫g";w;fGsRM&wx'hLb|9-:/˺z߬Y p4GYYY쳳9p d=F+/I]l1Y}[qngo6ngb{]"qVW3{浌;u?{BC;p˧:qlںc\4v ӦN)u/h$? crŴEudddзwoKN~uD`ƍdddr)\>u*YYlڲ\\cҧw/FEq~TDz %*3S/DPnA‘#3˧N͍gIJj*#bbaqL:([bX$Uշ$9Yc#"""I$7mf݆ 5޾~\O 8u 'ikWNF޽hղ%wϽ V\ENN._/g"88V]T.@]kgpiÃx?_y|%4Ǟx;ֹbeDvDX5kۆ=~d:d]{pi6t9/@`@YYqqdfegbuRd@}>9SXXKKT$m۴;ZֳGwZÐApBV={1"&[޳{7_>q2=Һ f8ȅ __OѣՊy@t"$8wwwV+Ͱф)4K0ٙ!!x{{ӧW/ꅿt*7z<廘Ϻ:6"""Rϙn8oe `ΝDEv.|}FڇWZ͈#a7 v=&4w_~I^^~ңHl:M%#0cV%<76Fqìh:{zvKg-7u%yiFDF2ދ޳mxYr7a6~h.nظuSeyyyNYUBl66 |Gߔ Y$&utɯ+;h*= ʽ^h6;`4fnW:rloSD/臟/߯i\MN/~lnnnU_^ş^^x{{|,ҙ.xױ |x~ċ5תX5˧?aEsf`b~yy|srrJmw~fH֭a\:erbilS/ħ_,A/9K*z:e-[Ã[ov,7;8p `AyqE(GmJ _b:sİ~E~X&QQe }o 宖_r&^*m.߿Ov!!$s^OKK+ 8.v2= u|fOK+77@t Sl___Rbu7lXJ*vs^ֆd[.ǚdž_ۋ%D=i٢_w9{3239Ѥ$18;ulDDD4j /69l;t'Uٵ{Ga䰘o{ $;vnZ\?rӹ 8oCSՋ^~ekW瓖FHH0qu] sK}]:S/_n5_4˯7///wLD̽f`o>\Xj:bg_~ +zs?/Q9k1}:b;=gW_u%Ͻ4D{re]2 Qݙz,%%N*/''+W:YRqKEHĹVDDDh4ۧ/6nއaر$sfcdee><>k?͑Vtƍp\i&+5`9R?v!4 1 7h}ìlڲѤd>X.;*'5v5c5.}xFmڼCioI]A^pPהdndƟU9T%+?[_-Sh*0qM`Ԉ ߟulhR22:c4 mՊa1Ѵ (EDFmG,""""ReZ0???uU߯_c!""""QsuOIDDDDDD(JEDDDDDDnz[in?.%"""""""@ H=P-""""""Rk}2J /ƕm"""#]EDDkGu)JEDDDDDDnz[DDDDDD(&);'윜CDDɱi85fvdegc2 ~5vx.X,l6L&ɖY/~ES.qlŘݹ/b61fi=%9-crH_Џ!5`DUkZu!+J-[v{e%֮^U59VTq3k|} {nDEvX䧬n+8v,///ڴnMvv6))ӧs5q:|OE&[3p3z>}wwwB`""ۓ_Pth׶-^^^EHE4]\Wc+"d;c0XJ ǎq8>[M2>αc)mӆ˦NqnXtqhcF˳3 LvY'"\1<6.3pk۶[&JWDF'NWֵk$rHKv{l۾CpP\H/`ђ% .`_عk_4h1;uϏ}ϴSqZ0 ibaM$9JaAmڶaСڇ~^šÇ|RF#7pc*+cʟ9O\з/YY|x{{ڪ Xd">!N4`c̺ pQ ݻu]ۻ7\777f GغmgϞà &!jn=1 у.i*M0[LNn.^^t܉:|;<._e}U]'^]]l|lNܩSYcq(j""MhVDϫWg߾zKiZt>36lgΔZgy3F᤟:w@ժClݶOOOZ^lv:Ftl6a2O+ٵ{CC ))^Ν::уw,1CdmvzV+cF$*se֧ظ8~ykϞR8ȑIϖ8rcOVo~|}|hʎ;1.ןŊ+ͥWϞt /OR_ 8D/[rhRw^D*{}sws#ܱ#6;c3ݕb:Y|gףbM:u^={ҹS'5=geU8BD3g뭎ziX,,r܌\6e Fcz___&]t7©Sٱs';v$*2a1CZٻ`|F;iۦu .:Pu}}rKua?u4GОc85>! vԉDN9C=RFLt4bcYqizEXX; ˬo o4gO==<0l۾6JDdddpQ>2F#a.ןf#88^={MW]le֭ѡ}%^f^3<#3?IIzUdʮee.rͯ*"1v-BRjYMYY9SMi.<Sttf4:Wq Q4vCډ_U}y\9}5؋ǵҎjeXF ^{FMY*]8խe4BzI`ƍFvIۇӾ}8ݻu~GJq:Ftf9ֳX,LoQ3lWtFthR\OWqlٶͥuj٢E wu}ZEdq&ΑGIL<VZ'ۇ$iTgȑ?rsV-[:^ي.u>r(уѤdG4hΜ9xj:;00$ 8(xyz9h,JKJJII;p___223ټuc^Պ,ȭ7tRйy4)pssmg?tcDAAA믤>Ua-""O;jCk[t5.VqqW5+ke-8={u.&99ooJ$`a|y*sN+R1i223YFF#`Mrdq>>bIO/wϞ>K~ki}\\7!o[MJj*f3G,/Cf:ĭm6xzV~]3g"n:F#YYٜ8yF:6VD޽"==,BC[1aXw+}¸qѤ$Zn]h3jZlfxLKO?]RPX{j)j64!a0ؾ}'NtnzI.QdggU~/=d0>> f#6.ٻAq DŭezyTtԫ]iaYf,r+sMAQfdrdt?,|3Je֦˗x٧&]?~呖vV~7SW89:۹󤧧( '$pi4}? !Dmkڴ)];wFVc Uw=ZnkkSm}iuŧiSFF7ff UmiJAa!W>5fչu!D}q%.\DAa!ǘ#>VhpGMp 8ڛՊtJϟ>NuTZԍΝcC}AڵmS!D!BQ^}hU*)`*{Sz0R:d|-\uMKHLý.B!B{^.cc9w>&ddfruZ4oN&M:4!B!5pZ`|\#[]%B!JnQ[t!B!1B!B!D-[!B!wܥwU/BI(BP;Nۚq!B!*ҥ\!B!p !B!,`ǺuCB!BQ y-B!BIB!BZ B!BQ m= / uGP>m*F@`kBc:Y,;[UI^ T`p7!D<829G7px37aWljv+8śuB!j߂lvsw^g+j qZ:eV^@}hnˆ_x+GI,^:ѡv6*~Uc[>9Bcu߁YHs^.fruT~G:g'\횞>]m3T>V$//oA{iH(፝YZWkMKn\!+T/&>Pn`DLJ@6`.ߝ.8gP;GmU-dl ts5<7WvNšKEV;BgcT 5׼gUXwFvvYdKwd@*@ >Mτi^?cl=Dz/4O8]ZehG'ܝԜJ*zPS;PJ:Lؿw'lR. !hؖȲrk 7::gO@~<_w F3břn8cd'gT|uۦv&lh_r)+ tƢ\(VUKq$/7(<Ĥ]Y' CiM' .4P[GB]xc뭡gk{""%3}]Y2ڃQ']g `spSRYܯ3(+ jC9{MgC솗ֆ~Fbpwf p3ߍP?{:"BJ0o6-{ ;`kyF:gGVNJ88ݔ _ו9B́z1cW76ʯ}4od{dOڝmVS&?77-B!ZR^fzv0%5FU`4MF -o~wqPjCxklTleO|~6Y`VU%l* p`S9bUѦiWUB~q8tw 8|#ņxkmQqBEF.Zc6s)MOrV r-fvUS^ά9Cf\o7'U13}Ʌ=׳ nƄ,i-3uP_\F в,_דk`B {nv6*gq1Wfl廻*4òdC!ny_*bX'-^Ei {ghcǕ4dVNjT*ײoio۬,FRq-:t%xi+.(Π`g[{3^6PWp+FXgpb[srcܝ vc ;9px&ʆ_UB{A$㊘1-̟٪xg{B#eTuq$F]:[ qꪎm%u %UZ$e] L]}{X̜]od^p klqyEO\JF~>v*ԪҏQL[!RSx$mγñ*4&^ۗ|Yn4kZMW+[zo Pw|fZV*NU]Q]|B!Ľ ,`Hi<1@F8٩y\%o&nqԨqY#Jg 7ϊnI]PW[P-)9bY-?Iofomo9ƶ>v9yj_6PSscfB*0PSH,A>5ŏ-vUжSwO5d^fۻث),PWv!AItKizBMr8hTtoe-hf5ۨk:ut&.E_l% ǯ3-mqW/菱`ԕ]hSC#'5v6廭(K,fxG'bNO: /mi.vo|=>n68jT3bfLWgܝ<D`#٢{QӟsߕQ@tCwg5ȤiBQFΦf@GX?2Fz>8sNvUw^֓҈vpV3{p#2 _~FNmn!/  r$Hz^յB!D}`LAMxZ~#γ lĠvN\JWL߁t~ xObTN&=S_}]'la7ncη.v<\L-ùfX־fmF7U$0os w Sp,_Lʳ\9P/Lm8GF70gSzk ͆|,3ȍ{RbP~ZqdٮJ!Ux[u4!Y:X3KimUV@!B!;@OPH[fIc{}5ļ%۷M*]*]!D&w!a6^ZؐpC8xf]/N0BX\߅BM8hT t`\7g I(7B!B՛>GtB!Bqwς !B! $B!B!D-.G7fB!B!D'oB!BZ B!BQ ,q)23xM6uB!B!*!oB!BZ B!BQ $B!B!jAMEfΛWPnY*>|*eK %Zǝ CRRߟ^x:K! cΜ9fv܉Wm}||oUhB!=wr(;w 6ɹsO4"Fovb¨AVG@?Z6mlvFFY֮NM6KRXX/„ B!.M^^T\~.]µk_qttjq.=$ڴjQ+u ףVʽuXggg:t(ٶm[]%B!wŋ?Pr???ZjeHJJ IIIVMmr'G{F=ԛv`p7{E8|^}v>67?F]ϼwxundT[מP ]d֒jǁ P]h]1?~퍏71\[?^W\z.dj5͛77} e>;v3t̙3___2e yyyV?n!0~x&Ol,""#Gm|`Z/ӣG={6?NNN~zv#F@`kkJFCNLn޼ٴ ppp0 B!jGiZmrJU FU 7@hH J@بrw_cgӣco,ϙ fN%% ۲_q2wTmQ]ҥm?øGTXwr\< fDZag[1㞻tC'kބen%&&n:Lb|֬Y<k׼ )7*N=ܴi4S{EQP,X@ٿhO||<؍)clse;yv?0-kZWuJJ u밵֦}/j5kz"22튊0 ?TԭիFZnȑ#q öm۰gѦ5_%!!E!D7n[nJޝw!##6l@^^={$99_~(:vX[ǙBq ~'|||vPmkc!}f! uW_XĈ=NSI~)(*&\F-+ .]x2KĽ2^u\zʹ̨(\J&克KPT8p`0M҄{߾}| :Cramh4Ǻu8t[l!99___Z̚.А!CHLL~c库C`&==j5~CÇ5kE!1EQطoիVh0 7@_sڴjc8QX`Y >{fU*:mW;Mo4hx-BvQ].\r\ttгc[~ͻuvb`ݻ1cTVeҤI<=z{9}Va'O֖w}Yjiiilذ'O(˗cSI{,B6EQ8pyyyEQ()))׳n5`C#loFГoeѪ/8Pa-~~K%|̙͛3qss_~ j˗/7]>|8fHII)qسgOh4,Y&M  "**R'O{5>N!Z|2YYY|lذ) k(S[@8Ng(R?l4U MuB...*}-BթTST (@ `^KJAFn.پUll*,^CBq=**J-BԂEjz+`_ث.u-((ܸ iӦw]VQQF''' eԩL<5U\\/^uwTBƍh4hтcꫯboo_5l!!!<̛7CBaEF'N@qq1tܙM?s… 6lV^&%m}>^<3Q\8:P 720j>ŋx"_|E]"6mK._~ &Q5p#FK.uB+;qIII{{{.\?ȑ#qrr{tlK.kdi}z72X^ZgGZ6ȄBagg3 :l۶j/^\!!IIIiooouƕ+WHOO lllIHH ((Ȫq1F} 8pEf-v`0͞üfGaѪ/8r:} #Q?'u|>uʒ%Kѣ...tԉرP  <<KxbK4 ӧOG1{l~ b5G1g|}}fʔ)q>KJJxӓ~,j7onlkOOO˗1b[[[T*h4:udQ{G}dё^d AAAulmmqss&))ɬ<S\Jɓ'۳⻓B!>;;;Lu:ŸU}zz:V^[/nfMhQ8YC:3ti;0>بrw_cgӣcoJzRҳ3q^xq3s/wΝ;YjٓcǢdԨQL4$=z4se?^ʕ+# HΜ9Ä 8q"2sLbcc9z(ǎ#>>^x><<;vebbbpvvcBq%&&n:LbZtR֭[9uO<^^^lٲ^O~~>P]Ns 7 6mbӦM`ooπtm>CJJJ8~8ʉAף뱵^uBQ.]r {k׮V}\\~~~Y5zpklmQ mOGNX*5/7rep.xi|-틊u>~GtCH# Ω;K.x{{3o<~w.\@rr2:{ wwwBBB iӦ?qa͚5,XoooZhE*="{=>C:v숟˗/cBqo,_JJϏLMCII Wk׮4oޜ0M{S\\̲eXz5۷ߟO?nZn-[Ҹqc-*L!7:u"11}aggot: zr 7zu#xsf8M<+'ON^A%֑(oNTeb]Xggg֭'88CO3p*OKK/СCܸq ,;..Ș1cP<0^ONN IbʶBQ?=s_?Knj\%ԩS1c{QQPڞzIgٳ'ϟ7}޼y(ڳtB?_FNe TnRxZ-^^֟3^ᾕZM6|r8nZTv:=~CVn><؍)cܻļLٌO+ӟOh?xsu3ذgmۆ=GfȑGϞ=INN_&**;Z\oFd $$$Dnn.PF`0`0BVˬYի1jFFXެ^B(M\ %%M@4Ξ=Khh(&M2`0u#/S]{V]|B璓Cll,}WWW틷7N*}\\'K+S2j7?f3rcqzE/4u7-vN_\ׯ֭СClٲd:ڢIOO'""`Zm@j+6 JŁ`B9///\\\h4]ﶽ=1 DGGӾ}r۷hт'rY(}uBQ[{u)))ѪUZ^&ܗSش H!-#Dszۖ+EDa1g+($Sn{>6j5̶QQ4OFFk׮%99ۇ3o[lILL$??Yjiiilذ4[kƍ(k4ΝKxx8{`0pUӍV'SNȑ#h"B*))b222ؼy3{e̘1xzz2j(f̘All,l۶l6XTE2i$}Y=JJJ = <7n 224ڵklٲ///6mZn3!"o>nܸAAA ŕ?Vb =wO"¿gioє>lĈ=vQS oiV ~+zwaӮy#VU+'YYYl޼.]ɚ5kشiKSO=E޽ ;AAADDD`*w 6f;7o3g͍~~wߥ :t`Ba=888ʕ+SN|GЧOZlɲeHOzQKڛX!C0j(:t@ff&;v0{S>uT 5k3O2J߬Wמ !S 4ggg~'8s ;v4+Wdie*jT7?jJ'UY(Jk[Fu(CB!BQT*)`*{Sz0͏I|-B!B4tp !B!@n!B!:"cB!Bn!B!H-B!BIB!BZ B!BQ $B!B!j$B!B!D-[!B!p !B!@n!B!ۄԩSL2޽{憯/?0W`0uxf(((0[믿^6|GwTgC:?B!!]}BP\r(bccZnK /CK.\k׮w^yV^M.]HKKPM/^ɓ͖1.]T͝hG!kiBwܹGRRRbm^]Zbɓψ# cʔ)DFFaU[xqg9?B!jrQ!D}rE|}} ~'u(}m 8Z B^I$&&*^^^JBB(rYO>2vXeʹsTM9~(R\\?QGGG%00PO֭;({VZҽ{wȑ#LDDRJ*ӦM3mʎW>K׿BѰI(Bڷk.N̅Cn^7sef.m^u)ߴi#GϏ ?NBB5b׮]En8y$vvvə3g0a'N,~ڵ;w^z1h ,^_s2|Ə^gʕw ̙3ѣ;vx^xᅻ>?B!6i}B0ի̙3oO mr%ӾӦM#$$ȑ#fϘ1޽{Ӽysz-ظqkSNNk֬ax{{ӢE -ZDTTi9?B!.i}B0ի1ϟܹsbcc@vv6@鬦ަ}/8t7n %%ܬRݛ;ZomqqqFƌJUAדcnΏBKGiB4L ׯ_@ј5YYYaoocر#yyyٓd^~eLbccF믿@BBIII暶#aQG! SJ9w$&&[ruyF#|嗔ЧOIOO'""`Z)ʞr9z(^m|}}jl۶m!hؤ}Q!DT~aׯ &Lw׏'Ү];>onLJlVZEZZ6lpB uVXp!3iٲ%'11|iܸ1 (Faܹg W^%::ϏBMGiByς)9R0ak_DD奸+cǎUƌ^ڴ[nʘ1c UyM?b(#FP\\\Cʻ'M*fΝJV#G*(FQy7m*Ί1BѰI(BU? V_Y[nBnV+J cǒ… ԩ>>>1[rCCC:u*'OEm!UQ!DmRT@OP(7?&K9@ӦMٿ?3f>o߾CSpމERUYx=!F}K(BT^,XJŤI4iR]BPPPkBqԧ뿴B!Dn!B!ϠލB!B!?n!B!@n!B!H-B!BIB!BZ B!BQ $B!B!j$B!B!D-[!B!p !J|lٲ#B!zpѡCEpQT۷Gf]_5>(-[Ņv1{lrsspB̖ ,YB^puucǎ̚5R}_aׯ_gUV8::SO=EFF|GܾU4QPPpDZTHH=Op1gΜrGɓk~FÛoLrr2s%::R[jI{F!ꚢ(;w 6ɹs^OJN>ͷ~[%KhKQƏK/?vӧYbZgggӶ%%%̞=2u:gͼK8qEq:uDrrwr~}Y>۷o/]qq1۷sevJF=`iYx=-3btrB4l>|7|R|glݺ1cK/T QS -*?=˗~:]ta˗ZUK&Mdj… ߿7kXz5Oĉ888jՊzl۩Sg{n Ti7n &&GGGXxq] h >}:.`I]BܩԖVQϏVZBRR~~~V޽?A\\0[3.::ٳgsDPPׯ7/44%KУG\\\ԩxqL2@.]d*cΜ9͔)S˫^{5^}Uc˖-cWݲexM2,Z>Lߚ*))*ۻwo[ .cǎG˖-YnK.e|h4OnQ|U{رc8;;@xxپv7,Y :tKѰ͝;nݺ1vX2KO+VՕ=zpQƏ_GODD#G4yfӺ .?#h4ڢREЩS'UU1BxN&Mprr"44Ѭ[cǎe…saĉfWv̖j!QX~Ϟ=t;;;Sۇ\M6l>Dݭc:wlǴ^ѠR8yE1nkOOOߺobjh%|'}z2{F!JUnFѪԻٙ{άJrr2DFFr&Lĉ5nΝZxzرct?o-UUz}]^~e:t ;w.gzV\iq|{dԨQL4$=zt+lڴM6= 0+k%ʮg{/7[oiڵ;w^z1h 7n۷o7غuYBӧݲe z|.]^ĉeIPuՕ#FO?q :vz̖jV=I&q *Xv-7nիU]q.99^7|Sz=zҘ,]uֱ~zN:O]\\L.\h6ĿrfI~7G<<W^yo׳f͚J˲4%''xpww'$$ *..fٲe^ϧ~JNN[nj]BaŊ0h B-L,>͘1޽{Ӽysz-ظq#>(/55Ǐ3lذrqlܸ{{{NXuqL{3Xz5]vy愅[oy BGW^%''[/F1m4^uO* "--+V0~xHJJJ3KlU 1ȷv=h42fZjEV;vl/͛74SO=Ua?IbfrJ_{EQ>Ǐp[Vܹsr _}IIIѣ\]ֿGMΧO>gۦsZ;k۶-'88JA=^otٙ={ry%hyEѣ|7fVݻ7qqq8::2l0m4hfK/{Uvw{]5FK8::Ҹqc>sS碌a1=uTM"wJŊ+B<{l>Crssٹs'߶, !!\uf8*Rv8p U7럻=IAA YzpC۷s1z ,jzY\(((ӌ;~uߚsYի),,4}nWɉ7[oV-׻ t*[reo^og0*mì[QVSJbƌU7_Qf0駟m 7&MbÆ (ΊNDDh=Yn֭[R*8j.Uyyw*}CY{{{VZٳ6[7}t.]Z`W^fV_kYfMQi ϟ'""7|3f2z׏uq!lRg8&{hڷooպ … t^noC=Jpp0C !11~NÇ5kqu-.T*BBB;w.vTu\Y=4hvvv\J\,^t~ ok] xxxUF{u1ݪEL<~%BEQطofZSMt0>>>dggj*ذaC]dV?ONʑ#GHMMeѢEsΞ={0 \zb 4ݻb N>Mbb"Zwm@i "$$BTA\`YD!נrJ QB0 h0ƖXb\}X`D)ð?̜S C3gYsvg9{w^B(:l01 R,X:)))xRSSモ",YDn+AT]xaaa8v򐓓?rީ{ZZZ"//1תhŘ:u*1o2JuO#w(^!!!tܕy՟ -p}ܽ{%%%ػw/v$_Bz?-:t0 1Gc*=B׮]QYYI 憐FۮOvv6QXX wKGc[=iF„ 0i$ϟGhh(\JIIIXv-N:RP@p@q7m+Wޞ&A+Gbb"*mmӥKƦOѭ[֖AD "FCG!""  ^Iك֖AAЯ_?t{B9#F#Z[A-VBII ѵkWaʔ)6mZk" rm\z~~~-  ^h7AAAA(pAAAD&AAA Є    pAAAD3@n   hhMAAAM    7AAAA44&   fpWUUsvvƗ_~bA:HADDJJ vڅ}ŋh:̄;::-?bA:HAEyy9;(,,ĥK4Fc A#A044k###ĉMMᮩ `kk kkkL6 (P^^lݺVBtt4]]]̜9Si|憘8w~ yf111pttDǎ닻wJ1cΜ9RW\ 777BxxxڵkSSS=\^Ν_FFFpttĎ;H𵵵-,--1m4so{ر#F);&3A44>(HKKe\SN022N<)]/XSN~:''܃2|lR_8##oCOO/϶3f̐ݻw'RSu+ :::Յ6~m `dd?۱cG?o#22Vye$F[J~YYYJ̧Pf{yϋl']Eᕵ{BGGG*WWW.O=ٲepwwG]]¶CŭX,P(hmj=k,dee!-- ;rssg""" n:/+n>}0ec?~ Gņ  3f p}$&&" @H۷CFF1l0=֭6Qb ((O>EUU +'Oݻw޽{R~oD"8p7h |ndk@ ŋy%h֭`q?GGGy(EY⛮}RRD"***w܁H$իWq֬YZZ^=1|2zi r"[4Lii)bܽ .]rשԔ0KKKVPP-YM0A~://`7n`LKK[?lUU322b/_˙ۻwҴc T؛o)3esa^^^rXdd$w=|6e)c1k.˜ǕjU2ƘF ><<<OY٢E{}azb+Wdv1G1KLLd[EEg| c:sα?L/#y6ںu̷Pf{yȳ ioH޽&7ndb+VH)j;DsUm6m6v1VZZ*kυ[=W6{\Z6;;;uuu;v,:E"?2d&L???l۶ ]vmR| ѣ^^^prr/> >\f\D"׏gll ܺuKiZ|ŋR/,,Į]py<}?Vx2mC B,K#+ކKAGG--- 4ټl]ZZΝ; 8}i6Xt)?___^Z$$$uUU/w#442w\\ .ą `aa[[[νi{ 122Bdd$>#|g°aPWW@8;;V2Ryy(4D~!aaa;w.lk|O>(//ǟÇ,)СҥKC^^߿2)S:0!NI[[ǏǡC=Zf*bn}}}(MֿW^^`ٲeHLL xD2QAbh|T?}|ֆ/[ ̥ɪdL>HM6n܈/^puFvލ |R}9r$jժF˯Oj\[nETT^x:ɓ8y$QPPֆHHUoPd+>* nQoEEE077Ν;vG @(b Xmfmkk PCs-b ID*OOOlݺϟGRRבgϞbw޼Yr%vޭt<{ prrP(TEYx{{FyOSԼAHc}JKKǓ'OJFF.\0j*zzzX~=ʤpբEgϞwߕrkn> `jj*ڡCpƍFj 2X|JZ3UEG(|S Xx1/_.BCQۡGKK ::[f&ܺGDD?X{!==F2uTc޼ypss666HMME~~>***Ƨ"lٲę3g`ll F~B!0}tǘ={61rH^%&&ʢK.(--ņ PXX;wڵk / #$$/_Ɠ'Ob ν)nj ^eh|>QQQHNNFaa!PVVc*ױyf͛X|9`gg Yv-;hkktuQQQ077GPPLwy &MNOSu }v /0|,_\[/۶m͛7ykWFl l/K"[IWQ w%sq#ǨGp%{KL`Xp!f͚333xzzrCyy9oŞ={OZL< 3wꦢQRRo߾Mo>K1cƠO>(..Ƒ#Gx7666X|9aou puuS'9qQ]{75A:4>(pppoӧOCOOb[#!!޽Çsap ahh`ʕ5k n是֦Aedffb͚5y*4^[N6V> QQQصkg@\v PWWO>DfܮpBZTپeRM7꣫e˖!&&[}sqall:\xIII8{,蝹BZ2EEELKK=y򤵥Ç@ `/^P;w icDsNnem^~s)<=[]Q[QC=MUKۚ/m4P6Jaa!͛w+`u9sF*myyyɌÇOaggCCC'OFQQ=U겪N[k 'W'bR= ++F~tÇ7&]]]^?# fOP ?ND{=='Ԅf̘r>BƜZ̝;Wi555tR\z+Vٳgꊂ)rcbbdޟ>}:JJJ~)))UWWcȑFJJ ޽_~СҼ4|ˢۚ& hNO?!99cǎ.]ڲPDӳA{ZtTUU5K:kӃ18tPkѭ-hlܸz* vvv1bߐO8vӧȀ!gϞ9r$l߾ߩS'W*ʜLiqm\r:::\z~hO899!11e2ىhgUBAA`gg,7 Bnݸk777ر#F);CLL ѱcGݻI&I-5ϟݫrssq`5Mr^y 6&&011+Ν;ǹӱj*DGGcϞ=̙3QSSs_c,->q+Kmm--Z=z|B;\nnn k =z4 5OZDDD6mx nI*/.5ٖ90sL[+h"n-+VO?bG}l={Vll,BCCyiGmm-ߩS֗3U jkk就֭[e5>mے E}[S"^}ƏhFll,F e9e˖UUUs999000']]]@ @GGpuuT[[:::033ûヒKYv-z (wiuUetՅ@ k׸Ƶ:vdeeh4՞ m+o1x`ݝ[ʧDVP\wrssN:nnn8yTe``  `ԩR噏V>塨(s?~8~mq[>;Ϙ1C*|mm-w.5Sφ/cmmmRڦ2 Qg7e< |HYٶmyf 8Pamj\t @ h4;??[nŴiӤ?Ĺs0x`@dd$ۇ}!##6ljjjSNqϞ=1RSSaoo;b̘1 ߬Y4g}v= 6 77 DMM ŋ1~xD"_zzzpppq L2SNՅo8r!lZ'NMpm_Ν;XhF pB=zHOOrrr8wG~x?D)--Ń0`cR166ٳܤ!555I&qwwG޽; 66\_^f}t;S="""֭AO>2e̶W:m[6MEz7)))%''#007n`͚5a``2sL.$D"TTTܹHWhzOHH@mm-\|^s[jn݊;v4ijʧ*-!##""[%Ԑh:tǎCnn.\\\ Q6ePKK-[૯Ÿ%%%*沓2cjj >}W^ &LԎ|g>Z5=>ק ӧOQUU%f˖-x w{nܻwOaِܲD"8p@Wu'E/ ۵g.^GG_ )ˉBVl8k&LH:vRSS9?g֭ WUUŌ˗{‚ݻ0]]]07oa,;;7o<ɴX~~~#}LKKs.\v+g?뼼<ݸqC[d 0ay ⮟/^0ƹx`onwø222VPP݋coF) _YYP* { w/22R'aʕ1ƲW_###vܜ8p7223333vUcsac1ֹsgvi. ޽[fzϟ?gsL[[M0K1Ǟe>SSS)KIIaRua[SG*m~Xe}[S"&L`ϗwfiioΝYJJ ceell~7c?f1lܸbVX!W~u߾}1v|}};~8秪`wir,af 1D"333+ Ya?c``Un uKܹT_]ߟO1ƺtN8!Օ%F]{G^=TmذWo ;)ȧHx)3g|"##)SHWgEZ)(spg555G{lѢEܽ>}^zqL|ѣG1GO즬\ħՑ[ra0ʝ;wدcoRm!=v{nl\ﹳsi)ٳg1?˗ fsss!n݂ʽ>r_7z-xyy 'NZz:;vvvC``(J=`llr:QXXx?ÇǏ5vqKnn.b^Ul {05ER/${Cn߾[p!wɓe}70gov 믿dBII z)uC1cK<{ ۶mSx@[)?^_Pp__p}sKR<)>dL0~~~Xf gSYOݶodZī!Fŝooor~  )Պos,]~-]m|ٰ%233 CYY;. |CCC'9`o[/011Ç(&5S6TeCuhiiaРAUS}|Nii) aii[m湾VN@  >>^6s"!!eee8z(,,,UVlUfi:HlddÇ#//2vMEE222u)67ᮏP(DXXWUUXhy>U޽{=F_O>E^^ mmm?~>>.]v-ucK|27r={6RRR0{l(h.p)b޽rJʣ%ڙ,QWWz QW:mOߦWq!99e ~7(**9v @~uɒ%>}:lmmyD_v-  AAA-{Uu#nܸ/^~vȷ-A,+\yf̢btI^k ޸,G[[FFFu$ȧ ggVNaajj P˗/7#G"!!VRO>%e~M'U5I9;;zho\v /^@RRv؁;v ;;'hn VVV ԄC,#=={r}NfŅ p! >\xOOOlݺϟGRR `kk Pآ!A$qٳgB[Ըe&i>eW^,Z|7dž 0w\J͜9Vj_fXH>cmm ܹ7~5v0hgnBll,V^PnPPiJ-OߦW͛HMMŨQŋ|rTUUW322p֣6kaԩ?:C]]RnqNQ[m[⿴ ֆԊj9sFꠧ,uٰpLLKK$O#ߺ#p'O~oz-oM&ܵFuu5~:u cǎF("((ӧOGZZ?~ٳg#Gsڵ+֬Yufff4hegΜ1,,,pDDDŸwT:tFH 55@.]PZZ 6;wl|yyyx<|VP(\|O<+5) L?zQ`x{{cGff&w^B(:l01 R,X:)))xRSSモ",YDn˖-ɓ'v,ŋ ñcǐ|HOO{PM}SY]VEX,ԩSyMjYmöjy7DYۮMSimcuu5jjjW]]ݨ`ԨQ Ð!C  [wvZ|wMO>-?3f BCC2:tH Ti u?xIIIBΝ//_Fqq1f̘_^^^*>4Ş!_=QQQHNNFaa!PVV=7*-e'y՝ׯc͛7|rXYY5E,O"`nnhGC0i$DFF÷lon|&_OhÇsN5Dv! .p$$''cȐ!xw~KW6shbNۈ 6k,֭[7fmm&MĞ>}*gɒ%cǎaܹ}fmm cWfo366f={d7n{֯_/3|z211a/^T3c,66YYY;@6vX)mGevvvl2iW0XEE6mbݺuc/fM Q#Gk1}ߥK6o<2Ɣ Y$$$aÆ1sss֩S'6tP}v&c҇ɓ'ܼѡy/^`}suue&&&lѢEJʟ4E=4ӳQج,6k,VVVG e̞r*˜O󙉉 w L_SvðEcy?ɡiFVI?;b^jhhT|Jbc300`fffLJcMnTn| I,,,ظqǏ%a)#ttt@ `#GÇYΝۼy3֭>woʕޞUTTȴ]K\Z#h0;#c RT=koi=z]I߬&h :xD !!!]֮|4ړVM0j(L0&Myʕ+}kJ}UD \_%*"hsK3yyyƿ֖2Y{kpd vAbb".&4=eҥs `cc '֭[kh4 Ong-[OOO~8&LФxPYY)u_~%w͛7u_b1f͚KKK?Ԋ! 55ڰ-S]] @;w4rd>ԩG YY]m݋{666011A^0w\&N333<|Qب(L8QX,FLL SSS ,, ϟ?7qD1\@3gH~^^^2x!>S=zɓQTTLYGU iJ?*ȫ#]timyAiOl{*~ ۷o8p@ih46 k.x{{èZDGGصkw}8?ԩS̄U=M)Hig&Lk׮!22ǝ;wpYs~kkk1w\y#PYY?o&nܸYt֍󟙙Ç׷Q\1112Ә>}z#7\uu5F~!%%(((@jj*:t0_hW7ϟ+WJaڴi h8۞ʢ{F޽-67ᮩp 6 G⏎n*dggakќ6n܈L\zU^vvv1bߐO8vӧȀ!gϞ9r$l߾ߩS'4pȝLiqm\rvԩU mm@___Ꞟ^+! 4ζ'DCܒ#G }7/o.]p U={@WW3g|h}wYq?Rabcc1zh{~)m6PWW8::cǎݻw߱cFSSS;vLÇW^055ň#4EiO4Ijouu51|^EE#G ppp@DDLJcbbܹs{mm-"""`kk KKKL6 oFe555;w.^u;vhT~Zhz |'2N>DV=e4/ku90sLTWWEqmTVX~ >8{Xxi*+w) `kk kkkL6 jkRDTT\\\P[[ (// n*SO, [MP 777c055;8w>epzVVx3f̐W[[ݻsk:::Յ6~m).]pv~mqy|mmm.<{](z:u*(}pssϹ-[ 7nvSVn۶m7oތ*=Q[[۬m Nw???{gdԨOxx8/^C$acܸqHIIA]]/99Ra{̛71D"^ ľ}o>ddd@__Æ cXX>C;w{kЩS'xzzJp).ٳgQSS$^jj*ѱcG3AAA>ЖGņ  ry^p!=dCKK 999Ӄ<7n`ʔ):u*x#G )) RK /b6UEU4abܿ~ݻSZZ`2y0ƤollٳgK-.((IeCjjjPQQ!LR޽{wAlll- X~L{Κ5 YYYHKK\|g E#"" n:/)SS>˂Olٲ_}O 8())n sttT/l˖-x w{nܻwV_,((H$.##""{*..F@@STUU$l߾G2іǮ|7n5k?b%%%A$p9E2HHH@mm-\|^s[jn݊;v4i4!|Cn >Muۼ)qi\z...M>?>3gΔʴ6]e}:m@&Un2?cx"4FpWTTСC܄ϟ?zڼ{˗O<+W0j(a7wٳ'oߎϟ#99cʔ)ӧd5m4vvv!w^q(K7pM/8-\>&e'NᅬGǎ 777yyQMY2411EEEI(w}5kȜK$[[[L_9s&.\7..SNEǎewD'kΟ?0]=zĉt$slڴ ˗/5^{5X2uAv===|ÇclڴIn\|i>4vńbРA֭kXYYaݼJx~5B^4G([n!!!055>{$j]9| >38995>ꖁ ,--C_|7_~֭&NMGCh>Muۼ%[opvvH>v }}}6]5*Ӕ6Z+W777{0x`ԩSrU65NNN@ @~PQQP޽{+\VbԨQ8t %%055U677"H͡1<<gתiakr~J4 +^5t(,,TԄ{(//9HLL,Fqq%MJJKUUUō򢯯ߤ8jڒeC]]1zhx)0dhkk8th2$ Y$A,C,+ S^^`ٲeHLL ﴪyIܪDݼO;GCz)g .D~~>K%,,,ǖpehkk_o6{l`P8T]]]ԩSZ)=%]t yyyϥ5SO9uSm;hkkHc$^FZRQUEn8 2]aajj Pە=g|7(**9v;2֮]BpssCPPp˄U]Wƍ '5[÷O&*m D`` <==xɒ%>}:lmmykմ]!(͖;mj(Vn2BzzzrMf&%%%8r;&'77Ϟ=ޮcccDM0͛HMM\@j!Q˗.⓶Μ9оp:ÇCWW 鉭[HJJBAAJy^N Gzz:={X899A(8Y64lR55/`ѢEoT~; 6`ܹ(--r9s&VZb+s 5sN,X@%=]z@P(Dss-b r 뗦i4џ/i䲒*٢EgϞwߕrS_,((br? ===_eeeJCc>Xx1/_νRDBSƦ^{ SNW(ꐞbˣnyu%UfSۼ@ 3[ . ,,L%k`nd}ZP >.eO;@S aaa///vvvNϓ0x`l޼믿 nccT/%)F0 2|B!0}tǘ={61rH^qHXv-222,XbcƌiRڶڵ+֬Y fff4hegΜ1,,,TʃD\|O<+dҥ JKKabΝr65-UQfO^MeuU=880`㑙|ݻ r6 #Fh,X:)))xRSSモ",YDn˖-ɓ')ueS/^DXX;Hh8S ~Lwލ',dZ ݺuF;;;宓'OƠA,9s`ΝrOŕǸqpqkcƌA>}P\\#Gv cƌ#q)ǏcРAܽ1c ??\~شiۧҹu puu& pttDll,/_GGG$&&0S?-ࠖ(Iz'/ 릲 vKLLD\\ www_K,yk}-=711K燥Kё<^tIAhAkСJ(1ޝEY 00"B")*(*fbn= rH+-2̛5-KfWP+F@"32103Ì~ޯ׼^̳=9rxLC;O>8~8߯Y ƌ3`Olo?](((P[nU|㔾t1tqMW^JmA!22>>>8v~j`iIP￯'JSu\.… tRS/^ƝgBׯ_͛7\kwSP!ۣfP>ƴMcwbݺu޽;pUuɓuvtjzcǎS3>v$MJ).믿08qSJeRj"YYYHOOn򵆣Gb8|06m}4M[Mc BN& dgg? ܼy͚5Caaam'XD@=憚P?^m#GSNSdcuO, mԥ!$;8\R'2,0>( |TGMll, :u 뙈U!I8v< ;Gp8}4 Vߡ<rssf͚aذa0aNZa=vXDDc3x}BDn"""""""7Q7MDDDDDDdp;DDDDDDDf7MDDDDDDdp;DDDDDDDfР:ƍL&3fI/..FaaI"""/@jjj}Q?>Cl۶ ͚5CNN l%%%R?~qqqؼy3vڅk׮47|j/$iGGGc&I,Zv0j>|8u놶mbĈpppFkkH?O> Aakkk|L ٹ ""jP;>'N@vv6>իW#88-B-;DDGG={DϞ=+$""".\WWW999<w[R̛7^^^pwwԩSQPP7{livvvŦMT.[ غu+r9O}T%''W#006m䄽{vލ@QQQ!0k,U=V>s 2{Ç"::_~%rrrСC?/z+&&#FPy^[~|[[[$''_R[p!z R@֯_^zLw!|2|}}͞O]ZZMf̘(--ń [oaհo;;;lݺ'ND=HزeA1EDD`ŊXb|||@g,wȑ#b "33EEELOOOˆvDDDoȑ#3?h׮:t`Ҽ\>S=Vڵ+>s}~zdddڵkXn]c B:tpuu=˖-3ecj@7nW^ 22m۶EJJ ZnZ^P`С@߾}ɓ' V2I9x#"Cr RSSQTTk׮eG ,o3f1ELL -Z___bj+ݻ7 <==燁UVS,ѭ[7?Ƕm۠P(T*λDDd^zGZZ뇘$%%!&&7رc_qrCr,\K.Enn._-lmm'N`Ȑ!zwww/_Fll,Ο?~j?s]9Mθ9;>kL If͚~RT#;;;Raʕ8p ""o2,0>( |T(DDD۳>wX 0mr,OOOADDb1uV=bfχQHMDDD]|Oưa;""'p=f|||PQQQa=x &""""""2v̀n"""""""3` &""""""2v̀n"""""""3` VRRoF=##qqqQӠ:ƍL&L&5Znz %%%CW\\‡?>Ç.00ׯ:__3e[їVII d2\bpښʡD ոq0oqTϔG˖-)S-u*~ii)fϞ6mشiSzOѧO899gϞHLL<^~eL>]v=M諗x-k1Zr\q|]6iӦ6-ZPVw ]v5(Omwv;vA{ݹswޅ󒡲#n@/z8# 44T̜9Sիub׮]iElذA9sFܿ_!Ļ+u&Ξ=+\"F%Zj%JJJķ~+z)U{G5ڵ999BP>LsΉ'O{7СCEVV~0`6mZDo^XB!ĬY /Zwӫ~d%x ѴiSQRR\껮k^5͙3GtU>}Z7xC/_֛XũS͛7ŸqL&fiii"%%E)SƠ+{uҨg^DbbjQ=?SsݐnHWΝW\|/^T˫K.ȑ#ƍ"""B8;;wJOT]hh;wڴݻw&MZiӦmۄPݻ믅pڵB!Ν;'mT $rWM+..իWb4d_ӷ:fgg… "%%ELS'E=j-/[/Z2:!Dnn n߾mBYYYi6m/UCk n޼)"66VtŠ|X|g @"TUVW\\,U|w"77Wr믿 !* K."55U5mΜ9ܹsBdddԊ///OXXXN|BTnf͚lBBprrvM4y5ORRҫyIOOu곮yUWXX( HLLTM+**uҖ1&'' jv ! ΆWv+iJfZB6E+**E[[[_ꫯUQQ!|||Ě5k$'waaǎB%lmmE^^ϋ ѳgO{iAS|nٲE???nC5]o۷oYfkMې2՘;G666T5/((Hc[_T eq-ímD-U:u$:tprw I[Yj:5<&W士]Xohg%%%onҺ̙3'_ؿ?}YOU2/⥗^B~ptwF\\?"""ۣCHHLRSST*1zhduYVV{*eP 6 _~%5k^ ɻJ˖-aooh-WMyUTT rRU>)2&:ԦU=feh]KAS55K] e9roFVVx-,,лwo5:t(v܉ ڵ  j̞=pAtm޽{xw1u_H9iӦ(..Z%cZ0K߹sgd2|2H^Z2꫒ٳѣG ///ַcl IӱT{QU~իo߮ubTTT!bccB6l8ׯCT#F?۷o#==}%sN`ԨQ5j8qӑ7n ??VLRRۑ2$zeL}*2TTTBg9eLNէZ֗eץi*ƴHՐ L,\ܹ޼,--aggg|"c;;va̘1j ''7͛yjb_WQXXsa̘1R&*V^v-TmbŊprr#N<5.)k^ǵLMU6cݺuXlz-U1J;88Ԛ'%O]{Qc!{ܥ|* ]McLY5IIIر#CO?GbΝ0`rj`lܸGA\\233GGGIKYŋ\eee'r$>Mw aX3e7g۞)3f0;w &&~~~pttx񓗗=11~~~? \p :thelll`,ZŒxrr2=/kWe2[nҥKI_j. 5V^|C2k]Fm|Ɲ;w0dyU1233{{Zk}d}j ),++ hժYopr999q=Z:4i|M$&&"++ 3g΄; ӬY3|'޽{cɒ%x999ذa233QXXC刌DTTQQQׯ#))VLĉ9s 00Pm͛#!!Ayk\g]=z4-[^CXXN<[nޓT&SĪYcbk͕fͶW;]ZC@^^֬Yll޼gΜܒ%Kcdggcɒ%W;OT]cII JKK!PVRRP(0tPDDDo߾pvv֘ɓaeeUVIn+Wg}VgUt1|m_w={,֯_K.… XhtQby\%KqƘ4i ex-S2΍R۸ƏŋkِJ=~W>|yRԵcՏq֭[|53h߿8pjMQ9@Ì3pwwǏW Pw...\5m͚5jN\rE]( ѹsgO?W*b}^nZ5_M222طorÇ ")oMu ?\5WUQQ!v*f̘ZbԩMxxx9s"--Mo^Z5D5=]US,X@!r+!777"ƌ#F]k=zNNNbȐ!"==]|4 *S=|@v\+_|pqqwޕ4J!}EGQ8::ZZ[YY B! PniiYk4]e1q={Vrv ^ et՗W'e4m6P'&LP\J:m*#GԎr\d2ѣGyJY_1Yi ~RYQQشise8RN$dCyQ'>듶 L)%%Er[ߡQWXɼso]P!}А?ua#jzH9ѩSsǕ9$'UŀGÓ|}ˮq)B͛M~</^DJJ qMDEEa޼yCa?IDmݺaaacI>> ew ]nݻwWK]ׯ+#̋w"::͚5ða0aL:z(Q'>˗/6lX}BzϽ{c^@K2-Gsv|FZ!D$Q}dg)P @9%Tẁn"""""""3` &""""""2v̀n"""""""3` &""""""2vH|7Lj =n8t BO:LC=Lj~zOb3'|-{II d2\bz kC]AOqa޼y5 'O6{r˗/_|LDFF"))R/7oO?7o<s~8oҥ9ӊ~(Fxر >ݺu{h!DRl߾G͞kرG}]KDDd.Oƍ7зo_pssM~ʤSO=K"$$DmKFSddJ=n*aXj\\\J~~~}(yۍ7Ю];p5ܹsvvv&˧~WYmzLL áP(TJKK1{livvvŦM ҥKѳgO888K.8|///4iSNE۶mUb޼y򂻻;NZZluVrL>]53$}}.Y;wFyy9͛7ƍƦ/o]u wF`` ヨ(u?T*tR!!!zI/׺#FHS}ONN]M6aprr޽{UiiRѲeKbʔ)&mT_4iZZ~!F#ƴ MmޘVDD@@ƌ&駟O>prrBϞ=@ 00jޥKP(o> >rVVVd\.G.]$U]`` ,--aeeggg 27nP[fʕС\]]Ui]1HVz-H;GC\.L&Ù3g$o;]>UM~yy9ZhL}Ԭ3mI_aذaxꩧ`gg@߿_kynj%Kϛ7'NXMQǣk׮L&L&u.3!"^ZZ8;;4ᶷ̙3:@e%`8<&L'"%%Em={`͚5HKKCPPƌRIسgv؁$XXXҥK3f@JJ / -- oVrEFFbxQVVիW楥aյ3$}}FEE V,\:u„ &%omu{]9&M7`ixbl۶ ۶mCrr2lllsϩy;vRTM۱cUJ RHm5EDDo>>}н ݻw#..ɰ\5ik7n\|R.4yc[uʢk{SZZ#>>[ng}6_ʾa|GЫW/ 4OZ6..eee>ʕ+(++ӧ%UݺuP^^SN!##Ce˖aƍشiΞ=Mg طt]%99eee(++՟8XSSeÆ u~ׯN45'@w999a8x N>Ν; b5uWw]5 &M۷Q\\=zZۇt֭Ґk׮!>>ݻw󖡲#n@/z8# 44T,^Xܽ{W8;;ӧO !5k3gBMjM[|W{zz Ο?wBP(Dbbj~QQ ._,򄅅HJJR?zh֬ƴy6MW|/eل$v%4i"233&%=];wNXXX uQ}bagg'N<_PP \]]w}W缪 {{{q1!YYYVIiӦ">>^5?))I( yV.ĪU1}̧HgU5e?*))5GBGGGq}˨ތmG]ЗD OͶk1B5k=m۶ !زe ~~~jb@\zՠciiӧXnB2쬊QM1hoBB! >GՌJӦMU5Baee%N>mԶ_|]' @hB̟?_~ND￯-IJU}5k߿ִ_z%xbs &H[Wm=*lllDiij^PPPsIoJ|Wb޽X< ?=++-4wQF6m>Cė_~si\6;;#Gpmdee|ѽe˖W=*k4TTT $YP*=zjzYYݻgt٫gHR۷/BCC1l0|h֬8)[п!$$SL42t]5AAAx򲵵СCsNa׮]4ho.˪ ~uՇ>G5jv؁޽{cΝ Lݪ^>sG}$'OT)3maa޽{#55U޽{xw_kMk̙xUwG@@|ko!<<\sZGN={6}8z(\]]1&C3ޞY^^6mbEjc5Uk߹sgd2|Ƙ̽}'N޽{>|8A0h )2sLڵ 3gĨQ4v L,\ܹ޴/++CEE***4S5ۉ'tܸqV|/uYooo(JlU[ZZ">>;w FbTTT/bccξ);v,v1Ȫ% d]uƶ˚m}lB~T>V^OllAsCƴ E_Yl")I&:wKayZ;5ʕ+_1 5ZڵkQTTT]B1*RH[|>>>>Gtt4ܹ:NmIjd2#22nR#P8 4Xz55 ~vhrqq1x&}lkh۶Ú5k͛7FBx'O֭[xTr9"##xTTTZ/7odddvŐ-[QQ'"22sA`` Ν56CVSNN6l؀LСCke1i$HLLDVVfΜ www <ؤy) :۷jB)1ׯGFF]uiGJlҤ u1׷ ~uՇ!cƌAxx8^x#uumgk5ۼ1ۭw}e=K%K`ǎƒ%KѣG3XZZJ.۷}vk9r$Ñ|ܹSUz`9fܿ;憦MZTA)ǏŋNmI_={ׯǥKp,ZnnnhժAe6$nmnee% pvv?|+999W^nnnYO-?m1sP}P,)(mqU|jW & ڥk]vժ &Kv<(z!V`z}* aaaҲ֠iʯ+VSԿgϞr\>|X5OӠi>D_AAw}'cuy9hgd5:=HZ!DE7oDfPXXbjRSSlޣAd DXXXۮJJ{j(Xdg)P @9%EHyCt)x{{ŀx1냈x@DDdZpqE!//))):=n݊QFw 냈x@DDdZp둛h4k Æ Ä 0ute>}Æ PU񀈈7|a &""""""2v̀n"""""""32vdSADDDDDDX1c8+FwQF5z]MDDDDDDdu]>Nn2 dPaNr V5<|bg[dFp7@lKW"""""n"""""""3` &""""""2R^XX۶aC{;;jǽn̑vvf`.cܸ}/~r ڼ~NB0rPc`VŠ]W@kMy5d&íT*`bljr8u +L,zOST{,M:mM,=GyADDDD$v:]e+>ܼEE#016JRozPRR}qN7 Rǝp^SЩ?VwramcctCT\Lv6KC{%݇l/pIoBTdOzU> :jF"CG 0*=_n_ӑd*#RVVkkkBP-T*ow~ΆW+p=z ~cͪVY/>b<ӻ7 ~}Aӧ®B3s (J|VUڭ[W^A`@wc/p1G1}<6U+ÒA7`ii{~i,z/›S_ǸcɯåQ#š֘>v697; +KZTT(w8Χ^En}89`3ѣc[{a-u=߳0奿/n~եj:tI/۵ƥLL μ⏝$N]LC0/}k!cpL hmܮ5Φpk1C»z#""""z |?LƉ$@jղ%:ܚһ_X#G_C&?t!Sǔ)o666HI6W-rj{FXYYG@.]}ptt@VTiwPagg Xowgz‰$DcEV-Ç`+Sӕ'GG|7FYYޞ7 ֚m{8n.Nx}_0ѳ/ٵ ZMMG76Ӌ;p]c_@ 9yث+n}70/}5cB"Nɣ#rKħ_@Eş+bh=IZjw<xzz^fly ~:3n&M+i?aw\p?DOGii)vZVVVOXlЩ,--j th};~͟~?rjWpI GKq0gDU~FZU  wki}oE!-=G@iJc_|6pk\k~po-6BP*q53 n{Z锕Hx> =傤(g0o̽2W=ƹKУc[4o/p+'n%CDDDD$Wȹ{jӜqʕ1(ݻvkp2)ǡc߁,0xsP*+Ʋj5򱳳WuJz*mȸV'j˗42xߏĤd<7^lPtqo{vv'`_֚_PX_/#((,F"DV8zn¯MKQīܾ{JP?t%PQD 74k-=B\4vv\2=) 9ke g''#/Dc1Kd2zg`^i̜3gϢo?G,/.)L&S{*4Kaa!@)jaoh֤* LbU.!e%exѥ7L;;-ԖwÞ t1 J!◒>y(,-VVQb$""""z,TTT|炃нn? W]CqI NIME]Lp!%ڴ;...hp NLBBL&Ռ 2ej6='N֫4rvBO>5PG(??ߠ4N$&{֤ 23M_LPVxg߽GPTgE\<Z!J(,.qln^3y3d2ʵ?4Η&n+|w4-#DDDDDRD|9='GG_nB\SϠ߳Ϛ 'pHL͟~EEEH\y7vahղ%zdR&MC6>QrU㰶o67g+;uę0uz8wGZz:&*:`xȋؾc'ޜ1C D֭[>VZ>[c*+^ܚ4љl 4rvƿV´\p0|[kLSSg_-=Ѯ8tlSJJq8Wtio 36ֳ۪е7gxilt Ύ8xN5_J^.N8N崱#s{l)ApE֚@DDDDDO߿Mbk==hӜ;s&b>}m"vtz\jXy y<-%rrڵk(_ooM}zB~~>^Ռ thK]V-[RCJj*Ȅ#:NĀhѼ9-,--חǪ'(y!jΜ;kkkt<<# ү())GӦ+ڶm|u~WƍuU8sf_8:wMR.]‹mhLrbmӢ2=p_.ao {CPQD'4qqV{ONa1 9S]5@ou'?JđS7пG'5v֛ 2~}plGV͑|Ύvxm@{5=:㟃88X9:ѓm_}cFK#G॑#0hZ|6hOVOr9{/oy|Yv(})P@ࣱSL[Ul'^A!K|9rXׇ0"""""}F  h5jt@BPx xIYѤsl4}lӣ-N.nɅW3bǁЋ=?nҨ{$cc^4rt3Чkwd!<XKϧ0w BK.75P|r X#"nl,lؑ$"""""z7MDDDDDDdF?R~eSADDDDDDX1ݽ{wSADDDDDDX#DDDDDDDf7MDDDDDDdp;DDDDDDDfP;ƍìYLVqq1 Z'00ׯP%%%dri鑽ɓ'wDDDDDDD=n""""""^;܁Xt)z tV߽{7aooDEE-[hlݺrӧOGii)fϞ6mشiA񔖖b޼y򂻻;Nr̟?-[+Lb """""N޳g֬Y4a̘1(--ݻw1rHL4 7n@ll,FĂ / W5|||}v?&Lĉy\U0Cex̴4o?S+3+fV7L3-]+Դ*mJМsQ~޽ g`<׎/w-V||l٢^ >|#GjʕZxmۦ@C_[VZ4b:tH߯r-VԮ]24h#G***J7o.W>}FZj)""BcƌѢE$m6eM6M-[TTT&Mtpq R``Զm[uI͚5S׮]CK.e^O>D6lБ#Gtrd˲,u]6MTIRBBZnU wq!SVҒ%K;S~{ץ}ڿFEe˖7$$Di&%&&*11QӉ'$=ppûwq;vԬYa-^Xw~֭:zƏf͚)88f###%KzLLl6֯_o? ǎ̙3~eddhڵ Thh$^zZn٣t+%%E󎒒kEQt:O[Æ ȑ#j*9ݻW[n$O>0`6oެ[cƌ9 Ҹ`wrrϟ֭[+44TӧO׼y')o+Rqqq{kъբEt 7'>Fjժرm~ԩv꺗;&&||J5׶CyyK )8t:["(6mN$JK$9pfz;]Cpscbcc]Fʌ n p`@70 n p`@70 n p`@70 n p`@70 n p`@70 n p`@70 n p`@70 n p`@70 n p`@70 n p`@70 n p`@70 n p`@70 n p`@70 n p`@70 n p`@70 n p`WE )өcJ:t@i. eT``jQllnmR\,,RlGDjHuyz1y!sJI>}{uNdf=7bq"%Y)G%q-,dKY]b)(bZwNX-U qKDQEԗ=7WNAy8l [_ͦi&Y  "lWBNSt[pX ܕ&˲܈ݿ;`3Np#܈wR$V͚\ yOIIGJ}׽{rnעO疫}VvvaI222իo?l6}65Y2ʄ|n4.Sk:5V[ԪE ׹QҨOPBB뜟DE)A|||*8##3SXCzZYY6nCVFf9bzxrK1ϙYY2t^׿\G?yq-C?n7>3O=1oL+ԯjբ0.w[jҥ2m|ONO͵rJ$jժ?t=zTյo^eee)yז_[:Papxk7]jծWNxhCm޶MGUuzk&຀]^e鶮}^a>#kY^|YURH ))eؗzג~|Ud\NJRdjejPə̅}i᪫vrLwL:}-C&MrJ%JԥRxխ[GoJ ///DGymR$*tӴ/V$E֯ o6~H5kD?]s;O>>>zV~os>RƍueuAzinUNN?vJؖt:^Aw+!qU5BCK}/&EKat.kVlܨa>)Pq㦛nҲe4?jOɢlђtq]Ҩy@UT)Md9 v9}~YԤqc xF11TBb^֭[kA5j$OOOIo;wj:|to{԰aC:|XϏ;n]k^-ZwKak!f/d===47ԴIc׹s?v}AmڲH ҜYK͝w{_?n߮+_pATnV:]ۡ^>/pw%wR>[L "5)+ɧ es-C{ĉ]r*qn7}s݊ѻN ԩc|Ӎz,5kLZ+Vtif=Sޟbbb+!Aii믿Իw/dg5kd9-ǟҥrcۺQ#uE˗/הcȖ^~5S ~L6]*4p ے/jEJNITJjj6+YӦjӬiS5Ԗm߫Gzu;XCy;DYڶW~]]:uԫoL=v\5S-tӍ7^w9NXR6[S9Z~eYUG꯿R-44T7Cz?QNzj֬,Y~)___E֯/á%KjmJNNVX)Q߾}Uz5jԩڳ/U &IkVáIV\v='//9~ؖ.pݷOC:ԓ]5 kifZv^zWڞx%ʒ$9׹ll6v(/ݮ޽{i3U\ n}|`J6,Ck^Se˖I232d eY5qDڵK ,wijӤq,X/\&MHN秥˖O){~fHW y/ 9ea)7'{Wvڥo6|=zc4Z˯)''G/kK[TՐ韇Nt+ԈT޽$IuM?W0c}ĉRnj/I&شyNg\+%9}-[p˗)7'Kի@{xz'2{4i:LTƍtZrʩ͚fiGkƍZgYՏ(,mѢ:w5k;TS'%Ww鉧)7~F}kK?S-$Uu<9Y͜O;^Lt^`[ok3{ʘ tY۶:p9`ƌ{Eo9Yz}g!ǃn -)U ғOf;SՂoR׋{֡C4o5mWZznݦ7&[۷߯*U㴜jڤ$q%qjڤ\:8pRSR4?*88XO*[hZC-C=[kVJrJxE\u/]+.LR>r**2Rk׭WzFj֥֓-[J=8--^Lk{vLH7򕟫רQÆδnf}y6^DĹ0*s9s!{I&T9 /F[rrrd)|No$ssuO{~"U-[4Wm)>e$=`yyy+#=MlWWvv˲MVeTJqqqzW* @9A)--MЛo3fhԨQ绌J[njݺuE('=]Ӓ%Kwرc+{=<>>… ?o߾z_Z^x͛7OӶmΝ;+''fڴigm6*77W^^' S5ԬYrӧkѪU"""4f-Z\* ")өT=Z:uҺu딘'Nm۶goRR|MC]tÇQ̀:$I U6m\mվ}{ܹH5kT5O?cǎeY޽4h VjjjT><88X? -\Pɒ>iiij߾߯QFiѢEjٲ)NL'Iʒn/FʛOJJ/vک_~E;" H6mڤD%&&j߾}:qDT>i$լYSAAAeYںu]uV=zTǏWf,Vcbbdٴ~z9á[y槴Ѓ>_~HU^ f7vrnWvvu1͟?_k֬Q;C>u -Yn% WJJy%%%?v^ׯ-[2djժnG… ]>p/^5k*,,6lFUVph޽g@q)S'???]r%z뭷pBjJ4c ũCW&LGgllƏѣG+66V-*1(77߬;C-Zǵr"3X(##CӧOy5~Rg֟}Y1BVժUձcG#ҡ-%[IT٢-][6f4@҉#CR\IvI$gg^<1vXw -Rll$t% br.6n ܿ @f0 n p`@70 n p`@70 n p`@70 n p`@70 n p`@70 n p`@70 n p`@70 n p`@70 n p`@70 n p`@70 n p`@70 n p`@70 n p`@70 n p`@70 n p`^:0 @>涾HeYn n<OHMU+[n.a{˷tgn Jxn2o@%SRخZmuI]ݯ}f9d<vnj#r5ݨQ:uN~o4e4Nu,K_/VV= ^]wyz]4 ZtY}͞1]bQeiҔRU^zQ {_J&$h=T~M:M;wƫA( |蟺U"}Ml{um;5iX/>W&Ir8q Z5KfG CkԖas_\{/je0eΘh39c]~۠@}jqmgU_{qX Ujuo16o5W_Uꘒ4w<]}y]  S+kΨMa7mRk:(8(HUn7=sGx{4o3T:9ݸmyߥu]wjo;ʘui˖z{4𭒎QZ5/r]k:h7(1q""!ղysIw7f*qՠw2ǚ\͚$髯['Wn]S{O|]* ydg?SZ}{טNS>lwӴ y,oNѐGG)n]y{{)n]|53n6n\lOV͚L=3E-t25Q ]߹>rD9%}y222NYRƛtf;U\7^SNs÷Mזm?赗@}'km6j֨svҩ,LuBK {ow w!O??Ј*00@)z~İ qϞVeE-z_|zJKOWFF<==O&@5BC[;\={TVgkǴ4ȧ*iSIR0yzzxm}i8 Ckmv)ArMiژ԰Aխ>S0sgnz^Hժ^=u1ݷO9"ݮ+۷Wpp6hcKKNN~VJJ;R 233դq\J=^y@akiȰ0?zxxhkK1n+8(HoUXnn,˒eYn.''Gßvmۨ7ftO;ò,9Eϩ >q .00@ڻo6h:!URŵbvm K7n]Iҏ;~:p8g=UbС뺔vYjݠk֡vW]/W.rnuT]iS{$p~]NSǎSHժ>\}*نmwnvAJKOׂş)99YZ?v*'tJ%9lvj*:pNgƪ]~ܾCVfVt{e6Y%ͦrӍ?a~mO.Gk's, cCzgp8̬"7/XnS6+, @r^}c~cǏkT-.o׶5QFGçWͷi'st~D_]{~FmJl mKgv%$[dq:~իw{$6/x=`M񌼼t7f-ҁN{ralV_JλOVOkԷNߓӔ4ewuY۶s 5sK%F4W{3ԨQ&Ox]QgԦ$CfQϜ ~} yt?9L~z'I_UJ"KTs ۡ5j-;l$?Ii-yt7`uqtʮοs ۥmCI' IYr%%YzǛ#AڷkiER.u_OQ tigG*q.\|}}a]VEOs_.sӴ3ç b_ܪNxꄇWtZzv=`fnזolU^aJefp*ii-0f)3#]p  .NW{*.)ww`w 7t:O r!t2X*-p;K8]< BMI `ŏS\:K_oQ.d`.)Gy3`)yfvAp?JvdX. ͕?0 l #(ȾY_ ]=ۧruwIK uA.8筓n@eS|9Wy39*IZVM +/P:_0]0]l ]8xrmVpL&~/qr+iô[kA/sv[:rߎB (&l*ҞUpv%!v6bRڣ rivuIA ̜ſ/ ȶbg ʬ fx")m6 ѥdLBrim QioKg % 3ҭhVezIENDB`extension-manager-0.6.3/po/screenshots/_22.png000066400000000000000000000237401477302130300212200ustar00rootroot00000000000000PNG  IHDR8hkbKGD'IDATxXKQ/؟}(%)a~(/F} *.ԙM,! j>NIpsgV?vಶ9icʞ8y.s=soޯlH^[&t:VTqWJK|]Y!Vnqz`/2Y2L Qfuk_ E#/Lkkѽ]aA`xמuz1Y:21aƼԉ17?O,ҙYJ7 2 ~şH(߀.@n445G?GO[q֛m<tV9D~J+aD =PDIqݒKWt">|DCKWPq{=ޡzvNYUM~\X^+[a&lgROX8i5 &bŒFqSV,7aPa-.qsM1Ԁ"́~8ָ uB[F%%E j5h}2!U4IpY8kt {7$xZKc)YK+6]1c5-و6et;NJ_ʵsޛ7gk+R9r{,3ʦD SH6UU۰4j9"UrukMͦ͛ڳ睹sMb{Mf_dIaq+c Z9FLrM ˹s4UjgΞ55QXEd pHc_fB& ̂"DP¹c |UHwWP3龱9IL"#f]!љŖS)Z^~5t(yjnlfrꌬrd|b wΝKbQp㭷1F첰g0xo hvgKV;z|8ewϯ+Md jͶmƪsz駟Y`l>r(+s_Ό`+ն`O*WE946,z2ʤ|&TCe9?}Lqf~VK&Z҅V9V,'ɸ*ºgYbrU67M5,V[~CU v-&*bU -]v =:>VUgYm&^upQL 2bS};,ȍ+'N1D"MXMoH9BO +lbӒvFV bS%/TݮE3yiBƬ|D}[ gUS+2CH`[O,-m uXvGXxa;nN>VSY'BGʮY?`ma: }7mCH-ڡ.!8^_nqtތ%$\!̣5;uWc$*' °U'թK*cYvӶɘ8bw'[ˤ >W(2o޺u!g*֭@=uXp T`,"S(K ,!a3W$,v*_qaυ 'OR[v`;B.TX"r]^^qQFt姟ZTZe;IXSYidî]h*7-`AUgϞ-Y:@ KJG #4"߸ǩA*G OabB$2a]M)m:+D3}+|p%z*GU46Q#<} ^Y;ev=׆cj(+T<ҜXBi9GTAurPHqmϜވi-uWVN ە~!bxCJUQGˬI7$&+g'w߷R<=,ZnBኳ!u zS%UǠf`6-E W˛oT'AMA kMtHV<ﳴە} W&cJ 3?Am-x kߨn+K|]Ts W%>Yq"(xq1q04~1xek**H@4=7D ó'OƠA2Yʖ,3z8E| QYm gPSӉgZpPT'Auʪ 0r6'X*o?i7lDt'Ks)Rdvռz?Ã~IW>D!s>eUN>(BP~=W2smؽ[{6g 86V9<ޔFqv?4|$ת-Ֆ`'tEP}QSk9\{̐,+ם |DW^_DE%?3 K0 xFAurPT')@57}hɲeqӖ #QpPt"vP6f }w>sPb!s:@ٳX)WJ.8͜5Tx(DXUdž [paZ4knVmc~Ip P=^qʕHTţA[]O!"L:1vU *jK"| j?"|(7n@8[w&H`E]1)Ӏ* TArdS \Oy }2 `̽Wob ҿ7kmeڵcJ2 0;A 2'0nywׇ ^xAԮ8'%r}`!::1ӯ!.31.<ۅgpP;S uP=ِ꠶zp((Y=Ȉ˧J TfEA;9N:9N] T,@{I[3!iS:H ,i.JU!NtusuuVlc<,7vcH;7 0m1k&*ݷm}AmySD(hꄋҳQF0 1kϖJ0 #-5<ʼndǎVjw_Xu %!L|vrTfڛgs!?qޏؖLZ0Y&Mj qvwOGAurPT'AurPWKDa0D+1)~TrVA ]K.Š2T@5ѮʎF: 4%͛s‘ .M G62SGfE1Ȣ-䭖&*09k0ڛT^$"KQH͊:Hvxa3^{.Q2c&E_@(ϊDUbAҞuJ?Gۮ彔ذc$T$ZtD*L%-)E˥TV|8;Bv{hryu!s={Tp{э.lp 3&DʵFQ='7/9ܯXAI"~R0RW g~=RR R R Q Q Q $wlfd7FX Q>8#o2pxMBl7@6[-Trzi0F#HH~~y9N_uaiP*YpPP!<:X"ݭjboo?v* %iLMSSksgutjckZGZl~&1hdK(}W./TnO({l˕ +`eY{tAnY>]g2L?p@_e䣋eDţ@Bmc? 2~l9LvqdzX/ *p4= k`(lRc-ee0Hf2Con#7O>DU Du!;QA1b^{-!rp6Dqo""XhĊ6՚"jjiA^Jk z^HI.=/h )G?20;e!=Pyy5%:Vc#joM*w}"Lէ+Ե2e|@|| וUܑvvQqpxF 56XRQzygF!<h *qsHM$"g3 vtDnjf{0\㐿I"WݽYx1Py#S@PoAMULL^ bb!AgĄRUL,$e*&Akv#̖|Ր_2mCV_ҙhKJ^{gxzG =2mN\ T^連NH{u6J~9~jZF%#U@3ZA >&*rOg|:TS%0E5Qgw:Z-=?y6B)~6v/hPI S,Dǎ`y *N)Ae#]2x fvvkp4 GOe) {(nN=gԼHk*PI?ҩkTNa,NT_PɘռߏON{">g[˼M eN%)v=}@W*-F(11%~+i*e԰$}_/+ eiηV{LLϚ-C#Wڍ-Ƣ^5f.Pe՝5AzR#\ T5R⟶̞vLN@ ȒzeXPt+ٷj3VkPegT}NԹ(~LoJL0  Uğ3ssG˛7+H:~s8\1ʲnlX%,,(H"Q!!! ` B|/ja,$Gujj}F3|5Et>=s}=_4KSʪ?H[T L1vKOTg}ع}βxҊ׶"*>g̚|,u-ýّs5]y, /-QAQADJ}`"PxNaѧP 'JQT}Vd}f('~7llڄյ'q4at<~w) PC}_D3D8_3+N#jVZ=ix@v#\?c*gTjVz$R~ނƴT!*;o>SsO ƑD-=P|+(gm澹y붟A4+m Dx=q2m부*Z9pI#G@v]NH9TA|+Iw2 7{_0{YϑX;j;;7)8E]u5:&qI!"Z/.dx,m {eT&g9L|>UJU6޻G2[z(f2ՑQEC>9QܖϹǠQqYHX@55 ū09CDzu͘y\QG#SVJ^ jx4}ڧz1(E|y4f~D#FSd>QfCs#8}BaSsK? Z6o&9X:'`U9e'iY͘5;/Xv"C$ : dEZEVV)kWL`AnD)+raZ2S]ogB G(lR_DADUUUDTADTADTAQvAB WB~ Y|twcCqCښͷ~MwhP<(,$u3Ձ >Z(8$C25{cg m;)]0zǰQwtt;A)B*&N>p.zؾ$AL<'CIDrR$ֶo WmJjU={Zέ۷[n[_pܹ/\gG?lްMF-^! Ig0Wj^fdp$_5 [TXlɤ>GIxIHnRe__-[|B VyWshaWS #xfs7+Q- ˈ+Bro~8Mmji5A?/CIDrsj`ILƬ3*t]{lC2ă(63LDe f㮫k鷙_,Gvd( Ir:bbb[,7ޑ1]09Ɣac93Fe_>F>+c_P>Ȱ8x]K{FDUU7޿oIENDB`extension-manager-0.6.3/po/screenshots/_23.png000066400000000000000000001747141477302130300212310ustar00rootroot00000000000000PNG  IHDRpA%bKGDIDATxw|SwFwA+lPDODA*\\q^P*JTQ.@DdSZi٦=xOҤM 5!S$T' q@0QAsRM,j*NM 0j:1NM4j}aNu7}U 6aNu T `J8U9-||[T *Q UǬRANU pU/-lBʄ8U)(oynXYw==׭~m,EEe8/ vNxc+qiщ$2"A,p8%IrqePs gr'ХT!Ly1)=@'PxcW&FRܙgyARRҵm6[mJ*r9MǏu۶mJ*Љ0XG(đ5%@odZ$SIE2xPVѲ,3]Nqpt6 jbfn+&&F=zm۶?Y9GK]#~ܗeTJp`_+@ݤ*oLOk8]tTv*((nhS\\ܰaC:7%:.(2)p#?NMm|'ޜ}ٳ˓U۷ܦkVP f)!!Ayyy[Vq|g*9; G~ N p*T9vI ]tWrr_?nhWp"TeEIII:v6l<Ƿow*&U@ݧJNTɮSV7IvwڻA*ƴ@AM8Cc+›4U#oV][jY=}Pb! )w(V~111޿7.KCEEE*((,yn'U'4gZDT_HP5X@[tmժJ7/Pys=LwF B6MjRzj*66VIIIWjժa|)p* D3(6c7M%Uh  ڢVZ%?mMcq#`ǷUqq)Ą769W(11\ժUKVUe=D.7U)ÙpeT-д![ cjz@ PvM0Av]?0Y@VU:u9眣M*>>^VXDY׮]5duYJIIё#G~z-ZH6l0-X@ o}Q8 'N!NF$I7Uܹsϗz]vyYƀDfӽޫF/_Eiԩ:y-jRQQяmhSNYCN:Gy[ԭ[WW]u\.^x(U 111zG ٽ{wM8Q=PtnWnn^zIn[v3m4qj֬."%&&J:tzGg\%7?VX}q0`FCb'< "UQ < }̜&Ҝ0#XÛPcTIOO$ϐ_xѽ{wM4;.N4{z뭷~]Qcر1~͛dM>]r|u (++K|^xoPsD~:srb ]yz74~ӥ^={x[S5ELLz)%''Zx{ZhQ9|p 6,m.\_|1j.s9G/^^YYYQ;6QQ:,IҊ+nb 5Jg}veeZ111A/С|I{r'xB[֯ZcG<B8!aaPuBUeƨH<\&LyfeffsѤIdZ5c eggWztw*&&F'Oև~;vH-[^z)cz\|ٳ~թSG7p XӦM5aկ__o>egg+;;}HOOȑ#p8W_Ox uԩvJս{w/_nF͛7O:xZl+66V:g^Z6MW_} ƍu!mٲEC QBBBؿ_.H]wrrrݠQׯ/ժE:1IQQg-Zky exx-[LiiiQkʨRRR$I g}ݺu+&3ۃyglRO>&O֭[k߾}zulT.T^B "h}ogϖ.ԵU Zn=z/ФI$hڧOj׮]ztkʔ)jժ,YoFԧOlR˖-?1%رcp8t5覛nR.]SOfӎ;l2ok5jAiΝ[p8t饗j̘12d[g_ө4p zwSOI:!yj֬~']uU}O=TѣeLz#55Uz5j(9 }4|԰aC5nXw]ƍW63 b?Ԙ1c4uTlR҉YAސ!YcGAɖ3U[h1UٳgTtZ0B%I={G}Tlg{O^xwݻwkΜ9>t"4p8N $*C-I[lΝ;խ[7Ν;+?,u-[jꫯoժU3fZhQl`Sb/YFtzo=˚7o=^׿Um۶UJJ,w]8:q^n.vp7q<)SN9EO<x}r8jݺ_~D… UPPor7=+otk;wn9b1D4ӄS߿c\PZ*7 .JvִiӴ|rLיg)IuwG59sÚծ1NzMӪ[222?I;w7\)IH'&:1󕓓kի{I:*)s:y>{]>䳬mUb] V25WȀvs8?Y,!v{w$i4c =***Ҹqhy#G[oę1c ?1NL'ؤ &eHKw TA^X&z?Moc oK/Ֆ-[ԲeKuY֭NIm۶iذaF>[nE3gά36:NVZQ9^NN<+HRQDox@@p84aI"= 0@Gђ%K /]UÇuu]eZǏ+???JUJEUN,ٽܵkg]GU fO']rssr'''78|)111qq󕛛[ݦ j T/-PUa*C?0PxU\\bbbdeTrpH7@SeJpnOYUrf] q\72p:Uq6*j~z7hw`NYϛ2Oev$pbT!UNfT)>>ʵq83 p ,NSF(ɽ-,٪]v q.0Ǐ+))Ǎ.PUS;,x:NSGQBBBحqV]p8O˥)66VVN XrTXXHp P2T? Wp@p*X8!JE:e N*+!|jdӧKUPE!*.TǏWNNnѥTtI*FNNbbb.0Ţ"0D pTPP@E FTKkjŢX0DT`X?x@EopBM_\cJ (ܢj8WNAN ppNl5>HIIf3 pIIIIF`*<IF`*<I5aHx`8&G`rA`Zu駫]vWbccu}ڻwPp 0uTmVe;ӵU+K/O>9s~2]xر6l(˥}i裏kt+ԣGթS'vN$s=ԩS+R(FڵkoK/_TjjN;4uM1118k֬YڶmUW^kyռys]tE;w6olP_.(vn[111լY3m߾pP%lݺU[n$ZJl6!ѣ5n8eeeYa;< >\_jժU_eZժU+_۷Wzzf̘-[[z)IzǴs΀Y,1BӟJ#1-[-o|[C6ɑ8x2NuJ^ymٲECUf4vXmٲE[nW\hȑ7n l6ժUKN3hx#IW^yz|͜9S" T1o(>>^cǎvu+))I~>S3FL}?~┗vkҥjݺN?t]pz ڜz/XNSg֯jtI@ѣG̙33TpEUӈ`zo'0*#%%EZj$Pswܡ9sE:Sk\KΝ;K>]s5|Pljܸqz]ֹsgoK^zƎDC Mhc:xw{AkԨƌ;vhΜ9r\ڽ{իI&iҥ9sn6F[il6ի'ө]gqF=݇5jT ՙnWjj詧R tM7jjٲeԸqTPP T@͜9S! Lԭ[WuUZZ͛;OÆ bQZZ^y=5jl--"ө[nŻ.!!As>|&OlD3}tPjjƌZj)..Nk֬[o%ͦ-Zt]*P͜9S!6oެK;&ƍk̘1JIItԧ~Z,馛4w\]wuO>Ȓ+ÇՠAviڵkWmnݪ͛K_Y%ѣG5e3Fz$+"mpu@2gIKxS68{.J(H… U~}oxSҵ^"effVfڸq.BOMvv-[#Gzrrr4m4H>eҜ9s3ޔ NmJ:18R/ٻw֯_ox#IEW\qE pV\޽{s{jӦMZtO?]ZzqѣG5qDjϘ8(xIj׮:aԨQ›zJCK.ý!ٳyˮI>W^yEiiikughժUڵk~jJÆ S۶mr4o<]vr:QZԢE `΁iFU @h80{jԩ:z$)33SEÆ رc5uTYV5Gff\.:uMݺu+MNN͛[P>s_ƍ {\`N8oթS'I"I-lBy嗕=3c͚5aÆ oHyyyFiKvgϞSNm95kքl@"\->=V?}ӻwb'?SBݧgϞ=FR^tWhҥ@tȑb-N:Zn]/IG%9%9|.]'|~>?-e%o} 5}mԧL@g D`r8'9K0̃|K0̃Ǐ]x`8'9Neee])deet]8Gnnnqkt&77WJJJR||9㴼:QNS6P11\ .0ڵk]!p>^v;r8W^^ѥ"H'Jl]6 cەxeggt] U 7*nWڵ.@@#!!@JHH0 &G#>>@ Z0{B`r8&G`r8&G`rL}ӧ]v͛76"PDHRW\t<>}Z駟jĉ;w>C-ZH4k,[zwìTE8&|r͟?2!Iԏ?hDY@8ڼyw}]N p~-X *U N&T)ݮ4GqqqZf222'I޽ ͛СCZzu>|p"SOcǎoVcƌcbb_lYAAnw}ovկ__wqvƎoQ<󌒓5~xedd裏>R @ 'N:yGccI4h Tl٘1c/11Q ѣ%IzgQ d۵vZ;vLǎ `<YdfϞ~Z?]fٔ(Iڵk6nܨsjڵZb֯_@!w}:H6m]AӢ&==]G)rSΝտ?^6lЄ *R)s=F={jŊ۸q6nܨ3g4hVb RV jO+Wjʕz ѣjҤ,hĈ:묳dZհaC~钤Zj/^ܩS'+;;BNڵk޾}{h b%K;T-4ak*,,mݦFȑ#~A:5rH%&&jݚ8q ^.Asisw~۞K:{aÆ!.x#ǁ.?rbbb*ԩutTSu-YV/"Y1ZDhƍܹ$iÆ 4DhرFj109#09#09@ |KP@(8>&@r83 &GSBvv6!Jp8mtԑ#Gxb8p@oyE?X۶m޾լY3Q= 6l(IZpaDvgj=f͊@tЅvӠA">fSzzVX?X?)55URMÇ׍7ި믿<=N/+33Sv]sn۶bu\pZd>3eddyjZT16lGHy޽N;vLiiij֬m.\D]RSSk޽5j|I 80.]5}ݧ\~7o 5-pj8]}՚8q~ٳGSL)ӱ.]-[Z`4h0goi„ rݺ袋T 5N *Vlhسg򔘘X ~zl2uPv]VUVknmQQ ؽ{n:묈#&)///dk߀bC#:5 N56uT >\tq-_\ƍST^=tMA߷o:,5mT asƍ+ԴiS5iDW^yemZmVw-ͦUVE|)p tIR.]dzngZuꩧQFe'OW_}3g_W\\]}߯ŋ+##C[Q_}M7|S͚5M7$"$zsisw~۞K:{ΎTti^xAf*ׯ_={Taaab9rD111FF:unݺ^JrJr\N^w}~Jv\%D#'^teaÆa~-_\>gݻw`r8***̙35sJ9_-ԢE }jР/Vʹ@ jҍ7ި\_-^@85ȦMtu]PLjڵkb/r~,=\|X Rǎt:i&9(ӴjYſmܸVXQlɓǏ*5  t5mt hРA!ͦnM PbbbAcbb>}QFڻwΝ~[҉VA7x$_~ZxNt̬SNMjȐ!uߴrJr-3fLӧ_~BDu*_XjY~~~DsUs@MASlذAwIOO9眣KǎSZZw]QQ~Ws=W#hڹs.\D5kLw``f (lgPթS'2ժӂ $&tb,>}UV[Թsgխ[W6mRff,Xe@n4x`qjӦO??k&Ul{sKҥ^QC՟guIڼyfΜ>ǩSN8pڶm&MiӦ:vvڥ~I/vֱʫ}aÆ)33LNj1iӦ9rzSN9EE?~'-]Tk׮ yN;4d5o\z饗4{2HyPΝ;jjӦMz_K믿^:uf֭[d-Y$h=RH4^'fzMpX 2D#F? I2ey>| Z{^'pTSlUuK.Q.]}CU}0SN9\۷/>/A|5j(7tSu;wִiX@1qD 4(h;w? .>>^= кu~Xeu7k֭z뭷nСC5tЀ)ۣ{u][Cnw+!!Av[mF!Vj_~$=Om6f̘!=G뮻N/͛TXxM@j Gbb^z%5jHs=Mjy,ԩSCB{RjժrC)77>[R{=M4u҉.`ʼe˖~[!'IѦMzjeff,s-)ڏg7;|E]//(((з~c7dXLGIu|MhSMr:묳~Ү];hƌe+ w(//OIIIM4f "nݺ9r$yuzGJOOѣ6l H~Ӌn[zweZ5j(u]KA@ 233X}#DPNǏuyi̙žlٲe,}T:~/_qiܸqڳgOo+Hi&蹗-[m5ϖ`tIڵkڴi~k׮j֬4hR۶iVl6s9Ŗeffwߕ$\.=skɒ%ڲej׮{7c)ڏ#GTPPPCzKmWw~!t;]y\* uP矗$]ve dZ|222*4>@۷oWVvϟ 裏>ռysOiiiŦW_=ds=1Tw Ǐ/R,8pVKhX, -[bƏ/tU`~N~uѻsoJ:1QvvڈUQ3xML"Ac"͜9S3g4=˥zH/Rn0VU#Gȑ#c=!ϓCf)%%:á/b.\ 6Ԋ+jr:SլY3]V F,99TT~~c,..@'+Wرchݺ>˫_Wg9JD&^BE_~BǸ@*b666:uCyk?~oߖ/ :=z_~ TW^)mdyk[sMLΝ;oNm6 0Npp0>?Zƒ// 쌁׮]?>}Z% @!;Yfy&^xN_DεkoNy +V`q6lSSS;5 شi/"""ppp@hh(nܸ'N[M,cƌ8s .]EȨD'N'x̛7OG q!tڵo.7n݋k׮!$$rfϞǏ͛"8s \E_XJ변XB>.]3gթS񰶶V>tvvFdd$\ 4iD# '''l߾׮]Nu>SDFFڵkؾ};7o.& (*ſrJ+憵kV=)u Jvnݒ/k\Q7Vwww7eյpB|7}wG!99Y>8q" ooo8::JwˬjΝ;qUm+4nSL#RSS,7 _|&O '''c׮]8|0>3q>}pȑ 'գN[ˣsEXW󦬺|}}em۶0`ұ}^V:S9*S{STϟnDo!&p!ׯ_ 4i===˷ƍ%3DDDT5jXӧO###͛7&&&>|8V^T<{ +WD߾}+TqMbƍ@f*UΝ;qU</FZZ%Crr26l؀'OcǎCCC3sݻwr+KY}vYԫWZfĆb7N:V߉D"xxxnqahWZP$$$(+SVٳ x1fΜ T~A__EBB gΜ:uH֭[ԩSzOʫGݶES犺U:oԭ24y^k29Z{SH׫D;8;000P(H$D"oG^^#$"wqEDDDɓؿ?͛7P(Ě5k J4Ĥ=y022rW^bnnGGG|G_>6lCCCoF D"HeuVeYff&._=z?ѡCIIIÒ%Kj5剂Tsss,~U%??111hٲ%!=''׮]C-(W^E^p)VzmkY4uʞ724y^W5fu>s*??p!F>}gϞ ǯN=UsZT%>U:kUT"z{Z ={Dccc8qYYY8x ̙ۣAAZZ.\{.Kڵk^t 3fѧO4jO|?y066F^JPUU:t@ 0c D"DEE!++ akk bΜ9HMMŹs~gΜHԣX 6 M4{gÇ˷i\j5/5q^W4t4mT8T\V^'V|"^BE?Q9wҭ%cҥXti'""R׵k0vXL:ǏGvv6bbb0x`ddd֭/>>>0110ydlׯG^^`eeTlڴI,aaaٳ'=K.aҤIX>}:,--ѣG<ҥK1eL6 %.XgFPPKԍ>?fEEEa8{lgϞsbϞ=ňGBB5޿ũӯ֭[ccc`̘1 .֯_===?J?\:tƍÚ5k*:gҥXd =8p@PRXk8+m۰pBn%isewF(iӦJOD!(j)WvzٳPŲ>Bd˲g^˞ejX,aaa1)))8t6n(IS`߿aaa ==BCƉbؿFʳakk Qmk @Bg?% C e(+,Ux /m-*((@``  iIv#~"jÿ3D8DDDD5EhѢ.] 7ovXDT QN-6zhm@DDDԭ[g믿oYMD ;CT;q""9ps6DDDDDDDD: """"""""cH1CDDDDDDD!"""""""qL8&pt8DDDDDDDD: """"""""cH1CDDDDDDD!"""""""qL8&pt8DDDDDDDD: """"""""cHi;wX,'ѰaCmwɓ興HWpyxxٹDڵk7\ .-rtt8;;ظq#Zj'N( >|ׯGAAAKDDDDDDDYXX~ TիWWSdDDDDDDDK;wV{N:a۶m0`@ ;;;|hѢ^xǏ#00_D퍋/F!C7n܀?>}ZQ0v)Mݺu˗رc>ӧO˱l2$''xs9W~0gK.HOOZ,--!xu}֯_pH$7|OOO"##k,f"""""""Rw/ $$޽{}rss4i###ܹs$"""""""50SKI$aʔ)G@@VXQ1 """""""]o\LL O?cBk׮#$""""""0SKaРA!>#իW'Ob̙h֬##$Z XXXSNKSN2355E޽ccc<|/[nX,FBB^HZ*WvzٳPŲ>Bd˲g^˞UݕyyyťRnٲk֬pDDk!033Cll E %(< 2T"U*8G֯_pttZǤСCظqcuFDDDDDDD: -*((@``  Q$I;鐚jM Kb$J!JahhCCCD"5CHR!77kMMMt8DDDDDT*T PSSS@===H$Ւ𨩾6;"""""RI6mISSSy;4I[}Sm""$4mLаZ8j6&pŹ]vd7n>&pT"H!TYuA}S"&pȎ0Q X6hMD!"""""jSr:6]j8DDDDDDDD: """YXp!N:[nXl̴Shh( EHQ_~n¤IF[nvxDTmڴZl ###$%%aѢEx葶C [nŽ{PNt8DDDlmmaccKܾ}[ˑQESLҥKq D"lϟ?xyy!<<III TYfi;"atH$4iR>b3f3gp%,ZFFFmgqMDEEIP899av>c6gggDFFʕ+ RG q!tUí'D"{̝;qqq(**B~~>㑗С!н{jj'&pH']~ ؽ{7&Mƍ-Z1h X[[c<|/ 4o\s>|8^ 8q" ooo8::HKKcmmyW^C`` bq5ƍ .ҥKɓ~d" BgϞD&ED%TDDD0|p5 ...6m"""qFܽ{&&&>|8 Tʕ+f̛7,/oÆ 6l:vׯZ eH֭[Ç+Ŷ~ܼyqF9͚5CbbbZ)Y܎;'`ժU#7nD8::B"T{BBԩS H#4QϬY {{{L6M-66 4RNLBPPmۆ^z!!!2db1B!֬Y#Z,D~9G~hذ! UZ6l(_nܸ1NNNx ,@߾}dvjYfLMM+Ξ=G.]:j;@lBOPXXlߩI}S]m""3^Ȓ7;w.u6D:FP>}xB ٳgo.)8q"qyرm۶ѣsaŊ_~uW Xx"пyyΘ0a &&fRNV쒨-!!!4iS"""'O/2]]]sNDGGc޽e~>}A$ڇ괻 . <<\i4PK< t颴{E^^|]E?DDD"Yr@("##Z MfTWHlAϞ=pvv1g|8z(ӧ|||0j(cӦMw `x Ѹqcxyyahڴ)&O\f )ɘ6mp̟?͚5/ؼy3еkW,YD+WH$ҥKq=lڴ 0}t`9r$6m)ST[;exb8::ƍXtSX,F:u֭[#G<<DDDH$FaaNO+JQXXiiiH$Z_MMMt9زeK2e%n &H$7|OOO"##vر0a@Ϟ=qq#Gرc ر/^㫯*-c߾}[nڷo2): ̘1&&&|GG*Rݥ( xuuyT?݋ǣM6wƎpWg6 H$KGhz:DD -Jvc4i###ܹsG6===a7ny*˓}I600PZxIMy)~/ЩS'ԫW 4@:uԮ4;h kG~~>B˗/kO>ENNNe˖իʕ+'O.Rv+xm $$BCCqeUXZdffb߾}puuŒ%K0` 6LeY#""md k@oa]LՕɾ6bGd#h>%#[juB155{@(B$) W'aǎ8~86mڄgϞid[u˽|25k#G"00ߎ;U" <~BܻTݲ% еkW 8r NZ~K`:t8yDUu}ֈj+PT*m}ltLu龩6nbڶ}Qo׮]mɐJJ P?0kêUp}deejfWܧOb7n>3!++ UhYѴf͚9s<'؇jwLL O?%1-- D~}vh= ""z ByAXkSdH0^| @y$NSlldddɓ9s&5kccc888YYY8x ̙ۣAAZZ.\Pv,[ Ε>˗011aP~}mڴQҥ 䗻ZWreqF,X(,,_ hܸĘ&YU}jc}}}o" ,۱sNܾ}ӦM[n333 4044G}zľyܸq#&Mܮ{бcGl߾666u={֭[aff&_W_aÆ oU*JۉuoCJJҺ]"&&Fi]JJ |}}.w?uVDFFbܸq/?Ο?۷uօgG!B4iD u%%%aժU@XX>3\xQiÇ8pK]Wrm޼X|9 yflݺ3fsTNE)Xv-`ܸqSv t>JMMMѻwo޽O-[8M322uSSS{%.jҤF 4{UJWge} ɖe?z=988DuWzسgõ Qyx""""wbccd(P,D!UxȖ uŗ khuѢE <~Xۡi8T?]P4 UD">)ݒmY7V)**04#pt8DDDDDDDD: """"""""cH1CDDDDDDDxq"""""*H$5RPULUT*T*! ! 4^GQQrss @:H1CDDDDDT RBӫVzzz011!233!H!zpQFTw8==='w8DDDDDD$l&72zzz044dQ({-8D&p*A$uv0CDDDDDTQ/ڜDXV7G;!""""" ]HB DTs!"""""""qLZbxDDD`!""&L@ԩSv ,\N­[pi,[ fffGͭ_xBCC1lذ5tZ󎈈~W,[ u'|???cݺuU*sFb NZb>~ܺu &MBzz:5jnݺ!33S۷5 CA$HnՈBǎ1uT4lXp!Ҵ-*&pH#33 <<رcxbk)J"e*111_>\ ۷oǵkB!XI&r_f$1c 9s.]¢Eu8;;#22W\7qDxzzǼyD000PⱈD"|8}4\ŋ+N~)"##q5l߾͛7;{l?~7oDTTJģOH:v{!)) Rv킕ڗKѻ """zXXXŋΖ;w.<Çի///||999ƝÇ_~3N>+V>PƎsݻx ~Gcٳgc̜9R޽{HNNƆ tر>%ٺu+:$ƍhӦ w3333077vD8ݻ7ϟccc|>5 ~~~8ydӧ 6m=Bhh(8sggg|hѢ>}]YYYr #`Ϟ=H$Xh6m ggg۶m۷믿FRRK,[L^'|'''|RX7774o3gTZ߷o_ 4ZBݺu3?6lP~pvvT*Ǐm6+퓛lmm X4LNN]-Zy Xf R)7366͛7+Ն,a۶mի\\\!Cݻ%bDJbR'VU-[舏>GÆ ahhtL>%Q5Njj*|||nݺUDD8:wXt)B!N:`]1ڷo1cƠgϞS$ѵkW[h׮b6l@:un:$%%e˖pww޽{ꊔyyG`` ԩߘ>}:yf",, {Ɖ'xyyHJJ*5NHooѦMlذ (((@ӦMѥKBHDT B|100P(H$D"WYׯCU="SQ‰'~HC(B(*Ůn@dd$֬YOb˖-nUMll,bcc3n8]VQ.%TZfnnC(bʕ6m?bРAx;B(bWZe֭k9r<{&O1ׇ Ν;Ǐ̙3?~<^~ɓ'+/^@xx86l؀ѣGRRRm6L2zzorݻwGq2cݿ?u=zСCѺuk >ǎCRRDTsB!5k@}}}xzz%FLh݈#`llSNa2d~7̜93f@XXm69s&&&9rZece^R4vXlٲ n:u-W^z;_رbC@ )S2c}50k,뗺7|uU?DD0|ڢaÆ3gRSSqܹbӦMD" W^!** ?7occcK߳gЭ[74iDiBRԩΝ?M6EfPo ?D ߪ3:t `ƌDBJJ LMM1j(ch۶m*ACDDv܉"Ot/Ҳ={x3`ӦM1k,;w-L6 =z@XXѳgO888`ekhhkMLL`aa[n~UؔZNÆ K1rJ̚5 055Ş={8r#v֭F!>>^ݶpB`Zh#//~~~Bjj*6m$7p٘;w.Xx$$$ ;;aaaٳ'=K.aҤIre?b y&ƌe={6PPP<|PXŋXn1cƠ<ҥK1eL6 *ZD9 Pŋpuuhm5mB$_>{lyq-ceeHKKS=;;(M$u֘^Beu//AT>7V]__x|ѣ+WFHHH;޽{^f=|v¬YJl{ ֶm`oo{{{>|BuѻK__-[DrrC!"""R 8Z&KkΝCQQ̙ QFXd:@)z +s tE:@"(շ~ۣG0`8Uٶm,ӧO嗝TH""zM0ߗH1egϞ3?Ə?;;;D߾}-Gڵ Ǐ/s޽{ cccBؽ{7rsse D8??/7LLLmٲFBfͪ~""D"ڷoqDT%ڼGaGvލ,...0x`,Y8p < &ؽ{Zeڵ _1|pj 666ׯ۷oGff&v XXXK.Xv-̰yl~._/bȐ!JpEڵ #GD֭aee}K.eqxs o_v(DJhմ"OD5kYzz:? ;vDpp|>:`̙D"_),,F?"_ 沤1cFRR.\M6ivWZ'H0uT <9PXX$+Qu-1b&&wKul+WvzٳPŲ>Bd˲g^˞uW> ,(L5iUzz:b """/% ͡W"-- BᛯKgwbccd(P,D!UxȖ uŗ wƯsq) 0#G=lll J#={wV{ UPDP XL!^~zmBDDDDDjH$HKK !4>7T*EQQrss @oALUl,Wk"!"""""YG{q ѻ """""J JMu_˧]LU,R]o!w8DDDDDD U'^8IDDDDDDD!"""""""qL8&pt8DDDDDDDD: """"""""cH1CDDDDDDD!"""""""qL8&pt """"D"v"575&"-LQR)R) ahhH@TJ(**Bnn.rss!5֚蛚n&&pTRBzzz011!233!H%QS}Sm""wDDDDDltے)NOOvh:DD """""RIviۘӃa$p7&"mLQ sdM%]ǏvhצM=3^azŝ mڵڿtRL&-]TNұc_^zixΞ=ycǎ'S|}}i&]|Yr~8SSɓ'5a}x֬Y}ŋZh*V5kuA:uJ'On?\O}Ѵit>}ZM (YWշo_mܸQ'NO*99YQQQ^j*%%喖&I={6o#iݺL>@O;wj劎vTZ5h߾}uiiiڳgԩkWcƌѷ~m۶i.A+Vаaô|rZz7o^ 2UP,@YaXK/W^Q||dZo>eddHMo_薲4|p?^$o;v7n\b((HxY9oI&vZΏIӟ?Oҥ|AIfСC5rHYV͞=[oI!ٜ#dZoι)VeUq{&l6l%Fpٳ'۷odrI[3gT.]%Kn$M0AuU^ԳgOըQCGv)m۶8qz!kܹ t}0eA5dZ?$gQ 4m4͚5Kj*1B_~vp%mkժd;ve}ZZ6lؠ-Pvs]~7]zUڵw;wjĉ8p:tp8qBv%d6ըQ#:t1eOИL&s=iii㈷iӦŎ ^sݞK.)<<ܹnٲeڽ{Ξ=W_}U/^ԟ'O>z뭷3ghΜ99\R{UbbϟJ*9_~ڳg˭0=v  PԨQC/^sҥK~M0ĬR<ݻ뫯r{fٙu(}TR%g*UTbP611233dEFFڱcUB/ Se]|Y͚5SZZ.]$ժUVi7nΜ9!CŋڲeKŋ_UgϞeX7H~G=oeO[~RRU&ɤWj?~ƏӧOo߾Ů;@;w$jժ|rfiݪSԩ#٬~7+Y:uJymZxq(N,@iu9UVHH!<<<ǰ#GJ>g}V"ǹpႪTJ*%re Xp5fK,/PuI ֱc%*I9sFٳgG[n 5Ll6Zj;vٳݻwgu?gM]ӧOw7o^x|g}V+Wԕ+W-"##tR畟d׸qcm޼YNիWCO?X1R,9&2ef̘^6Muɓ'$UZyu\vMέhtz4m47NRhh^~e޽k(szte}رբE Vre#FSNPF`}Ԃ Y,UZ*Uիd2y=Ӿ M4I}՚5kQFB ߿~m~ rn5+++UJ'|Ei„ ռy~n;&8RSSջwoEFF^PZ͛7vu5zh+>>^s}w'jժJLLԂ O?<-ZiӦ~>|Wca۶myڳg \ȱϼy uެwP4Lb ʄ^zy;1LPEVVLus`l'w^VSuެwP4$pd2)55U2338ުwc# ǥfKe'33S.RY7:'Wp;ͦ/*((HX,aەtg/wꉺ90&8re6eٜ Tz;B;{xnyN<9ǒ/a}cw%:ʕ+K$&x:uꤾ}*++KAAAZbB JnnW@@dXd2VvtL&J}Ziii8el6㏪UVe1ǿw<린vޭJsĉu"=cKiLP8( 9P7yfݸ[O\FdU(w_Z<%%EԿ%&&n4tP5o\>fϞ;v^f,nVUy0l8¸󫛢8y$ _R(--MvDS7y3Bݔ90>PyY|||7??|x[jԨQT~G 2y5k֨M6ϵsN9XK~uc6UZ5;wι+00P˖-$EGGk/}B,}.4Myç[^vS{s.1g{cq~c}Xv._\Ӂ>ʕ+ P0̲ll{.MΝ;',;S7y3Jݔ9IXXv!)YRl۲nee[Vu7.۳=ή,ngyyj׮|?2dCxɛoxUT)Ƕ#F7t׭[yJ_hС%Vފ+?͉vQ^,Y?\[vsT`| =zW^Eƍ+JBϞ=l4H<{9Wz4ui޽=& ;СCU^=ѣ>}?H={ԃ>ޣΞIOOWVVRRR<Cv}nZ#GԬYgY,իWOgϞ$EFF*66VGnРA :Tcƌё#Gtmjժ>ҥKŋ%Ijҧ~*ݮ2QZhѣwP0 eB~ʨd͘1C'O_j̘1om6M>]AAA'>Ӷm4vX@۷O5j(R|W>LӒ%K?t>|VXQ5j/?wyG*Tp)++VhذaZ|~G^Z͛7w5n8[N?+ҹp,^z%+WVVVۧ I=ܣ`/Gz]]Yn8p@G$]|Y/y6M~lOX,eee9{]7p3H[jN>/&LPݺuիW/S5jѣ%IׯwCyUΝZlǏĉE-:+Zjݻw;GDDhԩN8?g}V?j֬^z)mV'NC=x͝;Wv횎;Ç[nZb=>oϭFZJHHu3< hڴi5kmzĈ/յkWO+In~҃>~|9L&M2E+VղeK68FRz?P Q„NT}護RbbΜ99s$}w*WIRv4|UTY< 6)ӊ+~9ׯZJӅ pBL&-\P'Oԑ#G|rg\R{Ubbbsсt :u"# VF 簟,]Tׄ ɽ*U޽+h6@X.I 6l5jXM>sXxzw}ץ'Ü9scꩧҒ%KraId`P*9rD-ɓs qSf~mׯ뫐IRJJo֭߮[СCj׮ {G۷ѣG3f)됞^`Y$> NRjj9*TPլY3/_^+Vt)%ܹsVZčCxxxȑ#%]O|g%zkܸqPz e۝ë֯_I&豋uEך5kԽ{w/_$[.\aTׯlO?bccUzuرH清H뫯oӧÖ́<=zT!!!jժmpruEGGK>K۶m/^Ԃ ;C.m6M୺b(5V&Mq)44ԹԩSzz<~zlR۷7|#Iڰa6mzH[lQfff)qq*Wf͚ի^\VeddhΜ92eڷo/fիW9'))+1]vL ٩]6l(,٬MRJ^fU:(Ul٢^}qԂ Y,UZU7vs)={V r&pRRR{n1r9ꩧR ԣG}.$%%z2L^/4i$Wk֬QllF弊XLLﯷ~[>>wOpBU\٭feejX_q/_^Æ Sll֮]o8qb7EU:Y Ό3ԡCu2224qDUZUZ`~'>ׯO?x:ubRzÑ#G4k,9R/yf}-ZiӦ~>|"-;mۖ={h刈̛7Os[|ÇV~||kF7{۶msv47֡;n\;8wRPm7e[7粜}s97>?v܇k.1f,))I,&ͦpoR"Ν;tnJ$,,Lv튐,)KRf{mnl7Dz-+ۺgWи+H uԍ5x L&M*+Q7yvݸ ¥uԍ5x L&RSSP-33SneBΛus`l$ppr\~l6+99T&*233r.%ɛ7]|`6M/^TPPdX n+++KΞɛ'Hf6eٜ_SSS -{A_7ƝH2x,27pחy&oO"b^Zxb8 u7O ç[ w/Fa/MDݐnm$pE9oMިI#SEGGkͪXbmCUtt˾9n$7Ԝ9sr/jݺu vY_fMڵKaaaX^y]V[n_|ӧ+,,)>>^իWw1Pŋe4x`IR|||5iҤHZ,EEEiرgiܹ.벲$Iqqq1bLC)44T[[h_~EiiiZpۧH]tIjڴRRRt.ܪc6-}gjѢZn]VUW\qIl٢Pկ_߹ڵ5k֨]v.ehB[lQÆ UF M2E JLLԾ}yA8z8M^._ٳg?j'Oj֬/I 6hԩ.s7oO>DEZN}hڴi:pN>^{X1w̓#Iǎ|y&Mܾk;v(((HuUf믿:'"޸qK'..Wjڵƌp-[$CBB$e]PP$zX,_ Y.́c aѢEOեKb=?--Mj֬j׮2̦M4i$Pox~ff֯_7jzubfs+dPVbZꫯ***J!!!*1*""B6mrt٣g}VNX{B8qBv]M6-08o۾}nݪ'x"Ƕ&1s'..Nmڴ:oգ>-[85nXGV֭UZ5լYS=6l_],9]zUWu=B zg]F*p77={ڶmcO>'|eΝ;]!Pjjjo5j(o._,I=zTt/ztQfUVMΝs9s4w\]vM:qM QTnnM;͹,gǜyeaڵs$Ȓ0 Ӯ]"$%Kʒc[=ͱlʶe{{h0 H #`p$p 088GH #`p>L&W>>>X,22L %nf)++Kv횬VvC+ꭣUG CL&Y,Y,9gdd(==]^.o[Oim($>:+33SJOOvHhɨmJ- dnMr233m1J[`\Lb J@UP/(???UPA?6mEͶ HR'$$DPhhBBB$p1|T틶 w}682O7]mVRm@DsJV 3 J)_m۪VZcǎiӦM裏,|G_z>mrm@ŻAtISLQppKwuz)M8Q|MˌV.]$Iv]ΝS\\z-g2(>ܹS>˺VZw_cy,ͦSN?<_ݺuէOǽ뮻GiȐ!ڵkWc,I~~~ڶmz術'O81TP/ŴUxʹU ԩf͚%٬ 6(&&F$QFzվ}{kz嗋4w\Y,խ[Wcƌь34lذdGyD[nU۶m'՚|}}UvmuM1110ak~W۶mw8=b&IL $;wˑL&S?2凶j\e(HxY 4ef͙3GK,qپsNܹS RddLݻwҥK*jʕ+x͚5K .Tpp^cSN:t,Xmܸ1c%%%)>>^gΜј1cIRbb#SfM5mԹ_^en e2XŢ~Pz_U ,o/^,ͦݻ+==]֭Sjj}QGj~~~E`[[N&Mr6{ljJ=zŋg$7˖-ӻ((((G/ Fy(Hx_kÆ .ɛŋf9{,ZHwڷo}w)etڵ"=/""BW\Ѿ}uVu)G'7˖-s Zf$i͚5ٳ6mݻw;4h>=E-7111ڸq:tڵk+!!A3fPӦMիW/U\Y;vԩS,]*((H7o8 sVrr߯ZjڴiqiǎS[l5==]fѫV[/Fj;wVlls('mٲEvVxh>>z5bM:U-[jԨQr ܫ4L;`}4ydeddd23<ѣG멧*'%m̙:|C B4Vvg /h̔ts'̚5xرѣ+>>#ǿf+m(իK>`ԨQOs.ϟ??G'|2Gdرykծ]; 'p&M-[/0ϫ\r.> 0@wy8+66V/_εbڵk~IҥK#hҥz%]ڧO }(==]3gtn5|jJ 4Pv~z[N+WTr˗/?ʕ+ejСjӦBCC?hΜ9ΡX֭ƍ:l6kʕZpaaݺuZ֭[ ,*N3J[v횾+b~aw}԰aC=ڳg|}}j*駟֙3gJvȑ#ga3gԣG>}Z?s}ZZڷo,XB6mҨQtwܹsz7?8 z +WN_ղeKUTIIIIڰa,X`^111jҤ-{b}ڷoCs΅RJ:~˺}Iҽޫ0e˖m&IqqqŊ0K.0`RRRUV:z*VaÆiɒ%Ӆ Tn]M:5y{ eddm۶:}6n(Ţ}j:Ww2R'OAjذvܙヘ5ɐdee9-Xx"##0y9?:kcShѢbbbzjeffoɵkl6l6x}WժU%)IaϞ=+Ρ-:uԩSOhӦM;(..N'OtR;vT5t1Iҕ+WòaÆI&mӦɓ' ea)kV/_yiܸq1bD nڴICUƍ%I͛7WbbԲeKb%p ۮ4|pgt+Wo߾Ґ!C4h }9s/k׮ZjƐk(--M=sի?<{NFjw<}wjР~8O?9űzj :T}-tWPEDDhذaڶms}jմf5kL۷oɓ'u.^UVO>իWO8qBv]M6|pHLL䚠ɮB ӧO;YV$}vj֬)I]1V1?,I 7{?6_|ݻs.C?N<ƍd2yڴiU-Zl6Ӊ'tĉ"Vv#y#]o۳/v& z 5nX{VÆ U|yL&<C e}z)o^ rTiҤ~C Q۶m>XDzZZl׿?Tjj'vԩs\AԩSڻw:wLx8ʱX,]u릇~X*6|__Q^uZxq#Wj?~ƏӧOo߾* P2va>~vNU\1$xs$''Kޫ᭷r79g{OYgcjkѢEz饗\yf/QFt]wiٲeTZhf͚鮻ҧ~ZJ]q5jhܹ:uf̘GjŊE*SVn $M8Q6M3gZh e˖;wfiĉ7X|$O>uO>\n͓t}ԗ_~밢Z;vtu7W^lV޽ &99P/F٬jժ)<<3gjǎ;w3IV_%CZSSSf3!#]ҢE %$$ 3 VHH$E2LѣGet=(99YǏwQ:uH:0`l6v\7x`Y,B]"7Fiy{秭[jݹo%c#;EoS}Kg':/]cǎͱ1~}raذayn[ls/=9l6[2ٯ%]}tc8=#tM>]ӧOws$e̟?_Zh?\UN%''+::Kmݦ_{Ճ>(RrJKW_}ʕ++88X'N$%%{9}۫VZz7$]߾UbE͟?_4i$qs)j2j[}չsg ٣dEDDhJMMUjj8{WW\O?Ts)IR=$I 4>7N=͝=Sǐ$mذA=zЂ o>իڷoϟ=z)y@i+Ȓ4h }:s^v^Z1˗uimVFϜ9s*33SO?6lT ϙ7oc;(0]v)11ʙ۷oWbb\uV?>9M8Ψm5--Msɱfs>oꜽg-^XYYY֭Ν;c_'bv}_rsnʶqoe9>ls,;n}~k׮]˗p:III9~nN[[N.]R޽ 򑜜윗Z[EP aaaڵkWdIY2~lvg9mYݸl8&* 1Q=IiwUxduQPVImJ78ӽn!7h$pk*T222)s̼^4en( [ŭ$m@;n]$p3Y'jȐ*ܭ*҉0+Wx;a%پhp'pk# /33S)))ePJJ233K<*ܥ*҇(Ҙ%*55Uiii%^.m%]m@BW\K JDZZ[VQRV$p@BܔT sfy(HRʕ+|Ax7m |@qڵk ÁYV]r+VQl(233u%(((H>>|L*==qVU;(ӕ.!222 o₶08PFFL&+Y,fL&ofeٔL]vMVUvۡ勶z)mqenw~A (,B`p$p 088GH #`p$p 088GH #`p$p 088GH #`p$p 088GH #`p$p 088GH #`p$p 088GH #`p$p 088GH #`p$p 088GH #`p$p 088GH #`p$p 088GH #`p$p x;@ԩ ծ]Ǒ;r䈷C(O= N: )La#`p$p 9pX, Q@@||o=33Sr劲r y#Xppʕ+($$D!!!t钮^c? RSɛ+WN?.p+#bJơ\rX,^;>p!޽]wύB fA,hV.ju Om#UAJaqki׊bXA؄Yb).HD@ B!A(I 2$C28s2<9}9'qd^ahĉ.5h!Ǝ[ Q1kVpgka7 _B|-l1/_W oϗ!hϧ~9Ó$sL+81jppF3fsͻ!ٸqcs=Y~}y `DtO?}8#\MMM>O`*+;.}6cƌ̘1#wߝ޽{T)#TC0kͻٳ'K,ɿ˿dݺuI#<2矟秶6-0 L8쓟dwW^ɢE'I=$ɪUjժ{mAe]oq_zk`3jF`1cF>fϞ=7/ gڵm#o>eƌuc9#ƍ;moNu?-[d۶mY`AMo:3u禲2K,i oZڵYti*++s9 U_ q7'ȅ^ /0>hfΜ9~w'?IW^y8_y-[Z|0vZ䨣ʚ5kso~so aß`jk /so߾O{VSt62տ[w̘13fP5 pFΦIu\ Iө.\իWg̙9sf֭[[*8#T,H\[[ZΦS=쳙5kV/^ŋg֬YYjU*l#0B=1cF͛s<쳓$=`(q~YfM%KްaP5,0Bs=inn矟:G}t=477{ zڝjÆ 0 _FPׯwߝk͢Ev$gѡGk6555;3T`7ڼ]M7ݔK'?I֭[$9sf͛s=7555y'rM7j`kll̢EreCPϟӯ)wqGn466R;n޽dɒs9yߝ?<=c{Mׯߗ BPp`*NQEF 0P QahΝ.5h!m۶۶mijj*` Se qmۖ!/f.OCCC&NcǦzp~766!;w4@0555eپ}{K)T'(8@ p NPp80:蠜p Ԕ+Wf˖-el20]7IRUUO<1|p*86mZNяSO͔)Szu?aBFۇر#&Mj6bŊs #>@2eJ9眴? UH_*|;B:C㦦&#r@0BzI*k׮5GuT/SO'۷oϊ+2{#q:lݺu0BxI}ߩSJMl۶mˊ+Ԕ+W oH m۶eʕ8y駳e˖2T6B0 \}թu]۷F-[?iQ*++S[[+;R!o6/b|8 %***$---iii)s5@_X`˿qy}-;wLe22VD0 ޽;k׮׿{^^xa*zC0Bmݺ5SNqkù;Z88#C=??_|-X8#ԝwޙ~9蠃zukz(wu W`jjjwܑ;ܥ6'(8@ p NPp8'(8@ pAsm~]0rtI.aD08'(8@ p NPp`@?ȏ~L6mڴi뮻 _`@3&'pBn営[n%|ƌSʆ/0.\իWcmk;cOOX%Ԗ-[GGYzu[? W_-ce×p[lE]+Wfʕ/oCu F^{-/w#ou13LP8~3fp pFŋ祗^mݖ'|}` (rG/>o-w9@/ pFwkrgҤI.`̼y=w^jjj](7~|c˕W^YR.pH vvڕK+w)@8TsssxyٱcG!yzo[R^"/Rn<.(`r] NPp8'(8@ p NPp8'(8@ p NPp8'(8@ p NPp.w ~dI_|1Iy$o:[ϵE0g?K|ĉҒիWg͚5iiiĉ},I#T Gʕ+skɬY͚5+\sM>`2U)TLiTMQ4*~(8@ p NPp8'(8@ p NPp8'(8@ p NPp8'(rИ:uj |;s衇96lO&=PVZ~3gN%?seʔ)93X1vI'%I\tE]iii}88#TUUUMym>Ira Ey@X`kiiIEEEGGmǏŋێ_{|_.G@/0B555^KeeejkkO#Llܸq(@0LϓO>9$'ݻ7?̛7ù]vGW_ymo{[oߞ-S@W}+q]{wϥzT{n[[[_(TUGݻe˖;μ-o۳uS__}c9ܜn!6lOp3ul۶etiرٰa?'y=IKG{}=. p=PO|"sܹscǎ}y2TD0 g?3'Rr^0`7$0aB+zK0̝;7W\qE'\jsͧ>m80 pF}j"ĢE]OQb][`V`( i&NnL}!%JGuÇE NPpEFE'MTJPÇ)Ts=i>;ĕ}e(q5ה(8@ p NPp8'(8@ p NPp]@Q7.cǎMuXihhݻ] 0LH'JTUUeɂ`TWWgĉ;vlT3*ՙ/B}-wym;}92iҤر#Wߟ5k֔<~>|'ON8!'pB}?NsssHrf޼yڧNSN9%rJ-[ŋLU=Ckxw(0쵆7{ɒ%K#d˖-6mZg$w[jp-K/۲eK|]6_|qN>,_t*((Q봩zCxދ/zCjjjʞ={:Ӭ0f̘$YbEz꩜uYmB锩fϞ9s$IfΜUVNeeeN>̜93Y~}/_{O?c=6zh-[&$K<#{Grd֬YCQ>?~|~'LЧJuu?t{݊+r3SOs]w2gqFΝ~{?{\1iҤ$oLN@ph׮]4iRL/E'OnoCҥKaÆ>zmo{[޽;IZ~}N8ᄜxy7{$ /Ч_re/_?%2eJ***mOeeejjj:u0LW)=wꩧIG>hN8ᄜviYvm^|}L>=vZ[ryד`s)O?79cr&I-[6%d>oG}4555sg䠃JUUU:蠜y晹KR]]]v^*+Gsݻ7CZP k֬ɲer+̇?vaas\8ر#7n,w@ǩ':+gu>}3a„\r%曳sâ;w̬Y2q4441+V';v_΄ 2nܸ^P</NƖ\pA.}e|_ۇLU8_Ѯ]=*=]:Ғ5kdڵɸqRSS;wf͚5Yti~ӟm}g͞={}ߙ3gf޽]n=k֬l޼97oNF3gΜoڵkm۶z9Sr衇7M6lؐtI;wnfΜ(}O7i}Tsn}r?vهrHë́ r͛s7TWnݺa>ӧgÆ lݺu @yYn]Ҕ)SO7$MI=7vaNq][qg!Ph> w+9`rЩ|k_K/7M]Ўgoοۿly筓c!P__,w=r08'(8N;.z"i%=@O8޽ۿC1w.w@ pJ q!ؘr .hu֌7.cǎMuXihh05Dv+FmRzC ZQQQf8J577.9\l2iii)_HV~^0Ԛ ߠo8Hkb7ZЁ*Zsss!Ѧu"h_/~0rر#{)w(lmmT8&LHSSSjkk /B0P&O\ajkkS__miӦ Q5}7iҤ<3.cU'(8@ p n1nI2"|OKKKs'I,Y2%\yeԩf֭YlYn466re5([^]=(\q̵^OsQGeѢEIgy&k׮rFq#L[.w{N0!7xc6lؐ/~e_|q>я隩S?|[ʺ5(P)W3lFTTT2;nܸ\wu7n\˂ $&N|392f̘$믿Knr\~93k׮r-t 椓NJ<뮻?͛$ԧ>{W׼mo7̛7\@)K4F y|%Ee̙m3g̢ErUW eWU-[VR|1ӡ}̘1G>ٳgK.4YhQ&N . GqD!7o?ܫ{r!?v|e6h{dtP:iwڴiRS? 9E_ĸ?_2UUW]9sϙ3M &LP2|3'icg>}ڧN??׾g_{}.,cǎͥ^K/4rH,Xe'eUs=7n\;wy;vlN8!o}g9{u3f-2_e껿6ܦPɓ/=7n\^z饜5kV_pL81_}.tMٱcG-[}k3fL/K/_;. .?lڴ)oy[iӦ|ͬYú-_swӟtΝ믿>sNRQQO>9^zi;:#ּ?NtM;vl<ȬZCͫڡ﫯gĉٹsg?}ǏK/4^{>0Ќ'O΅^$}}jillʕ+穧Ν;q{9c$YlYnݚ7殻jTYYs1K/G|}љ>}z$ɣ>]vuo~36lr1ꪦިNeeǿԉ'3<{]p{&gAm@-Rmb\QQQ`᪫Yg6f--[^۶m[Q"۷op|9sIKKKM]v%IVZɧ>|+_wܑ޽{1cn[[]]]}g̘1馛Аuuh۴iS=mrHv=ttM??p\]]O}S+ɏ!_EEE{Z˦Pk-ҐqgZJ^7555UUU:>u8޾}{֮][n%?O^5{,\0]tQvؑN;-\rI{'sOf̘͛ I:l}iӦ455墋.J_?ڽ{w.]|#?C۳>c9&ӦMk$;wn|nOO׿N7:묜xyꩧMgRt+ܯUUUe;4kugDžWK-<${Luu߳~:3gΜ̙3'gqF.\8hMƎH'N̘1cRSSw]εNz嗳y涑;uuu9]6ׯg?TUU"GqĠ]nh P:f͚|ا}ӦM\y啙0aBO fޯvJUTT䓟UUUgN'i;,G:ys3/9Ic]]555}~Y~}?韇z(?xy֓9Creeɒ%{SWW;3IΛ,Y$'|r~6|p,YKsK.üm O|˵wܹ3w}w.7xc~_t{'6̟?I& =F ӧO5o}[$7o}kjje˖ے4w5i[Q췁Xof޻ץASGe'ǕI==O;wIh&tu̜9szFڼ }u$Yn>Ӧ´irGد%Vʎ;n[mm~o^O|"uޚ|;}Ȯ]dgq=>ڏ)ht7"7Π}z^|rQHO]v}4666޽{G}}׬Y`.i p1i}iJUz8m餽]0hܣ w6Mq1ΞK_W{P|_0Z+LHץ͝WW;TZ{,ۈ}xi)ik߷uk=ݣG: FWKtTgS:a=JRg!J_׭Mq$"oAJǿ$]~DO">HlSw4wrM g5])bhjJGޔnگ78*%ۇ6a)T0:[4)S:򦻝:{]z~P8I?޴7O׶+~VوRuI!`2 U1Q%=Hվtt\J߻^WSI4I:jތ)S8*ߨU%U:%bw#lJCҩWݟ`pӧb)ןQ8m3^:hήo?:) I;y]蔮yY7}oC5g0i?Ugj.9~Nknާ}uus7=-Vŝ7aHFu USo^zMB丳V}9PltpgӤz s_FP 5ug[|w6,,LlᮦCfTWۆ~TT MnT]*-骖Rp`.bU0u_›B}3d#v:(=骽7 w"L]M}.i(Fߔ1}sNgz YJGt7u9j>I!OÛa#K+Izյt?Sz3:g›Itַ 5jQ+A#ݍ)=ۀ? u!S`aGtv?Og; Ft֧!Ͱ}?oC0p: lI[o™ow@3?[ 6tէ7zRŏzRwf5kz]jX7I pJrFțOxU[WFmSھANsE~`j-{zݵoW57OOaNoӛs} f"OU0bB"A0 (>} zR&)V0!No߷ЧH4=M=}y߲)Z0џzco/d#:iop2jR|P6)% AMw B?'إIENDB`extension-manager-0.6.3/po/screenshots/_24.png000066400000000000000000000145351477302130300212240ustar00rootroot00000000000000PNG  IHDR;RLPLTE888~~~}}}|||{{{zzzyyyxxxwwwvvvuuutttsssrrrqqqpppooonnnmmmlllkkkjjjiiihhhgggfffeeedddcccbbbaaa```___^^^]]]\\\[[[ZZZYYYXXXWWWVVVUUUTTTSSSRRRQQQPPPOOONNNMMMLLLKKKJJJIIIHHHGGGFFFEEEDDDCCCBBBAAA@@@???>>>===<<<;;;:::999WIDATx휋[SW[VZ/Xɜ3㴵Lg̴gF @܍xX@(h AX'!`bIkYGó7^yʗ/k-A|(4[⾨ DLIF;]$=4z\^3\ 'D3FrZҖ nt^ΗϬDl\f΀46t`hɎ x)DLdNqHDl$Mż鰍8 ؘq? Cr%l+Wuz:YxŇ렿-&Psf-`0(-M͌ \KGF쑍>XaQ}SH F6+.) %U"zp]!Ff ?Oelޱ sfa<hg~ZpaNSsdT< n0C^G,06pN*qjpB9y8"=;PL7&_@rw1D> @:p@qzfxr08|:Os5#6twLEN>=<逎fTӓz Gf$3 l0C1Vd&O:D!@I [E;#l07ShBtpF\݅Pj^9ׄ8c(IcQc ڧI@q)E2< F8AG!m1EMCq3Pf2x Ϡ1QF|4 EO3Xyǖl%qivv9{u6N`4϶3>Hc.,\F8UtylPHlS(E"`N4p,V*Sѧu׸Zٌdh;8U@tG >%ELw'T;~p +qp~B}S(Zو2}?0Aj+Tc dUq|J?\yJd3W2Id8f#1]Z[2 K 9K~B &_3}.[f"H Z%RΥ,vyBlB؄mHUB_ݓ-5=pUm ۺ !T8',ńڠGn UP|_l}F$,B>DsqY&"eV 1xz 9{u]Gt"oJm 7 I߰M kY2^K HW**+~R4_~GS z" *7sY4 N_b< ePSP_ x. v FM83ķMH!Ugʳ )RD .4۔Ex$Qc43fW}ZPX,`!]b1U#9$Zsro)BXeC 4m1ffX:|I_} %D0GLL׍ѻ}a,'~1P(~/լKDSUi"RD`:*;ԑH[S=vs2q-6̃qZF(H?Toh|d|--q 'VBQ 8QĿ`O|~#+`$稞an ;ėXM^Á]Z$79(uėXx>7=gFҺ':d1un#|#yZ H$m2qm-ncڸ2wCRyҗcI7@Ё1UGD? I7݄a#Gs8ck7yMs"v*"%5R9䢋xRo:fQԱ sw^82tEG^i1H) 6DMBeF%ʎH@yۏzTmt!6DRs3nU-Bd^ pwE~Xz~lG.!9S8ӏb.i$Es WO4V|x>&|tla~dUq밐~G*b!w'\r|!~-qx!0;NǦCTC\xc{6 sI~Ȩ$B~D!OC.Nкriz8݋b$r=5lA'n?*$B~<ʄ0DW+/CBU( B?w#02Ҕ722ʌ,-~ވYc<6%Ȑz#'c C"\|̈ DyuSnzgǍo W |b|nn3oЉ*xsۇ]QPo/BP( ER8QYg}/q⡹'Pioq{T.Zxd#xj]B%=]֧\ܩqYֱq1~!Z%j Z0L\' SrcHrP ^^x:ནy_v/,u teNvj+-p? ?@)\'ݙ>ʺVyG@Ah*s*]56yHn xO4A?\H?IɁyQ(eP~V=&{.{>g߸@rSUG`k砵q5 #)o咡!?q BQh>"d0s,MQ,Po BP( BP(^j1@潵K#o{0|!kc`^_>t#G0N#/1(}//# G^y4ӵ?}sWυ_$:V;8лuހBۡ^s̋Op藭O={Y[q92r(js}ˈ~fs7iaL32ϘQg,!V ڪիW"6>.tWs1;_,71.q˜5pVS)mz52Z W8=04c{]/{,GҝR!ӉO@7!fJPg\.0[-I?d8?KBept1LkJ(K߿ϱ+^`x_Tm\)?V #;R#2nܕ!t(lFtfOC%.==DyzAP(j?BP( ŏeן 244`fk~ū}F ?T̖ccc5/J?B<\yb>uA-ͦiT7=ktpHg=7yA@=- ^\_\ؤ`h^;z[̅oY`{[o~Ӊ:r!}Q`7v,A|~]_a`lRPgg>r/ˁ|ryLw=k=mPXѼC7@#1HGܱ};gF#lH?Ca#F#DDQxF~#PHlK8u> """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""*G"t)ʄamxa &zGz`Q?+NU 0%""""""̪LSJTp2?6"""""""2R9-lʮ҄9%cMDDDDDDD&D5٥2 *""""""" V\:q@™K||"""""""2M -.bHጚN8&9 t G6DDDDDDDɑ-t\&qJJ|sye R%W++婱ۻ#"""""" [{CG9r@>{kq"""""""6ƍOYц8bpXzDDDDDDD\Z3-mgn} qPg[Ù˲z[B#b &8#$""""""saNYQ8uaK-kL-3ymGDDDDDDD)Ow){M#0žz oL7-DDDDDDDd]L9 q`oxTX#CDDDDDDTٙjcKK{ qP8+)9 ,]˵%""""""HoZ˜KNG^iB1 oJng)um6%ÙJ!-jLRxc.И;/3sA!NZRG7R3m niCDDDDDDDckbo1fFG`2Ɩx9lCDDDDDD<如8tNy[ߔ%ܘ q91QUeTUGp X hL+ܘjciv*6DDDDDDDgipSa~ ǖǖ1qD=6Fjb;R'Gj"""""""*? J1n[ q-n,beX-D777IaDDDDDDDx% L%)O#V8bpl o HM,7m?"""""""1 l BiP:)2{a-G^'}NٺTxcjvRc01mmzmu0q6+vQNy f,}%.A5Q|(t)D777HRH$CDDjh4(**8Dj5 gҠ!=)b\,-p1\Wr)K-p C])Eƍ; ϷT22 gLJpss;J%g#zD*LJ "H JP(P(R\Z{]偉1ΈNEcw57zSӋ u|||qb~~~muc\.e7d\L&eR n(=F&=u0,ɅiFԓ)ssskRYKtFG.S2l&.tDDRqSL|%9gt]t d2?}xxx]BrD&t DDb\ZL&f6lu/( uűeP@7RT*e_dWQ(0XImk֒S:npDD.^DCB@DvdE`` k&F`` |}}5 aeDZđF>iZ|LREDDDDDDD___@nn. szsK.52[ۘʭQl v [XGDTq""""*3///C*O [b2 t kܘn.U37m4ʒ9s&r9OBK""%T-[m۶Y&<<*WFSO=~͚5èQpҥrT..>>>HLLR/t9Dd'Oɓ'6mªU !q!TFF.\$BCd֭[Û#Gĉu׮]Crr2_|8g7DUÇK•iZӷ{gC" VZP|8~8>@޽1nܸrВH$E֭q=L>\#"עP(`ZHMMu9 CڴXm7n͛|rdee9|L3viq;w"::>lE%Z ˗/㩧¼yOի:ʓ!4╊hĮAԩرc3gw8y$Ѷm[|GJ(,, /7n_L&o9m4t É'мyss`m۶:1|pt2e nݺUck^:R)RSSObT*4izaРA=XopsssqZo׭uJ.dʔ)qׯyO>O>[naԩ:6f*[uw*kH[oۊ+ DDb}v֭áCO]v8x >#Md_~eԮ]W\1=$$6l@vfԮ]?$?O?:֭[B9r7ZǾ7ker#Gk׮֭n׽{wdJBaa~QQQ&(#Gf ysI.-oҹvZc?$"rK.ENNѢE ؽ{>l9x 퓙ڵkc…qϟK.᫯o#viiihܸ1~im999.\P(hܸ1.\#((d|,"rm=-Z5k=۷9?ƍ@Bxk/pZ)55]vETT


67nԿ6sxV2qI|LrQXj֮]~n?ݻ#22•+W.YP*V}>̟?uܹs]O,c#b~DDUzu}W$s.]䐙SL2JqqqlyCDF|pȅ9Q%.TDDDDDDDD"H""""""""cCDDDDDDD$rUr}]vVΞ=Dx{{cx!+R""sssøqлwoԨQæ}޽[bѢEP*Na#]x͚5ޱczᴚ.%%kF:usAPK̙3W)0 4nnnF֭uW_Err2N<)P۷/^}UiZ( ;O<.^X9׿/vSF 1Z7ݱctǛo~t>wwwHR<|P~۱rJlٲ7n7|csssɓ'+Wݻu5_.]eQZWyU<8N>ӧOۇɓ'C&(~1#..YYYB)^xÆ طo^ T K.h޼9bbb駟ԩS,ΝK.N" ** r e""!o6ӪU+lڴ {8Jtt4֭qݻS8K^ #Gԯsz J^ ""zԩS7r {B3N1h SNx'SNӧuÇ#..W^qd2|}}V-7@ۣIII~IDDAAA`sx`d  vnÀj# "py>|cǎտҥKѮ]; \!g@ll,z=z?X}*CC ̙3K/ PptBt={3f@˖-Fb֭8w5UеkWjXW^$"Jc˖-=z46oތcǎs=1bƌ=zӘ9s~],s۔P(0i$/8t>#xyyd2L0iii?̏ڹlق޽{#%%G /_>flٲǎæMмys 6 ;wѣG|r˰;P(0uTݻ'Nݻ:<{9_Ѯ];Amz+>WG| v؁;v !!Ar\?o>@QQVZ{VBzRZ2j @q7Z-kOUSGUVLׯg3u"l߾饗^B||<^yddd )) ;viӦ&[ӧA۷/z:u}`6qDtGF޽5siӰ}vDDDȑ#aaaCxx8^[VZ1b'x&Lx~sST3f w-[ !!/c%"񋊊˗Ѹqc_ׯGӦMq5DEEUx=IIIXdö#8xꩧ[h u}Ue:u*F~ _},YB> IIIW_}%tF&!00j7oDƍ-n>$dsx1_>&LԫW#FT*ŷ~taĉBJDpR͚5Æ *<ٶmN<{aʕ Bzv|DDD`ɒ%w233xb 2dM3g;wSΥ駟b˖-8{۷oӧq]^WƵkc5X_|Ν;WbŊ~z!N&Mp ;~ 5Y g؇ccĉ@@@"##zj :t($ "##cʔ)UjlV V DZQFyzz"99YO(St/^ &vژ8q"|}}ᅦL&CzV.F4i_|;wTxׯ_G~~Q_>R).] V ;e:u ɌZYstls/M={gE@@jԨQe $JJߝB XQqHSPPR؇N<͛O=&Nݦoތ1&Nٳg矗<H$ٕ7/''T999z w- RRƩ粇<ύ6mڄ]vaҥq>HD. ((ׯGÆ c4h6l,YjC7e.TO4IrDdx֭CMI BXXXE)8,!;w6MNN[6}\,\W\ l2T*""r5k֠QF8{,C&u?sv'fj{~:+\ehZiƮr.!h7oΟ?<~@AT^Z <ŋѠAQV’%K_d?8HLLԏk3|%SMff&222ЧO Pb>}*LQؽ{7J%yth]~~>:?;vDF_UbE&;;sABBѸDDY^^;wyǩSl2 111[.֭qơUVXvD6mOOOyj׮ DJUVaĉ L&C͚5ca֭={6Zlիcرv?fV%۷oD`` ^u4mhFDCfpi}k;w`8}tBIJJBRRe,v/Of T\XEGG o,XJ[bذa+Vo.*>>sDFFbРAhܸ1ۇ+W`hРMB`ՂhjEz9ӰaCDDrm֙_7[,ѣ2dƍC"??F߾}ms۶m/~ȑ#mfڵ3gBCC1f,_G͚5q=Z 'N̞=SNErr2J%6oތ˗/\!ky>㑞~h׍\_hhhewo!@5 ΊܭzrwH }}?^C~:jղdP fܸqBghܹ233h"P7ZFll,!JUڷoF<77W.ӧA~ХK:"غu+Ӆ.[t7DDDDDDTq*""""""""cCDDDDDDD$r pQTB *DDDDDDD瑂K^"""""""`H^^% x0yDV#++K2D!++ jZ28|| """""""r |+%RT(((@^^[PO'@V#''999BBDDDDDDD.TDDDDDDDDbH"""""""" DD"WF K """" ???K""{%RA0!"""J6oJʎcQtm>DDDbHIIQ.êu"&&2d6mͨQ"tD*KpCDD$v pxb?+,,G;vĉHKKرc!7cnkѢΟ?/h gϞ*–-[.LpDpĈc DDX* xХuV]V6۹sgӨWRrJN.] ݻwǺu_:qTeiiiHKKJM&wAbbХQR9?-L0!"A@@d2) ̙3DZyf4kh___XǏƍdWmӧ_6ocÆ 8|06mڄ۷SN>ԩaÆaՈƍ7쪯e˖/"==~~]@@V^'Ob֭S]ǖd7nӑ˗믟'ۇ8p ~nݺ8EӚ5kl:>Pnذa=ZkB8r=y[ҩS'޽6mO?#%%Ek׮ؼy3?Ç7l>UdN_g5p և7q\  oBrxzzԝ*$$/_ƩSׯ_/MZZ;_={\KZZ[dee}2e >|cԯ_>|~١C0x`h24h]Yf?~=z`ȑ8s Μ9Ν; G&aȑ>|8> 5k222;wꫯR["==aQ?ή]лwo1ly-y뭷#G.]x$$$跱t~k^gرc  5kPB1feoiwww9rXΝѠA_{>µk׌3ϠQFF?:v_HNNFjj*PXXh'Ԅ <<<. ~ؾ};<~ 6vvv6Uf~ٲeP،=Zn۶mGApp0 `wSZ5,_+V0o(**B߾}ѤItfaqCCCar]͚5!ˍ>wNZ免7Zh"|P(G͛yyyFϟ-Ͽ9sΝ;???TV VX),,H[I&4iZh?5kքB0z/}c'NPTT6mڄR\}Ur<{MןlCDD[lsqt:uB~zL<(x)٥dٳgc`u|3g^6///|g8t-[fNVcڵطo\\;v?cy1|J_|EܺuAAAH$U59F1oV}??%b aĉwzɓ'mkov`g1$$ڵ]tuC4$!""W1p\Hvv6mۆ㫯Bǎ֭[x".^Lۆ`HcŊzQ7'Srssl2^z6~y<3&߼y* k/{'l:.ܸqhӦmd2ϟ7"%% ҅F%r|[CVV5j_֨Q#lIb=??˗޽{ :l7n@TqeO>zG\H۷Ϩ!󇆆BV#33aןʆ-h`CD"ݻvh֬ڴice<'shݺ5F>úuJ-_d f4nM65z=n8˨V \n_| 3аaC4o&MP}gǎL&Cݺuѽ{wZFrr2NW_}O<:v숥K1bxb,Y;vqnܸZ^{h\5[oMyM6aرhݺ5Zj{7oy>Ѿ}{EDD/**·~ &qԩ^yzG\___[Xvm:uꄞ={q7n~We o2a!""QPPhԫWyyyسgV^cT*ԨQC?5իW1g`d2ẩ/"ڵkаaCܹsF^^Mw6۷ǘ?><+WSO=e%!@\~wP<رc1dX/&Mƍ?Moaؿ~&*KǷݨ_.y饗$bڵH$سg/^lCVcܸq>}:&N7o"%%v HLLĖ-[pY|7hժ~}yDD.^ٔ ÇGFcܹuB^ Qؕ}~zrwH }}?^C馚,Y)9 Q5( ƹ4h7xo^ɩbcccaĉ>L&þ}0||&IMMŮ]LNa*|#ADDWZ5a k|i tapJ6dm ;t8DDT4Mj駟FjՐ:uwޘ6mC;wt9 ;-^͚5|hӦ u޽{_K!"fԨQ СC.RjР.\&M 77mڴ1Zo?~]ŋV-RRR+W ] Uq6Ą,X-Z(~I ) xxx-+,,Vk}cǢzx w}K,f̘+WF5ډH\гgOס={,jumѢlقPTDGGŋBQQQ˖-n:ʮϚ5kK/p$&&wwwL>ݻwD"]0k,`ܹ߿QQQ3f ÇK,A5 q!?l\L&;#D;-- iii?.S[ܿz^3c$%%cƌUХKܽ{'NDxx8ƍJyaҤI5kΝympssCBB?~:y%#662 ͵qڵ (111G˖-Qvm_ٰ  ٲe VXa~k׆T*E||~L&ʕ+8vq!ܹĥk׮Jعs~Yjj*Μ9֭[N:8z(&Nh,X(**B~ J' 55,YxP]xRRR_QFhѢN>ܹsu޽{d׵>B@||Yf!++K߅Z}֮5+V ,, 'O|XӧOh6lm. S?ÇÞ={зo_,Z O?E\\Νk׮鏑www>}yL.?FNNr,2oرcI.6M?qv.],~9 2C ѫW/FIR3f`̙Nחjo`„ h۶-1uREEE믿 .(>44b={bh۶-J5˗Px氰0DFF[nXf d2~ᅬvwСCѺuk|6 DJJ Ξ=>}`F]QGW^y111۷/rsspB;tPرcGhh7\KgZcرc __RM9~8c]:uT꼗0~ @ !!!3 =Oxyy^zNQJ% Ѿ}{K!""" NǏn߾|o߾';cǎoUPF ܽ{+%"g{gШQ# >Ժ]v᯿$''#55qqq(,,os],5vB޽Pׯ_7Z[o!!!GP<{||=Aڵk5k~[]VL#Gb1Qf͚  YlƖwkӦc_p[oaƌh4/7 ''ǮZ-_h48z(@߅@-պwnC0߿+WZx̙3 o;vvnWsm!""acŋYf 9+Uvv6qH$T*|׈­[pQT^8w|}}?hٲ% !** 6m2}WB.˗ [͛yyyV]/[ =Z~@DDoߎ⧟~9wPZ5i[{f֪U ^^^ظqcu!!!s&[t}maݟs/_+W"&&&MD"ի:%~"""Я_?d2dgg#..W\+8i8do۶ /0Z ׯZ {4fCDDbN7oAe|WfΜ7cƌApp0^^^v̙cr"r]!!!G׮]M7Ң-H) ~c[3{l,Xoر#:u:`лwoDDDzX|9on1,sN,[ 23{?L&H6:[ڒD]NCU6!֡պ"unSuFVTK :S$D# 9LH̝x>k6uͫs}߭#o>۾p*557NY(j4]Vk׮Ն 'h֬Yy* s04iR|{kf[תUjժ[o;vl |nI.GHH6mT`}~GsΕOΖGxT"Ņ6bccWgQllue5n6WYƍfIqUTNR~QuQ...BIIIv횞z)GIwUV}E]_{}i;4hSN:|͛߶SiOZZZQ^Vz6mjլY3]v&))IfYUVTG}|J q0RڷoqI޽{mD I ,len5jG -m6mGj]i'))Izgi&[W^yEiiiڿj֬zJ֭m_jx sUREAAA2erss駟wua=ѣ-{yգG͝;Wׯ_ו+WkUe˖^z-~ҝ%77W_}x UXXV^$Qj֬)٬&MիP&M y'tu-_\˗//իk:x`FUD8N)5%@^~e8q6Ima/_~qڹs&Np~6lh[N(4M}۟{99rD;w?խ[W׮]Ν;K=xEE(Jwy[vwS!Y/w ۻ|TY,ۛfmڴISN-/RׯŋTq_Q!PxzzjϞ=$]+)=#Bъ+_;A *~Mgvv@p+8+M˭2""#WW. 3nf-)-&Ea*PVT՝]{LffK]`Fn:Hpdddjժp(##e T>:~IMTfMB.''Giii.%t땣KB7(H)nTUV8ENN233ysxfP%yzQi"@N!##W`pR0SV?zQݭ|]ʣΣɆnG@y!~5g8܍ve޽ pPL+w:孬}훑7 *ĉnkQ/ʖo*G}| [Qp}TBe#"r߆#Yg"M(j#"!;xJi(##p3@Ï,tߌF]ATLPpZƝ^' $k߾}^^^RFqm.\x͙3GeZ͛/ؖCCCU^==LJlj%I/.U?.zf͚U-TТE _[:w\f믿͛5vXYF PuAw;c穧g}m۶ijѢmۆ ԲeKr&McǎuhںuT~R FT0{;1tP=S:t~w^zxbz &OsiРA[|||oڵkz74|uY>'GTRE/}9rDIII:umW_JIIѢETV"ѣ:{{=}U {fsIBRR222~[ i]T&8WWWL&LeO_`ťTZT&8D߿T\]K7MRFFFi5kLǏ/qTbӦMSpp$)==]k׮՘1cԬY3yyyŶ?UNUV͡c۷O?ԩڵk^e޽{I&e6iӦR 'p$y\~&Iu֕mݔ)Sk.EFFjR[o׾}j*;Tߌ3EEEٳk.EDD(66VSP܋J7YI[vwS!Y/wJq:#,,L!!!v5kІ O+++P>RSSeX]`ڳgO+IW$Jʱ{ϻ9o.nYvn^ηlo/Mp25gIRPPjk***ꎏc)11#qlEFF*22AjРvޭZj),,LK,+RF j:V\gJ@sW_}eR)TG`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8eEVPPjժU`5d8:`qA)88F%//2;UV-' $k߾}^^^RFqm.\x͙3GZ_hhիѣGq@p[xR Q~~>r  h}7oEs%8fYVN[ڶY,uѹs駟jݺu*Ij׮bbb4mڴbASݻWF',,L-[԰a+$$Ķ-;;[gΜш#:h:pN:ŋ[kWRnnnzȑ#JJJԩS b ;vLZpԴib60l/R>}Y5o\wxUV~o 3d2d2OKGӈ#tȑb61:sﯝ;w޲OwfΜi[~n#p*t]VcƌQf۶_xQիW׋/_:uRƍ qyN:VCm@#q .H\SLѮ]e˖Icd$:uJ3gԠA6mhǎk߾}Zjjʞ-lz뻩e}Lv֗ƻwmiii8Vޥ`͚5+`4X,.0 OOOٳ+r%ؽgʷ{Ye,u7/}W|"e>s8ќ9s$IAAAvMrr֮], egg+22R.s Y, r @q<<>^;vTFtI$ɤ`uE^^^ڻwÕtGTvÆ SF4|p㏶?6oެ>HaaaRݵ~͝;W5jԐ$ 8PڵӨQԫW/eeei޼yX,V?PUVM;wVlllT\\t颪U:BN%_j߾}JNNӕ;M}ĉuQ%&&jر^ZnjذT~}6oެUaÆw2=$//OSUn]СCڿ??:b痸]LURE&If,]~Iw)]~]z///EEEQFڸqc6.\P||̙Z/p'$-^TmBBB?*FBc-Zpx͛kѢEܹsNVoօ w)22R/B]tQӦM5rHرCԻwo ?ApGp*{J蝢ԬYS>}J*y뭷4}tM6MgΜ\:uҘ1ct%+55|N8bі-[[3glfYu!IZp<:qvޭe˖쓙Y`nݺrwwV8T^^ C*++K裏mSF I#z%{n7NzgS侉2LTRڵ|||TjU=˗lsmڴIGV @͘؉.\ ooo5ot4o\\~5jP۶m&>}Z#GTVVVƏQFi…X,:|=k׮9vR̹8¶ح Ydκl}ol} VS0V h֬Ye\IMMbqvaxzzjϞ=$]+)=>>0aڷo:+?%uYYYߝ]Cf͚U}^tI}Տ?X`}zﯫW1naXÛ-Zu}޽{kڼy"##?Id2Էo_,M㖢+::Z?.]&Mwފ֭[G/إbc瞳PuAw;S:뱭DͪW>|kmڴIcǎ{Ͼ}>Ӷm۴|b%0`VX!,IrwwեK"#]\ZRtto߮ne͑cI#>>^ח!!!Z|_n[W8;wNݺu+0vK.3f^z%Vjj$ij׮F^z)++K͓boٲ&L.]ٳVڵ޽{WC )3ghĈѣ4~x5h@xb͟?_~|IMСC+##Cnnnӧ&NG*11QcǎUպuk[֭Çu%-]T...ZtΞ=ӧO+..N͛7/b ;vLZpԴibGuqqoի_$CݻwWTTRRRty͞=[mڴ)󌏏סCEVZW^K/i۶m^ڵG`h PPP&LPd_wQ5bh˖-JKKӱctBё|r=jܸ$O>SZZ--qrk[n]nsuuաCl222~5lذ?.IRJuԔđ>~=j޼>=V(#vU~~~z甕%I_L&On殮癔bwttMVYׯ׌34n8]p}ok++ڷoVZ"ו_{מ={4}tUZU… ok֭O()m=7+Z6ٳ%IU>L:e˖ wr5jP۶ml2m޼Yݻwȑ#ms ݬW\ў={ȿA5?閹֭[`~x@ӟp+'[vwS!Y/w {* */B_~] pGRSS}|<pԞ={ZI")WR{ލyv|uYv˲[wrg{%28t+11٥P&pP:qR(8Tf{1 0#ȘuJnn: #p p p p p p p p p p p ~S_$ڲe-[T'W ڶmã{L=zqiӦM]vڵ7n,ZzVZ%I2L 3<~XIIIڽ{fϞt[?ر$)''Gbbb_*//O||}}\M4ђ%KK/ԩS ŋ5m4[ԭ[7]x@aÆ=zt۷W׮]ըQ#լYSΝO?sʀڶm?P&IuAIRӦMꫯu֚:uFUgz''(""BE~~~z$bhܹV>:uJ<˗o߾JNNrJEFFZj_zK?"##mjƍ6aaaZjN:UdfY#G%ոqc͝;WVvv|}}﯌ yyyi2L1c,Y"___uE...ںu iu~gSO_,0*ȑ#ϯ֭ׯK}v-^XC رcmgee8լYS󕜜EiС-[iӦ%3+Ws=~Z;v(r=zG/,g?OIW^{-YD/+=Zobccխ[7-ZH?W={:5gΜbo)ӧ,X` o'S͚5l?$iҥX,ѣ\\\4tP}駺rJ)""B܊ܯ_~O 7Tv8NֺukIRtt|}};觟~Rվ}{}zmHR```VZU"^+t?,ۄʅU.^k׮I_3fhzUF }%+I֭ӹsR5kԡCʂ|}}%I7fM8Q/^ŋn?΋CC=$b\UNIRJJJۯ]+WmfY= K7ɓ3ff̘뵚4i^}UիWm>.(!!7n qr… Oڵ 5j(11ѶwJHHЮ]4uTF[|RSSKԬӧO?;s˶gJ*`-ZH P|||@EAdpO[nUnnƌZjɓ5eIS``ٳgS//Ν;c jǎճgO=裪Sڷo/b@Eu7nN0=㊎ҬY3=ZӸqJ|$UNN W^yE:tЛo\8qB111-W_5x`=C:uꔶo߮y9q (.//OÇWձcG 0@999:u>S}N~ bn*d~];ez300p[ZZZ)NiF&L!Wjܸqڼy- Sb8 0<==gϞVHʕcws+e]ݲݼo^IO$*'1 {uY={T@@ׯ|l2Gʅ@._9shΜ9.8YBBB/H֭m_jBBBM cPpPim޼Y:̚5%P&pEwtt6oެgyF 45yd{zk.M0A$Ţ7|S:tP*Ukv$UVz7… )I2L V.]好{*<<\IIIz6nܨ6mGљ3g^-czhҤI:}$iÆ 3fv)IjҤ-Z~v+W*66оfN:][n-@*'pr[lR&LP.]tYEGGv S޽!C뭷T~}[={*IY""";jĈڸqծ];5JzRVV͛'bۧUV4i~}Go^~e]tIWժUKu VZiذaի222ʤ_Nr[֭[ÇҥKZt\\\tR={VOV\\7o.IP?^gV6m$X,mٲEiii:v8 飉'ѣJLLرcUzunVO||:-ZHjRz?&&FGٳg{)??_۷kaM/}9rDIII:u @y l6qǏ$UR:wwwIRe24}tK\]]!I:qvޭmٲEWݾTn]СC322~5lذza;~IPd+$ )i>/G^*Iӧ.]t< 0@O>t颈ڵKÇW*Ud2d6gkׯyLkP䨬,eggۖowdL&L&Sz0"'+jN/S r~7+00P_}U޽[wҥKrJ̙3W-lrL&6mիWvM5k-[HcOÆ Nűobhɒ% _L&ծ][~~~$OOOuU>>>Zx eddJOOך5k4f5mT#G*++K4e 6LruuՎ;4x`n2L[ ߵk"""ᡟYWNN$iƌz .(66U7֘1c#hĈ2eFHegg+..NgΜ@ D¶ح Ydκl}ol} ܖVHMMbqvaxzzjϞ=$]+)=>>RX75J6l͛^ْ9&MkРAݶ(ݵkWM}4qD=zT;vW֭[ꉏסCEVZW^h_~ۧdM>]رCN/8";;[|B5SA;T`d.I_L&O|I<<<$I'Nݻ-[hٻ(B㟹pKވ-;yLhouLO7x;F%ʎpisѩ񂑙,@+$@ L"2\3p竾^k=y~wռ/I뮻:siw}}}fϞ=أ<3o9lɾ3k֬oޚcC=fS=+"G΋/YK`/إQK.MtIYh:766+_J>c_?7ҥKTVV*-YzuVZc6 }744lmvn6… .u͜9GΝf6l>}zFÇCM޽`455Lw}Olո6u=zh}ݷ嬣䵳w>k>|x.s9<?om-֬Y뮻.FSYY>}d}I+޽{k׮9蠃R__W^y%˗/~{w}N;f^~L:uƵWC9$;C򕯤6wqGw+555[|w$]vY޲㩬\뮻._}z衜uYO?ϳr|N>}hѢ\wuyӣGq5jTjkk3}Yzu/Ιg/<ՙ6mZN;MLjc6eӦM˙g]v%fʗGM4)7>}z8-:l軩̮^xe3sO\tE?~|~ֵۤe6~Eϕ,ަ皗U?WװaæmƏCƍn)o;z(M-^8:ua@1z3f I$IC5_ѼVinV[ؿo kq?Geppw738%p =nP8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p '༅]tE;hYN}}}~gΜ95jT^y;ҥK7g+g1MMM|7tS>|C趫Wβe<$SNM=^{l߿dҤI6lX}|:ujgn93w,Z(sɸqڄ `S3om6SWW/E̙3sAm晹{ry~w>?:_fMu]?~|>я⟧YΝSYY8o#W~}޽2!C{iY+d9rd,Y /nk[`A2pm?(S9Mkw_M~$Ɲ;wn͔)SҥKx6}9c2uԖuoCPvu򗿜}'~{.÷gZ|y&Ns=7_vqnj9rq U!7k3tu?6O&$ISSS^xL2%?яZbPmZ>}zFfsWc91O?t{\uUyl{ _B9p җ3flΝ;{G n88#r%2wygƍ~8IO!K/477+tM3fL{v.œzlZCC:?iӦeСܹsV^:uDƍ_?l^{eС_1N> #9SYY+"guVf̘g933f̘TVV;Mիlٲ,Y$3g%\A9ӧy֏6ԩS8∌3&2dzx̜93_*ӣG-Zn}3p,]tJ`oy睹Z_{[}޽{;->ʕ+ؘW_}u>7dȐ,[,sɴirGl箿TTTCiY7iҤ/l#r7fժU57.#G̸q׿5cǎ{N8!Ǐɓ0;Cgr[o]wݕѣGo8`[p:Xs7n\ӼͰa68۷oFǷSNi󨪪j#<2wuWd9CөSwy[&eN7Y8{aol6hР\p9cOgܸqӧOFN8!}駟޲Q2dȐy9@1ַo$ɜ9sڬ?s)YEeررcOg0aB>$ym/| {,ves=m-]4s' /Gc=v7fܹI.]Y׭[$<#[| ^oO>lt}7ISOmz\2^{mN8unU1ӭ[}-g^96zSΝ^{'XqeС-wz7k\RΝSYYJ<~[`ͷ>7m6~{SL81VڬI{!CSÒZ'ӫWtA ' fڴi/w]<68w iN|r!1bDPK_RKnآc^:_}N<ĖK'ܹs#Ȓ%KrO?z<4޽{o|[T쪫ʗ̟?c.7+i|L81{no9r%-^8GNcccF+"|punݺeРA3fL1GΒ%KxǏO| _hY?񏓼vv;岣wTVVs\}gɒ%1cFǽ1VVVf]wM޽7h_?cƌid ,ت}PAmV뛟+YnMe5/7?^~usaÆMYݎ:a . ݻwoKf-/^N:u0zʌ3$Y!ɚVύnlhjh^NZrS׭ɦ܅wyg>wq:th뗦AY߳gs};h[ͫ{'fJ]]]z8 CSQQI&m~8∼=YgO>o={loK|ӟΜ9s#$IRQQ5kl(o,\彗_~9wuWΝÇgРA={f]Nk,y套^Zg={;̟ (I7SeSsOxڂ r=~S544dmg=& Կ$ɬY6ٳsᇷl-}Tkx` $s=3gΜL<94hPsTWWg޼y:uj^}Ֆ};~Hp6Snݒ$uuuܮUUU444i5kV:w%Tӭ[|̡ͩg- 2$ӦMԩS7so<g3X"=zH^/w={l9g>mM81>fsyߟo9Iӧh3}<裛!lyekxIo|L:ukآW^ȿ˿SYYN:ٮa>tfСC3w,X`mvm :ejժ$is.T驧ʽޛN:e9C;*;c;찌1"YbE-Z􆎯˖-˫~c-glȠAr_g˗6#F5\e˖mq\2=zhY^lY{t=+W̚5k2k֬ 4(K.3<_g 466fҤI={v~{Y|y͛{7-ʈ#һwq| :4;Cn<}sg<YfM>{7D*:h_j}se;˭lGկn~5lذ).{]vȰ7Ommmwy饗r5dҥ[ŋיxz3f I$IC5_ѼVinV[ko漿́-_<^{m^x9;zH-_<\sM~,^  |\uU= M8p 'Nie͚5=m=8\ z֬YP8g-uuu"XfM:z@uG4 YxqjjjҵkTWmk͚5Yr3oMNG}}_"mNSSSG`}!tmIDx3y;2455Q4}#།4:*xMSSKn'(KPUV9^WQQիWw0:2֦ׯ_̟?Q$ JϞ=;zż_yʎ&N(P5qSĽ9|MSSS/:s1I &7\Ν}-GuTviM̢E2iҤ?ΫGء-wsg\tE=9s$=PΝ=PSS=#IO~6cƌɳ>ѣG-3V8v)_ؘ1clmv +o 8o3t***RYYu[SSK.$555IK.$'x$ތw38#G}tt$YjU&N+"˗/osvaYbEƎuSN9%L̘1#7|x:ꨣ$'tRog;6';*l+lg{^$駟s9'{g{s9'w9v}~=$ś:{W]t>x1bDsI~6}OӼKI&[SS>z}ڵkux,Ye_ptL2;7%Tٳgecjjjps1{,v[N9t=^ziN:\yYtin\xҥK?92^zi)rJ;ӧgYlY{zyޗ$illߞŋ7r)Reee^{* .LSSg|nI&%IެXeM?OϮw2-1mTVt͚5I;Ip9Z+++볟lM v{֦>r&)`1hlllܰpyo9`MM;vuJD,YfQGNYbEdΜ9s{^~䪫ʫ1.]kYWWWڼyjժt%W^yz[re|6ݻͺ]v%˖-kg9uY駟>{CWQQƍ˦9qJ 8bzzPWUU*6է>6K,ܹs3v}ݛMuSN,]4C͈#Zޟ4iR&M/K/_WI?|/~1soL816~\ͺ~8{Wvi,Z(I2x̜9s6lX9~O7?p={Vsݬ/­:^UUU4[kZWKMx^Iիv=3` 0 zhN9oԽ{t%:uAKy晼K-gekvܹ7o^:TUU"}n^W\PcG?:yfv)_]v%_W3a„z뭩$/w;&LȠAؘ:+;s&Ln!#G|~˗gĈ馛jժ+W̍7ޘO>yswyYlY~/Ϙ1cr}mxݻw_gg>|3Yg}=1.oҿM{$y:uJ]]ݯ?NЙ6j{7-ٚ}Wzzڏv+TzTz>xI |̀6Gzׯ_ϟٟkT<\6-Ny{߻횚2gΜ,]tKm[=r}g?Y~l^{I嵈Y89pK)iM`󏳉*KV˗]b͚5ihhڱV\VâEZ`ۺ+ؘ>:}٤1WNoO2e%N^mS;?ɷ)Cvs-͉sV͖~]Us<8yMR8*U8^u>@__ Ɋ[›3\R3 Sy[\xyN9qTkCRl 6& 9oʕaèaTvmބB8O-LM>fTkOED&Q@l[i++xZRyI[L%i,Go.ع:SpZk&Anm 5i)zU62&b Z^RV,U#hM@\<{Û[DeY!NDunʦug eZSs$&bw[֤ƭJ 3nk=o]92 FWԎ xjk}qnj}zڐ78{CǗ go!N߳46`5M޶%iYs#_ Ugmɉ7;$i5եnD|>p8m[/UuZ[yS$i68G ޢ5N~RѾPl}!NO/YXgMR;5?,aĨ'?6"Qo6ek%hx1WpFgOӫYrݏ-Ә5x8\{}~vs$*7>)ϝSVU^sO3{HqF`DprS7'f a`6g$3?S1Y@ݨe&[a(x+ZC á]fvu;g> ݙʭ Aŕ2Lep<%=f|&8یAɌϴB탛ɁǓ {Lh{Cw{dp-x=:ɽ=x&) 0~=` lJu|'8C01o B8_pݝ,IENDB`extension-manager-0.6.3/po/screenshots/_26.png000066400000000000000000001354501477302130300212260ustar00rootroot00000000000000PNG  IHDRpA%bKGDIDATxw\u?Y`*nq\ȕiML:ȽDʙjmO+sŁ2~98y\}. y; (xO% DDDDDDDd; {`"?"""""""`By,'""""""'6)oFy{DDDDDDDeY tCQ#QyWÜnFDDDDDDDƕ eQ0b|b&4CY_DDDDDDDbQ]8HزvODDDDDDDia۰.{ )lQ$"""""""v[cz†>Y݄8bVIҼ6V E[4]!(I mXXX#u#Y!""""""Ƹ4)n#GNI›-l2ٖra^B%pGDDDDDDD%WTXcj9!OI 1 o, `lڈ~ ቩ0Pq(ub ;pa-k3$ݥ, rG4!K41ulI'""""""" X2e,ȱfKk71""""""XsZX]#VMM9U[""""""dfjSuL#M n,iS>DDDDDDDdsZʦ 3e"CaI [;Ga፩নuj9c*1ԘnaucFjb9%-xz _, r4&>E,:0L]XxcNpSx9lCDDDDDDd;-#9 q,JU.)NxSTpc*ıDDDDDDD啥S|k,$![@X3),1`pcuNaS1!""""""*¦ 7^ r qG!ƽ1Hg,5rqrADDDDDDD%˭d/Bxf2"VsK0~N"""""""[ܘ$m+187- oF.v îP t q̙ʰsj#/͋Yf,1MZ`?]XSXcl01|H,#)ۮ[#ag`gsYg :),Ynh jJ*}׾X'y e u}'7 |L=”ݣ n3pL7roׯ/WW!e2T*e"""""""h4Z{133_ /х7 qaNTxcFinRLn;s_~[OOϙUJ%T*j5ZQ{I2 r >OLL< tR㟖:ƺ^O(zqC֙R*chtMu261mtqd4k3999ɱm9::{Ν;7 y!ax[.8q@L80ޘR pdq p, o c88__%++ JҢ7DDDDDDDDVRZϯ012el<݂M "*آ S۔y87klkLh4LNDDDDDDDjT*RǧJrr 8Zu`ŶR*aSW6U딮ՍCzNbxCDDDDDD$bjJII] :\^56 7`S(c p򚙓Z \lIQTυ.HT D4cH@Z瑈ZFNNf84o8acIcK Zn+8Ta-p C])Ez{xx ʲ12 ^^^prrgLJppp#J%g#zA*͍ D"@*BP@P@R35Z gg)))7QE1ΈNi|c55vcӋ u܆p<muc\.e+dL&eRxy Mz#`d{q<o ㌍]:c2F*ʖuggg otr9.Hp ol2 BADT"* O6`乨uvA%\2c8L&ypI͞k'K "";Ddj5d2eڰ OPܩEꈡcšB/JR).[sD"qHlEOP@.h4T*(JXc"!V iɍ~Gހƀ鬠-]_jlܒ䪨} [?]DDM6B m۶"L&;|||ꪟ\CG7!+|||na t`*+0 zt]vYxݘ7R)el7t^vأ#FC૯QeDdB ٢E ,\fBnnnλqFԩSG:==ׯ_GLLZնm[̟?7oFLLMAD|rԫWժUCΝM Ν _J"*)]xM6x*Vnݺaȑ8p $ """J>]CK٪aA =V\N:1!*E-Z>+Q 4 ^}U4k 6Ę1cpƍT..nnnR.l,>>;v`Æ pvvO3j(ܺuK2uY\v +Wĉ'.b͛7ׇ7!!!x~۝;wqF:u 6lpСrݝJ&urrBVV5Z 8eI||| _xSDMj""<<HII)5"##DK_[oUf]zq r/}VžiZԮ]_~%~7DFFg$ٕ6mڔ/1tEDGG#44|A8bѱ_#-- @ٳgiӦ&Я;wVVU5`]"dcnbˮX1vX3Ƭ}׭[۸""*KRRRJXBٳxMl0zh .\իq}xyyaĈx7PB+} |'hݺ5$KІ  &… &wޘ8qb?hI$yHIIٳKt>"/ ˖-Kؾ}ծ9b >ܬ}ҝe˖ضmv܉k"55jge^{ pB;x BCC믗FYP( ~MXd >S@DDj׮۷o(I`N#Xdӈ)/$"ZjC͛޽{#>>qqqhٲ%>3HR7Ľ{p d2|:tfBnݐ/QFyqe˖HMM:%1j(tYYY>}:P3M5E5}[n!ݻ7͛7Ө]6ZjSN>D]v[ ^J|hժ6mڄi>Dhh(T*zɓ'돉EHH^uDGG# +Wƾ}_{2d4 >sv *G_ 99YcРAG h4Xbկyf0Gl!www]v1bUd CŊqUXQi Rim@?~)S 225k<|~i!YQ綂-g[k1v}кu됓ّ#G JѱcGܻw[lT^кuk}K5B߾}ѠAxyyA"PF 3gRte|2ׯl@^cUVAP`ڴigZ¤I_|>7]xSreT\>}:= Jڵk o-Z&ul޼999 yiXCZu2Y۟][nظqwߟ R[2ɚقhB8vTKFKtFGG!=Xz5ƍs8|>l9u;&99X|9ݻKƍd2(rPXԫW͚5C˖-eBza4i0gd2lݺ7\Dd*V/*Uү{W၇n oooOűm6Ї8ddd ::|dM۷oG׮]1rH:u@M4App0Zm(ELk4B[`Ũ^~̛Ubɒ%Ǔ'O =7HEGGG/$"'111Dpp0;7n@ѠaÆHKK{LF~ gϞD&_ZT*1cƠM6h֬=jTӦMQfM|pww 9M6N=7>ĤI I7@giضmZmA gesa8p 6l؀hOx^ytpttDjj*nݺ%tɂRTmgÛpҥKQjU|Mc#b~DD%dʍ72Sՙ3gFî]o> WƑ#GWWW,XPn|\~/^Dƍ~z\~oKMNNFbb"yr"I&aٲeUA.]j.D$N+VĊ++%''D1xnL*iY%22 @hhK!Vœ'Oネ7bѥ6(B:uڵk9sMxx8>s}M{S~kv;III/ Ы op+"*=iiixѦMw̚5j׋%K0l0:tVÇѹsg <w˗!HpE|x;ԩS_QNΝI&yJXd ƍucccQ~}dddkTL<j5k?L#fmx#V׮]ʕ+q !*Z88 *ֱ~mѣOdt^K.c/8F嬮UV_DDD]ٙkע~G8qUÛ6mg蘫m۶ H~zƍ )$b pI(zldddN8 YbYcоx.` |m? l3&!P-pJ 믡jѹsgàȑ#6Ў R0gΜ|!NY o믿 \ ٣/ӧOR̙3y)Ǝo_b6deeY=)j ػPETADz5J͛7?60đe*h۶-rss ]١D >\2HĞ憸8[&""" :T2 TZx8DvvE,7:'OD.\ʂF)vK """""""Xvv6J%\\\';;YYYm`CDdZ-$X%"bJʂ# r9ҼI5 T*J%rrrܔrLRA.T*% N@& ]FSNDDŠVq6)"=7ډ,cCDDDDN9slɢRs %j5g#"c pʹt qT*Ӆ.H4233Qj5233.J>@!Qx)$1qT*F 8::R5 rss򆈨 u*uϟ?g8Bdrrrᜈ c*""""""""cCDDDDDDD$r pD1!"""""""r9 Uff&222j.PP(BADDDD$ JR2Q.ggg0!"ͅ\^.TD"A2Q.H$H(Oy\\nT8D$zWDDDDD92)DDDDDDD

$%%?qazjj WH%Y=zGO.Ǯ899!<<\߅аa0o<_2t qqq|2Ν&MQVݻqxxx{dmۢk׮PXnn߾-tIDDeƮ]0vXܹϟǾ}oF?=z@BB͛?F>) L:pi|gpqqodCܽ{W gXccʔ)77|ÇD"App0n݊ӧZ-Z-$ j5ƌ쌍7_?y/LYb&OL2pttɓ'~d2ԨQjZRnшA7`СxQq]deerTR5kքT*իju'ҵZ*d2YV}-sƜz*իݛ={믿oooTP܎HT(|?wrrr#`Ey!Mvv6_Z2 pF/+VĔ)S //=z46n܈C Yrh4x *TUt>,E)-- K.Ŕ)SPJ˗ub'"D?5~楧nnn>;dzz:_~xK J!Jhlz-Kw(ɿ v؁Caոw꫒HDv[lA:ucԪU _`aΆ @0)v~xԩB#Zؼy3|}}MAC APPPi)8,!:u2Ozz:~G>cʳ ,_nµkװfT*""M6nݺ|2'O@&JLL4:8oaxb&)dw"33o7oބVE-,8Rƍ%K )) Q9oCU(B 6`ժUY"##,]TrDXxgϢO>F ﯊})2EP*hӦ ڷoo[VVN>E}[.q a4,\% "*233qy|x .]a5k֠W^ CQzuL8M6EttINNF-PJ8;;ӧODJ 6`ʔ) L&CJcfffbX`4i___7 k Çpwww} 4ȷ}#aÆHHHзy~eʕXre-v< 6/5PqybRxl2T*޽#FXn~?tɓ'OuVcȐ!W;[naڴiU @ **J~MV###Q~0gSԩV>|MCgZ*F.]`߾}ZEhҤ M&M =={%KXt)ڴi+W/ """"#a/ \8p nݺaӦMd0`8Aԯ_?ȑ#>|8$ErwwGjjuzpIdffBڵk5|>>>˗ѧO;3g΄/}DEEaŮHlTpvvfxCDJ.٬TUT͛7-n޽>طoGϞ=ͮ%66?#RSSѺukL>ϟ?o9tj֬;bԨQuOСCjvȐ!sϟ_w#z聐$&&"11:uX10$t DT999O0`݋SNoo[OO|׬Y; lƎ߶g  4k׮źu\G1|9sƬٳFUT rIIIuW\aCDDDDel}CDB0gυ о}{tm۶Ŗ-[0mڴ|Kt vZ`-[*zxw̪M_}N>5kۦVcǎaСѾ}{<{̢bJUIDDDD$ȎaϞ=4i;oޢ>>شiի N:'NDv B####_|R Ν:uQF:u* ''ȑ#!Pzut޽x7HgNdgg#445j@ff&9([RB ܾ} .Ν;:^&C]v?xoΝ;0aԩ\r4)))>|Xzz:ݫ߾h",]N­[~"""""Q+%;g׆H ӽ=d//uϞm۶KOO??"&"G]S(Rƶjժ{+V""""C8sL4j*g͋eCkнk+Zkl:K[]Ti4h4w$"""""=vЊ+аaC@||<&N(pEDDƍXre8҅7ШQ#Ç =K.E{ƌFg_pBlܸ?3oXz5ߏCY=#8"o>lڴ):Jڌ3DDDDDDDd?X(>>^毿ү79JYr """""""/ p,$7EuFv舓'Obx9E>|8W8q>DTv 6 zB~.T3AAA>|ХY  -[ 7\pSL ɁV[ dƍ/>r㣏>ªU憹sb8~8*TGGGNDԸqcڵ pejODDDDd p, oI&ek b .}|L .z u#55ٳgcժUPr9N>gϞٳgfCDdobcc+tDDDDDVGdvڅuY|\@@R)̙_'uΟ?78x Ξ=kt4iӦMC&M={`ɒ%ooo,]mڴ+W[tnL08u̙G@TT[1f8z\9yիWQn]4n  oW(3gtggg$%%aٸtwU ^ 3̙]B*Ø;wiQ/L0}t6l QFARk׮ A`` rssq,\YYYf]=== $&&~C-]芺@^+Ӵ4JXx~C*ZÇ&b%DDDTH.\|Er.] }ؚEMXX aÆaի@`ԩ3gJ%Νyټ."ӧƎ+̙3QQQ8pE;v,~mo߾ϟ?ǧ~pr3ܼy۷/ 00 ,@˖-T*6p@!88ݺuæM :@DFF}ǏGVGah޼9&L`RR%̜9È#0dԩS͚5m޼z‡~@L<u3~a4hPssGEǎڵkf""""ФI."++ [Mwy??6l؀ *ǥX)א!Cp̟?_N׽=z@HHN:jժf[&!$$F?>Ξ= ???cӧq᭷¨Q;w`…/DT6ξT*->ƒLnWDʕ+[ܽk4|%~… h߾=:t耶mb˖-6mcQ W`XlǞ)֭Cll,LӦM˷oa7j8}1 YhQ?|Ϝ9?PZbǎرcK޿g϶ND$$t$_?RoMQZ5}=deeEؿ}d2.]m۶AT"223d|99Ұgٳh߾YNff&RSSQn]XfuEzzE- ?LC*UvZԩcݻRzk]vָDDDD$blϝ;_zc"*[TRsE:uШQ#L:@^`ȑd^:wnj56n܈3fsΨVڷoիW=z4b Z 7n\ܻwj!>Qݻ# 6D-u*ʎ;0n84oM6'|;w}|I77?#&OzCxۭqɴZs*"""*1Pxx%Q9Ç c޽-ҥKq)ܺu ǫj׮] L9sww_>ƍaÆz:u*mۆǏMIOOǿo̜9+V7xa7Gvv6BCCQF dffȑ#o?|0j֬ w!99+W!HpX뗄Zĉ1{lL2GLL j#""]vдiS*nH ʞ;ȗym=K6Gjp!{,{l۶m&~~~EMDdz) E)WCeAxx8*V)S]JWX 8DDD3gH2xּX<kˆd؅ h֬ڵk4j{Ɓ.:!""]̜9UTÇǏ ]g"""*?qqq4_D]_411R.!!""""01-t DTYgϘ1c}v6lva<111V4}7裏J|S… HJJBRRjժUyL_*}lcx9 QPTxesejȑ#ѳgO۷Tk7i믿J'1t2U$""IE`CD6R.t/Ell5d2|ᇈ,k.Tj<}Ϟ=Dd* Ϟ=ӧOnҡC>|;v? ..111&ӧcx{{#** ؽ{7VowyGETe˖aΜ96mΜ9gb{tR8ooo|GLL bbb0f^z]_VĄϟ[o*U1k,1C ֭[ѬY3 oA!-- 0sLGڵW\s!b̘1 2YG=wߡcǎpssCJ^er 6 3f+W0|̛7ƍ3Xs߿)E_*;}8DDv۸|2Ο????߸zKʨQзo_ 4?8::G Abb"ѩSby1/_HMMŝ;wJ k[.FeǏo X5/9"?BEDd'rrr/;99iРÑ_*U\$xb3ȑ#cǎbt|R+WfyFYC)1@DDDI$rnn.ooo;} $)b]ٳg:UTAǎ=V/:CRZj "" v/̚5 ƍC߇JB@@~jժ R?MƱcp֭bN:ڵkCVݻ gR J KDDDDe"2ĉطo/^ L8p#GL&Cѽ{wAjꫯyֻ_~.~muɓq!dffѡC8;;{.]B~ﯟKLl/DDDDZhSNa{\8co6*$ iA*pxKfJy)Q;ZKߴR7NfifV(9j^*M%lYk<<<3]_3&ڸq>ѣGI Vx_/jʕ+5p@YF/_;cљ3guV͙3O'Lڶm"##m_<"P}9H[P]um*`];u1_];_ݶerLliiiX,F3ڼyMFê!TڹsHʱ[^ε[eWv~ݶ'Z,y}qyyyiŊ= J0 1( ={+Pp7v"M@e"`xP8d?O>#@E#FЗ_~|KLL<<<=D7hժUMLLBBBn+::{>ݼyb1AvuKYǁ 5h:EEEUjj*]\\Tf|ĨW^e>Ǎ`ի+֭[+tVx((!x%+T(I Ҟ={lR-iӦ|mRRR~z͝;W:-[퇄I&N 1z5}J?-[e˖J?/ਠק>xǁ<==%IK,ԦMԢEBkȐ!>Yf/~O|jzluӂ o>YF~{k׮2LKծ^zZbۧhh <ض߳gOmܸѶ裏^*Po^p u%^8u޽1 -[hܸqZv%)((H!!!ҥoyGiZ|Znm/զM=ܣ;vG۶mzjm۶MQQQjڴi<<<'А!CTF [}XXׯ'|R ,3|X~~~ۜVJd=///yapp6oެL}O~wʕ+:y$… Flf͚oop'N(//O~~~j\233}O'''{_Ju:OԸqcZhVZ_$]|Y}(٬M/y.\%K\W^NG/.5TnԲeK_҆ !Iڷo:tZj6zijӧ.|8U$Iкu{WzliQFUVιg=jԨ6l'|c{G5jf6o\g^P˖-?0_I;v(""6Ypy۷~W%$$+WjZf._wyV3gh֭3gu(߸q>ѣGI ;n„ ?m۶)22V^(O|} \9p(%%E}]8bdRƍ7e=Zr폣X~yZJ 1bD9sz-*%%Eqqq׽O?)""Bnnnڵk^|E7:XZ/C]{וf 0̓KEIOO{.]<{-p?#n뷠z'rT1&v}bvm]l/S[hhv…5k ~/+++P1dX= 5jH{ּyM bs;wwwܹ_yIW$حsn-yvu_v+v?n^OBxǁΝ+I g$''kݺu}:q b={T{7T_8|s4Tf͚YfJHHP J97mرEO6'wS 8H:uɓ'Zrbcc=,U@xxTi8=s(%>#`p8Qק@F`pL` p&СCmܸQVҦMԷo_m߾]rvk:3٬QFiJLLܹsib?{*66V>>>ZjiڵkvޭSVZh7N}vޭe˖@!DF$jѢ|}}%IC ?Ow޺p"""ly+88X=-Z$l>|z!^P֭5bĈ|c ĉզMeggkСs@5W&qq}(<<\v$͚5KǏ/B$mذAzKE!˗%IYYYʲm׬YSv\]]lٲ5nX)))}jڵڱc6mڤQzСCvRݺuK[}FF+zoD7='''#<ӧOx޽{վ}{uAZtƎ"˳mzn9p HJJŋyW_}U˗/W%4͹sԲeK۱-[Tzz+rJ'p r>C曺|<͛O>zW$5qzzݫug}fcժUzo)77WbccuI@788PE̝;WfYǏN<7/]CYfЗ_~ ###ŋI_~fΜKp~ w+Mckgݷ.kֵ{@@v^ p3HKKbq0Tž!zڹsHʱ[^ε[eWv~ݶJS_j́`p8G`@>9;zY, 6LjРAkJMMuQ :TAAAׅ7㣨(yxx\\\(oo_fr;?(q@IRPPc+PTTZhM6kkܹή񅄄I&;vl8\WT%8)IZdI+//O|A c)ihPU@֭K|/^ݻf 6L=\]]m6[bQhhڵk'///:uJ~>3I="Iԩbcc5}"P3#޽[)Jhhڴi#G?Tpp.;;[Ǐ׫K.K.0aۧGjɒ%ruu`E(Pp(WԡC$IӦMS>}lǬX¶h"KZ*2)K@EPP9p(ooofυS^==-ܢVZE[6a rqqddRnnuZt+͟?_NҬY,m7#5m@uBSE?~\yyyӏ?x]nsvv.u1,D8p-**##C֭SXX”~Ϝ9ڵk멧W_}~X-[Կo1OV>}ԨQ#;wDme䐆Pp(%%E}]8)ShъTvvuqIѣGkСzW?hǎگ_^ro'phܹ@yzzMrr֭[ !DPh<q,!LA] O >$nǸY~/7? nr% &n?CrnK/JTFH@XS8B\p•GDӺysvZZ, 2M>$ )?/YM$CU yYJz%! F 8 h8G`p8G`p8G`p8G`p8G`p8G`pΎ@ufX4l0A߯Ç+55AF84tP]Hထ(ZjG>>>U  $iϞ=rEEEEڴiS6)))Z~ΝJ/qssȑ#ս{wըQCteWFFG*!q OOOIҒ%KJ&88Xyyy*hdEE7|#'''kN}}ݧA(78кuŋ{8111Z~v-Z~Sxx'I2L R=ݻw+<<\III7t=@U7rHhBFҷ~k+oe{ ɓ8JU sdv-OgϞzԻwoݻWS:u$IC QN4f=eX*lͮVZ޽7V~գGլY#PTq~٣d͘1Ciiiڵ\\\4`:|N8qƩvj׮ wܡ5jo)-[f͚;*qd2j$77W{QӦMոqc9;;Lݻ?:"{S%@uBS\rE.]R5d2d6gee`|G˗վ}Bi׮.]~J#XjJ?|(L&jJGa7LǫgϞ ]vٳt%@UW޽{OM6mRvv֮]0:uBBB }ݧ3gjڵp5k,@UB@)))R$%'';vhȑԞ={lIҔ)S4rHEDDY;vаaJ4PeddhРA UϞ=իW/IҥKb }p(T%5fqTdWn] ط?dκo]WWk饸2]pa?&&F+WT\\\x_4Y,rkΝK")n{u;nɳ[ۗ]ٵyv{ܟ ;w$)00P%ju)**".]knPp(;;[tP* *(<`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`pΎ@ufX4l0A߯Ç+55AF84tP]Hထ#  $iϞ=rEEEEڴiS6)))Z~ΝJ/p $-YTm>FZn]c}}}xbu޽_/7o}W$O>Q=ԪU+=Z;v$_O><<|X/^,Er~ w+Mckgݷ.kֵ{@@TBCC\ .ԬYyD&--M ];wt^I9vܫ۹vKbݗݾʮϳ۶WPYiK'phܹ@yzzMrr֭[0Vdd"##=``Lb `p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8Gj֬YlYll^z!<<\-~at+ҪU\nkŊrrr*Vbbr;'T&ƍh+kذ6lhOLL_|a護*l˖-+o`rJm6ZÊT>wuڶm[`\Pٜ=H&LP l 6T\\$W^:u$K'NTΝ2Λ|!T,矎F̚5<{o6_y&M .9XÛ֭[z>)kڲe"##umIL&8}ꤿ^)zNK.=ܣ+66V۶m{ァzzaXKڱcԭ[7[AAA Q.]7x2빭Dj׮XKF͛7kܸqruu9p@}Gھ}/_^8֊+d6%IڰazQ=,u5FW|||}e$մiS+ue[Yih8t)+7e=z(,,LO?+--M4duIcƌѳ>,͟?_־M68qz術'O*&&F 6Thh/ooo >1l?~\xM0A͚5$-YD ,ƍh]~fM:U%I6m_~ֈ#*:5i$j޽:ujkY,ժU+b l-Z$gggO4tP>|XÒ\wac["""]W_զM {I~ݏL[c:hW-\0߼7N:Uhx ٷl֠A;JNNֆ ) 0@>'Nhܸq]ڵkg>uY-]TNNNZtN>^E}XBGщ'h"%%%UVE$Jү^uծ]['IrssS޽T>}ZgV*:ׯ_(55U/V ԤIB駟-:uW`;hȐ!j۶5qB*u6F///Y,mݺU:rWJ{,X|e˖(>>^ם~kPǁ*mƍX233w^q/HjԨ┤zGnկ__j*9 S~{)uMYYYMd2iƌ{,77JΤ$effycbb4}Bwڥ 6h̙?~RRR =,m?})!!AںuV^ve=v?.\+Vh*ǁBBB$pe{RPԩ#鯹E\F2L2͵gee'jҥꫯ4|:u\&-i?5k~)22Rl0@gϞ᱔f<׺ĉ2LtRǕcGO?QF]צGLL֭[m޼~kPQxs]Ǖ/2Ljժ9RGr}/(tgsǂJoRR|M=Wedd( l)o͚5SPP"""4vX[ge4~x}=jڵz]17"13gH$Nnݔd۷Y-yf;V͚5ꪌ ]Vaaajժׯ1c(55U}c *s3gΨvzꩧT^==cLN>-???5jKAej튊ĉu+''G C=$ɤ u{]$... D&Nh}Gڷo^}U[k^z)///լYS233uܹ뎭cTT^z%;voStt6mj+k׮-Z$www[O#IRxxt6mH*uשSG;vԲe˴e[G-t=?^;w,$umvE77QumPN균z'rT1&v}bvm]l/4:>}駊wPV];wt^I9vܫ۹vKbݗݾʮϳ۶Wm.9xU7o'N8z( T9/~W޽C\J1ͺ5x|fƬR\_'p p p p p p p p p p p ԫWOS۶mմiSIұcǴuV-[Liii!pر&L 77|w}n=?~6o\;uꤞ={e˖rssիWkժU$ɤ o^͛7WRR4{ledd W׮]%I999O?Tzw|{~ZGUxxΜ9ӧ}GԫW/9s&_;رcwY={T-Tn]:uJ}͛oT8бcGM:U&I_bbb~IRVsϩ]v6mƌSg„ z4gEDDbG.\$Y,͛7OjҜ9stQy2d/_*99ʕ+Zj^{5jT\\:vM6ڄjժU:zh4=zuA͵-[j޼y:x𠲳-???effp q0M0A&I3gTttգG999i۶m9r &h׮]:w\}?zSO{*СCgy˗%I'N%Kh7n,?ujРAZ`xb1B|rrrԦMjժ`fʕ֭~aر飻K}UVVɓ'܌y믿Vtt|IYFcǎ믿8K/7|ڵk_~%{Ȑ!;wn 0@ .7VYYY3gu릺u~׮][*IZt,#'''1B~Ο?_X7xC...7h ͙3'_x@UG`ڵ$[o;uY;wƍێbY4i?Svmyzzov풓mB4h@gΜŋ%I/_̙35d=S>b+I}N:֭[oU(QT8-I:pyf:sΜ97|u^o~ov999FIRSS xΟ?/OOfn >\K.W_~SXXfΜbk5i$=sjҤuuzm\VVbbm?~|͂*ߔI :aÆֻN::qℭJLLO?iӦ)66d˗+--_:v>c՝f͚U0[l222Ԯ];k͚5ݻ&OpCk׮UHHڶm .hٲe%?ց'o߾jѢ6m{6rtt.\>HfϞ-www-X"/P?vء'|2_y\\vء?X]wݥFs+[ܬ=.--MǏ״iorjرj۶rss5~b?mgQ.]+ʕ+_+ג{9 2DÆ ߮Gm6_YnnF޽{k׮|^{MM6Uկ_?y{{kĈu*""Bqqqڵ^}UmڴvȐ!ԩƌg}VYYY?,M4IڻwNZ^^^zշo_={V ,P͚5Ku *9R>233˥_MɩL>3}ZgV$X,mݺU:r'  w}W։'4n8ծ][ڵg:pRSSxb5h@M4)t:|N77W<=z(""B?F5jd2l6+77&++K/_.֠m/I...2L2L 8XasVz`df\ PK+5P!\Rr "8l3Cg ;8|<=s>/ƣy9|~_K_Rzꩌ7.IisDEEnO\}yW/?q9$I^ҩSL81uuuyc%y"'|r婧ܹs޽{:蠖L0!3g̫k6m]vy5~u~-_ wccc~gޘcc=f]/~\y9rd^~z?\Nk}:Nܷ_paOμyVy1vZ>樣W\|0_ӥKTVV*-YlY.]c65}744m7vknܹs.U8͘1GΝW /d2d6mZFCN^ϦMd̞{~zƵѣG-7fm1֦fuVO߾}3t\q9sV#FSYYv!{GgϞ+]vkYxq~s͞{m67ꫯfʔ)5ui:([ouN;c_=cΚ$3tЖWOeee.\c嬳ZlY>m?ϒ%Ko}+;C͛믿>?xz;,#FHmmm̙>;˖-K\r%93sW:SN͗u:MjmeSN͙g>?p/=j„ G>76mZm1VgMMeeevqǼK-ۯ<3f&7pC/رcswXεa6zEϕ,ަUo>Wss!CL[Cƌo9zkG6SN= (FϞ=3}AI$iHs?7z4z4/rZ[yϭ_7~&J7rj_o,nٛ[v"3wO<8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p;_I&e[N;-_|qmg̘g?Y?aUsYgCjkk۬y3}3m]nԩSsnz칉?ܹsf̘޽{oc[466SNI̘1^gs9g|5jTu Iɓ'3Heee[^?CӣG|Cǖx`?yfΜ#F^K^g…Y`KeN!Դ{7̇>nlٲ,Zͣ>I2eʔ#kپo߾Ʉ 2dȐ6:3eʔirg֬Y7o^fΜ1cƴ AꙁS7w+ȷs1Ylgܹygr'H 4(w_\pmf|M7ݔt%y{2wu:֘1cr=N߾}3k֬\tEsG~w|\p?~7f}_nݺeҤI9DflnȰaָ]NRSSQUUɓs,ΤIk׮s=${ҵk<#yGSOkɰaw{<`\p9ꨣse̘1a2bĈxݻw8㌖GA3 '2s \wukZۻꮍ6sI'ew^6{l&Oя~)SHEEEt/SLɲe2eʔӨ<<ihhȲe2lذ 'n-_|q>qv[x̛7/GNEEEF{.sɸq~%yw\.'ӬsΩ\YNadٲe>;ݻwߠ}4F5hРL8ekGy$Çς xↆ|A=ijjIp 9.]駟nڽޛ:*SLiY{f>ew;/~c=r]w%I. :t?ŋ3~{k6d?(S 9+"^ec=ͺiӦ!O>d^vo}3ls$7YdI|_ٳSYYw1/F}K.$g}vF˗gܸqyg7jPo{WZ\rm*[yQs?7?2dPSN= (FϞ=3}AI$iHs?7z4z4/rZ[yϭm&* 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@Uw?[ou? <8}I̙3''N̍7ޘw 矟6wmn92rOZ}^|?$ijjK/ɓ'G?QK jMkӦM۬8p`9眳c566˓O>:O=TvuwqijjZ帻[n| _{RΝs#ܹs7q`mvaKSYY;cƌ?$s=sI'堃e]o|qn5*UUUu]o}+]tQN?Uia}}ԩS3xt9˖-kX:uJ߾}O~2cƌ}v?ycr)kk#Nfmr秲2W^ye:L>=ϴirgfԨQ矟w]e˖eѢEY`Af̘K/4 h3ӧy֏6ԩS;찌5*4hj5̘1#rW[VzѲݼy 5;s,\p^J`}ݹ[_wukZ{޽{? >ޒ%Kؘ˗ Ee̙:uj;uz 7ܐtA-&L>}doarM7eҥ53&ÇϘ1cr}e}s'fر4iR~f뭷nyOUUU8~{2rȍl Nkcƌiqk4o3dȐ>NEEEz#FdرmNԩSjjj<ڼ=ܓ$4iR>ti]lYz꩖2'I}}}ƌfN^r!䦛njw?2ƕ 0 \pA:$'qƥ}mOd޼y=zt***2zr'?.l>ln.bڻS̘1#Iҿ~?Leeen466͘1cr嗯vtP2s_O?~:>'Nln…SN9%]tQ<s1Ƹ6fJtҥͺnݺ%y#UUUo63p:Xcn{&IyuCCC-[%Kˉ'ʭDu{キeK~r!4Ν;_~yWym̘1رc$w\˺.8Oq^;}9䐖ӎ?)wRYY}sy'V; dkXYYw1zZ/\rI|5%=O*:h^j}se;˭lG՛osȐ!Wwr! .H}}…9rd˭-өSgϞ>}$ 4$Y͟[=Z=j9֭?d__oBU;Gyd? <8}ISSSy΍7޸Q3o/ Z~ӟ?iG(kN(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'Pt5վ"`ZbE,Y 6N*[mpl6޽{v횺444t9j% VV[mVjjj-U]]P8]v-{pZ1F(P8p.铁O>֭[/^9s3<! PYYO~0`@[mU{޹swF S89,_<'N?3O"&LXvay޷뮻r1䩧C=$g>3go[*YbŦ@ԧOxsfܹ-꫹{2k֬ :4 #<^S=yڬk3{+}*S%s|ĉě֞}L8몡!˖-khQ;8o߾I~x=#9C[V>e}7O뮙9sf&M 0 k3{L2%˗/o_|H^r]wDPg=u-IRWW_]WUUKCCC~8;w^֭[nTVV3iҤm Sfʔ)k\[OYOzz葞={W_]v[mUc={f /X;wv-rK$ӦM>6gڴiy'{[CYOg{}'sjw}$sY?裙2e EϞ=SQQnSYYN:ٮa<tg3k֬<쳫lN;e-wK&I8ۏPgy&:uꔡC6ll69C2lذTWW_ϼyUVE|-iTTTd9Cs衇ŋS[[aÆk͢E68,Y=z,/Z({w%KdŊy3`,\0?|jkkSSS_~y< ؘ &GӧOt=/ٳsg޼y6lXz"Σ>g뭷Νwޙz*;s9昼 ~/YbE>{C=$HE+Zo~lg6׼z͟{2dr{~2S[[C~w^y\{Yp&=ΰ:U.<[={f郒,HҐdE7nlhjh^NZrS[ko\g3ZxqKnrI'u!g3[xq=rx:#$'|r׿{{=:ԧ:*l*n3pskIqm^;s뮻,9sry罕Cl7tM4iR⊖ҳg\z饹뮻2iҤ\yy׻ղN:)~{?e̘1a>|pw]&IzQF;̯S;̧?L0!I?oMMM<ȵnwGk׮my駳`uw_gu:v߾}[.2СCW{=&ljoSV[%I_צ&sQGw=?rwSOMseOUW] 殻E].]serꩧϋ/w1/b:uj?رc3bĈ 80]vY8,Y$0`@M.-׼9檫J׮].d̙-{ꕗ_~Ͷ/ruݻgѢEk<#RUUnݺeWymc 8a'$})SdŊyG3mڴ<#YhQo>$Iccc̟???r-TYY/UUU;wnڟ?;S&L$믷9'?I^x^LxCnL뢺:m3]bENRO9䐖6g?>}lclIZ8"k,;z-nZԔѣG(k%`6GqD8455em믿$9sf.䒜q &W_}u/_1vat%_}˺vfϞKK.ꪫVݒ%Kͺ_|1zjnϢEZY:_W,WWW3gɎ %yUTTqeS5qJ 8bzךV]ͳ*է?6 ,ȬY2z{뵯uSO?,\0ΰaZ^0aB&L}K.+_WI/b>7V}}}Ə}skm,Yf?~emͼy$̌3ָ!CO&s]/袍:^UUU4[kZ-KMkx^=[=7?de^v׿5gҿ?|pN=o7Խ{t%:uS+-3w^{l;k̞֬=;guVRQQ޽{oq+l (y'h/bR[[v)zj~_x***/yͫ:˖-{,I$oH;?\ 8l^ikLם:uZ~;ٳ7p8fĉ6mZn֌;d~|K_ʸqr.cǎM{ތ7. Hccc:lv7n\n >-/ΰar7gҥ-,Yn)rjsyeѢE[sWdԨQyxݻ裏G=zlcl)oҷou~.$y饗6:uJ]]ݯMXLuFכ٘}W,W&jn}cnVԙGr'sY5m*IrԦZkjj̙3pMz n6MW՜zޟgO~{s&Y7"NCG9+89p6K)8k^o&OZꫯ^+VaczXdI[ok~ UW]ya=?2~z*]t /pyYSV3+[[l)t9g]뫛SrJUY85=zx⍺,zRQQ,\p?|A웕UNK$k}{wGr#) 2E M(ΜkGer"ez#D鞩y@_1_U.:q^L߄oooɲ]\\uz{{KDӆG2MwKS{m"?777?i<g9*oi)L ]vDƵ}g>ЪGԇ^}??՟^?ZU{u|y߷$hUWٳgŋxeӧO}".CZ>kCFď}ρS lypΊ<8x:?yD<˷oիWyJs7oć}MnV{el|/_ aM p@'} *ImQiZv3c'2U&dƵrY<.2XILWڔr˶,uYV2Cˇ(ii=t| X2UJUF6>`'m&}ORwiE<#9' 6oM嘤 r&bSI󪚲NRtxU&=PjДaNYSVVNoNN2e%N^mS;>ɷ)CMe t9ojYfJvU<8yMR8*<W:O~`XMɊ&/7kINC"+Lmr1DQ^jlz`o00So˰aaTvm 2ZR|k8ԘaR]ˆ7?|*"bL]?*meO׽(8r`&ߞt,VbgĜ*PNWIBkmCU6C7eTMD8~C!KY%W˗<"XFegnxsQYV1\ulʦ}t3iLu6M7m8c'8tMjuS z8fۆ}U7͜3 ©髺 hƆ4Q}~S;7ęZ`1Ծg0'}46`1M6%3fߐL~UJk8cNNSB!{ o" qƞw(i=̭r޽i-s?k }2 <8~sνWsg*Tls Fc'䳷K!TLN3Z 9Ǟoq=`]l4DD>)mfXUy]Cmok1X"8M7N»֬B[*pi:I-̰rW:baW;sŚ~ݚA71|cx_Њ])$H-Š{Bc{`nc< mrr3;&9pԞQ6S4NL`S`<}@;N6) ,`=y 1LaWڥIENDB`extension-manager-0.6.3/po/screenshots/_27.png000066400000000000000000001273321477302130300212270ustar00rootroot00000000000000PNG  IHDRpA%bKGDIDATxwtWZE%% WċBE ^@Ec""^( S/x/C\xu%K\LtdĴM3ڤI㜞$ηijC H`P6x@x@0QAsVM,j @5P՘@&59PU0:תeSB|@U0;5:wxc,g7/-xxXYr$h!N oowqX],wT4+U p*"፧়ǟPS:ŷfLp@3qиZW:q:T6T)]1ǥoBo 'Oޔ]l|ktoy*Ϫd\/BuwX97/~F>&ҁU[xT& V8x8/%1X|y9q eUٰtMUεxJ<|uuW댥5 0/Jݷ7X'床lUT`ݭ7፩ԭAgIeF>[auH*d֙㶳 go΁OyR0NQו}yDdx))e˖Wjk2F#o0jX,9EEEؽ{g u&̱7H%AMys2/ݧ\ue:CGӲ-[vUք󋋋e6eXd j`0d2)""B***:pԩv|ʢ?Zzj<\-+OjEc\^7)WJǤ!N_lRRRBEGG+::Z999omٲ qtfT~#]T'96΃\zs{竸ا'bl6+>>eJJJ~:H3W]\[qyõ p}KoS۔Qgƿ⋟'՗@l6+..Qrrr#G|3!Ny-f홀`ŁR%aO(8%_mt){Q-Z^n70ŢĖ111?~|Jvq*=谧)]=4qЅ,T^M\}#JOn]v X,EDK ٬>}:إ!)::ZQQQ22Bo l6V@سX,*,,Tڵ'HBgfg}ŝC_WBjPiҳNkػNEhѢ{RR?jd2vڊQ(Ϙn4h3;phTBB ѨHEFFl6 @XX,K~}r?0'™nSD˛By]:Q muJDD]2e2Uxpd22Ҋ_R'Oԇ~E܁gy1ɓ qWf,ի~i}A L&=裺뮻J,OMMu]뮻N+VPzzzcKbb}mCTi p*{ZѠAtwO:utwj^ Pe\O?]b/\'OO< wj޼qNN~g-Y$`֭~i-^XK, 9`jѢ5jk?22RO=y}A@eÛ-\P֭ѣGu9nнޫ}`0hʔ)U^հݞ=fnnnekN)h0(\ZTMCxboƍSϞ=]ӲeK͜9S\s P\7v_~}J8gjꢋ._֭[ЯZCKBBU\\~8;vhǎ+Wj޼yGs}i,36oެ~I3gԧ~ru :T۷ow;xϟ/RS>}T&I111~?nLL Zg%ߤP,I%Ov-I[n@jZRRVZUVMbb?^s+''GAӦMӥ^?O&w?kѢc_5ӧ|f .+JDXӧ$i…%g۷oעE4l0u]Unׯ_^~i:uJҙO>ڷo_?kN¢' p ]+dY/z饗Pf݈#Zb9h 8ЫmC;iǎ|rZJsQvvߎ{e%\"IZn֭[aÆK/BVddE]SG$M2E\p8Pc27!O pFZ f͚ꫯ$mݺU4i$[;vPff:vg}VFQ+ta}2L뮻4`1x p :~o߮6mڔ8'|"I%TuQَ@2>S7n=Zcu֕hԊ+dĤqe˖jҤzʄJxcgokqy@]$yn_-UD6 ƍÇմiSM:U/.=zTǏԱ]=< "UzOMΝ+Iw?HBڵkK<^x6mڤ .@:uҗ_~g}Vҙ&W]u6lAZl:u꤅ aÆҥ4l0fKGvqF :T^z-Z ;UQ7x/ժ{@ _~YGq|5vXu]Æ $YV͘1_x$'g1b* 4/2!;;[))):str;sWPhtט1cMJ裏z <J nU+ SΝB1r e6lhT=ta-]TԸqcIRΝ-eSPiF~Zjڵk`0())IԤIIҷ~+,LW~7ٳG-[T\\:v(LYf)22R?YN4j(I/L Û;OwLq?l\ Lx룏> H/VaaZfy7l6~62u]nA/woѱ=3*,,t<.**Dl!dBP pByI=lҹh"Irap0{l(55Um۶յ^;–/RKs5lPӧOÇ5m4z7ۘL&I8ƍբE ]|رrrr]-Zh5jRRR4qDL&zw>v9_V=\%%%)++K믫N:z} +bq!բEoؼW?XB]w^}.2n׮,V=JU AVۖ2zոqcǘ7Ncĉn pBԢE#| @8Yd5x`}_eZպuk:uL6m(**J_}6o,?L;uꤌ eƍzԥK]|}մiSJLLT\\6lؠ VJG>}z&++KFr7ҙM: C9X,ĸ4+_l٢+Vo߾7o-Z_Gչ瞫oQVtt`TfV>#;v$iڴi:s9wlG|֭T_/3U}ڱcڴi[nEW;C[oUgֆ x=3:|$馛n$]x%f!矵}vmVuW9#G{n]?5j^z%5kLҙAM.B9眣3fsu,;r/$/zq+_e0ԧO 6L`t %''k2dHj8͛7O? &8Zی;V=멻cýPp*o-lǿ 7ǏWݺuհaC~9袋$ @9u򗿨K..z'v%Khԩ{h֬Yҵ^~СCڳg o߮e˖[n_/R7o8SO=QFC2:u^7nT˖-[ó5zhM2E6MO<o&'&T O9s>`Tbє)Sn:W:tPݺuuI}wZb߯ 5o޼CPĸeKh={Yv -og&Ƽ)-acMPjcC퍥ۿLgo#޷֭[f&1pJJJJ*/**J#GT޽U^=ߵf*..p 7Ժuk{~7tSj uK,QÆ u.Sdd$)::Z#Fٳ{ W\]vUUbyƍոqc]{?v o׵^q;ͦH >\5?\@`~W "ͦiӦ֭[5l0effX޷o_/ѝwe4uiDz_k׮UFFF۬^Z˗/׿/_CTTvء=zh~7n\~={/RsVDkQYnGk.ڵKdt? &(;;;eW\AI+}:pF5k={M61b^yܹ3AΝ%I=~r3 {lQ`ݻ$/m>۷ʕ+ջwo 6L7ȑ#>xpMz2 9x`uECu x J_ @C;wtqC\["77WVHg{Īnݺ߿$_Ν;շo_5jHcǎΝ;k.vmt}i„ *((rUd2)11Qmx#pӹsgh̙:qD "I^7ҙ51}9)((bQnnn ݫoFÇw]fϞN:)---*ƎnI7t}`Vbbb4vXG*gs&M+2OϞ=LٳGO=ڵkh66Mk֬?wխ[7]wuX,;w8Xz|AZJ[n;C.L4d=C馛k.M4ɱ Vy۔{Li&=쳊s7L=z6nܨZ?|s^Z{֒%Ke]q=V^[jʕjӦ ui˖-3gK˹;?۵~zG+,޽{ueiҥJNNV:utRu)(1B{Nz{iʔ).'lԮ][EEE%IEEE7oi޼yjҤ4hPZ2o^ҙ+8lKSSM0AǏWBBcY-.]J3uֿ/]+ĉ?Y7o̙3{=je86OYfu뭷/1cƨ[nzջwJ \Ohڵӧ;]j„ ѣ85kӐ!CtmQF=zw=o>=CzjM2EM6s^۷O-ZҥKtRjJԽ[̜9Sfv .qm۶P,55UǏ<>Hof͚H=쳊̙37|3VɤdY,ojѢ݇>DDDiӦ=zԤI 2DFQo2335a3&إFnZ˖-筷Ҏ;tqedd(%%EM4ԧO͚5KǏב#G4c Ѻ{Oh:t萞{W^իgϞ/]Vv `0h:x~ZѢ<o~AܹsuС;r qZlÇ:<37a T3FuQ:u4x`-X@W\q(_׸qjT6M6MAE͐!C4| 0@'%W)ժ'N^z:KLZڮ]ӡfeeUU!ԩS6mƌ H٣_o \ J:uYPCHeGEEh4h4j\p}&..N+W|ٳgz*S"0Ky1o5ke˖-7o$9B› U<裎A{`J7xbխ[ޔֿuڵ* :,!\sMvlcߧ&ӵ~OzWe6]… ujϞ=ׯN8!ݻ]ebN:ɓ'kʔ)%%,//O[n_W8qB;w,W_}UzFƍq9rڷoEy}#G/W 6'OTÆ e0d65o<3F]vdRci͚5zgԮ];խ[WÇ9Kx`Rbbd|jժUmuڵkͱc4`ڵ`9sfΜ2]u֎*I] V&y饗d6f 4cܹe$'N믿jѢ>c߿_?5kUVZZ`AV5Ţ\%&&I&ӼysI(YYYJMMe]~XWt=[l=ܣ#Gj7|o]NƷzKW]u}mڴICjEiJKKC=9s樰P'NTuq͛7O۷o$=3?~ϟbZJNg,NGyDFRff>۔n_ZZZeǎ-j=zrcmNۿLgo#޷֭[߲y9M̄Zs*={1Sґ#G^M} Ţc*==]FQK,_|s0`@ӈjjupwgϞ>;PE9yW] QFiذaW_Ռ3\WV-}]%ddvou9}鱜~lsST]Nl۶MڵTr,Ɠe˖iլY 8/RvR=Զm[jȑ#ڲe>Mh͚5lܹjժvۓ'O/@9sVnvկ_߫}>5khx8gUe p8ڵn6YF.;Z%C7jYB@#9l6 tUPPB AsV^^^K)\BYE.#$dggb pdgg+???e'. 竰P񊉉QDDDfYˣ joVWۥ-?Ţ6b7;Gh *8_ z|ߝ;+_֭,/!gIII.!(p .Tō xP\\5޽{ݮOKKJ[EEo@1@1T &,Yx exԸqc1"eX<,YRfm۴w^ݻW͚5 Be᡼;i/op3f8>ۿvC{ァ۷kƍ>|Ff[۳g>2۵k.(ym۶Zy/^?Tc#66V111/٬>}:إf-Zx߾}^{5hŊڵk4i'l6+##CǫgϞӍ7ިŋߟʷqFmܸ1e-oNb2TN%$$%$$N:2L^ɓ'kӦMڶmVZ֥ZMLLܹsm6-_\)))>v ڵ񕟟wu-[oF+WڵkuW;?:5h -X@Æ Ç:W_kʕ裏ԧOeffjɒ%&I#GTff6oެ9sx_ll^x}wڲeNX%K'Բe˴e˖ ]v{effG<+VhҤIZv;-\PɎ_UVfX}ׯc~?ԸqcݻWW$Xpyyz}x~|xj*m۶M|^xy}~OתUK׎;j*=cZr_^z%M8Q?[m޼Y}xz}޼~YY^7t")%))@PRRW]vu 7h…e>}w߭D 6̧رC6le0|Ybb[h/ByyyZ駟|jP~}M0A֠AԿ5o\_|$ԟg1B~rss5}t?N:աC=#%jիyuQ>]d-YD{mݦ|P^[nEGVǎ;}JKKSzz5;t}+ӧ裏jرjذ;<;Vƍ?۷Oiii%(--M{Oyz}x~~xשSG/֭ުJKKѣ>Ǐqw]޾>n&GO?y} ܽ]o^??? '7TDDbccNՠA۷O;w$:t67n;#I?^zy]ƍo+;;[;wָqtivM6U=t}9mڴI fhϞ=ںuRRR/Te24tPw}o$IO?6oެ;v;4e}wٳgkĉ2ecߎ14>﯃駟v,۶mw>㏒kŊ0a ooeoojʔ)*..֚5k}r'ЯO+V~ҥz衇J,sw~wGGGoСC`׾>~wGz} ܽf!p@111^8飵k/G}6STV_}UCҙt{뭷;9U̙s疨o***߮-[{zzu\{QTT"wyנA;vW:u?8ZjԩS~ͱ>//u'--M7ov==;8p@:s}o?*22LyU~|zlR=ڶm8\r:-dX<~l6i-7L&M6M˗/ג%K^fbǶϮ?_,%%E 4М9stqIRÇU\\\uX,fb}Ս7ި uֺKtix⋺kԡC :Tw})_{5-^Yf)99Y .T-ԪUGJjRddNUQEuתQF޽fϞ[r:}UVU6jРz)5o\mڴc=_}իZh#GWAA[VܹSwqRSS]ix!CTvm͘1CfRtt^8b__bܺ'U+ЯwN8SNsΒ΄}EEEz5zhhBW_}?;{ۛ_ޡ  LhذajҤa-X/6ͪWch^5L)SJg?ItA=#j޼?hذas3gL&&Nd:tHׯwtfΜd-ZHA6lЌ3R$?~\ttڵkz7|Sw.B}Wz֯_M:É+Dk~ZӦMӀWzn-[j{cǸ)999z4a͘1C}c&bȑ#Oj̘1ߴd 0oO2EZz٣_j߾c}e7ܽ^?Z@T}Ou~kty~/ۈuIsJJ 0ɓjYf[mMb }.[G6vXs93fL/oO-~pVV-}]%ddvou9}鱜~ls@k~.T*eZ ]|źꪫ6mڨwz]B TPhƌjݺ$iǎ9rd+믿j̙.4a5h@YYYZ`>`@B#{x#ImڴqϻgϞ=~x3^|gH+V$͞=[>/TW} v 233z/(CojwyG .,l6K:_31n*coV!T!رw,˝eѢE~9/8> 7LEDDhꪫ/B:}$/ոqc?~\~i> 襗^R۶m%I۶m)P6Ȇuo"""4vX5kSO)##C|իhGFڵkA%o7\b٘1cm6n?lIҒ%KOj֬YW"""i&?ʳ7+6AbV^s_Æ e45qD2ɤ8IuV͟?_6mҺuyf +-5ի~9P98>uEIoX̩5%9ZԌ1B'O,jSճgO=Sڲe&MTŕ&"!ѨQ]KYYYWΝnݺrۺunݪ_7oի +@MP1`nf̘kz嗃Z˩St`0l6^]r%2JIIх^(IJLLu]]v*((PNNNPjv8>jݺ~6m5/V^GyDM4ѤI|r顇RjjN<?Oj***{]yj gh1鸮o.;octe:{qVn2]@u8Ɯ?pGMWZMVJr nTT9CpFUfx]'~Fot!qb6%PfߏY]_8^3PuH+(!!!ea zpsFίP8NN>Z2fYOv?{{@~pMy@g5~6ݣ%%%8٬uA o|}9vyRjs>5 ?@JQbɓ'Kka6UPP'TǠc58}t?\@U 0*&"j95p6 vCXG)@LCPT '0@3GJ{5G8! 8Uobp]ZjjKFJ*."dz衇ԫW/իWĺ;w։'TjBZ@hN 6L *HR֭*gʕGe@wkZ@'z%I4hnX 5o\}Q};w}WsQqq_ٸqvx|QFzzYYU>NH/^>fӬYZٳz<?8ZwB:t7yL&Fuiƍz'vZ5lPRM ߯={oѸqǹ˵l2eff7T6lؠ;:jJ_~e:J^Z222Ըqc ݟ p̖-[$z}tq-XX;nC"::Zwu&O~Aִi*t5khΝ:q-Zzj*ݻWҤIdtVT^Zj0V8\85DÆ e2J RӧWyf5mԯuwqh}CSCDDDh4hfxl0|ڿ3jbb8xl6.mӧO{lM ]tE駟|:Û`6Tc4h$)//O&L.H2d=K.DWllWܺun6կ__{򗿔٦jժ5rHL&}>??  :v$/zYa4ՠA:}_k̙z7-l(w}W[nʕ+5e1cj*eddСCeG}ך>}z-5jHC lBw-lh}`%;[?Foխ[̜N`1BоfϞ]׭[W6lPΝUTTTc'O*222ej(_!&PjժoS,NֳN_6/c9=ӲҏmNn z'̙E9Zx#++K222*}-[7?{wWÉ"IX֣kJKuS4+[5[0 uWYZy%[df*7"n)(^Jޕ&bA3xwۙT]¹ٱ5jQJJJr<___*--M-ZPDDn˱)}p~A4rH͞=[gΜիh``xyrP7pp~A矷u!8EGFu q~j@b7 mi5p{ %33f-ZTvA;Vyyy6wѣzCx#I~~~GQu&M@p O}Y=<<kӦMQJJ.\oȑjӦM֠#!OOOIҲenj0wm@j7 @K.Uk p5fW...ڶmelVDDu&///>}Z~6l 绂F)Iի5wj w^I{:ܹƏ~Iaaam%%%:y&NK.'̙3u?~\˖- PUhLbH9::_W>|XYYYz뭷*Yj=L-YDYYYvܺn w4R>>>׷~[e͛뷿t]wsepkrttdT?Eiĉ:|pcep:y;wްOwuyK[YY nzP*,,5}t=#K/d~Y5mT>7o}0ƙ3gVZٹVGcC999~~5xmή9sk.hŊ~3G?wyGGVRRz h߾}Zfjv6vV埦J֭+_/_}:\^&NaDDDTx裏{sE&??_feݻwI:/骤+V׾Z-eVKevzwk5'R0 -\Pԯ_?yzzjl_^ Y0*))QLLbbbl] 0008#08#08#08#08#08#08#08#08#08#08#08[Kf65fO-Z;vlT0 ѣG+44F+T'???9;;ۺwP~$IڷoCj߾6mTah…*))WWW?^$JNN;CBW1!!OOOIҲenj0wmTUK,Q핔-[Nݺu3<_Wz qСChҥ߿NBBRRRԧOo^tIdRhhBBB᡽{***JYYYt>@c7~xo^&L_mi߲e6oެ~[={ И0f޽sNM ~[ M4j(K'OСCU\\El67XYWRRR_dI&6@cD}ڷo5orttoȑ#ԫM[n.0vI[l͛դIk6V1#)--վ}Զm[nZȰl/**FYYY}nC%~Ip~a^K.I&I60Ǐ޽{}uK.￿}hpnرc:y*Ll2ﯣG2;FQQ5`߰[n0`t%T1-T\xx~߿_6mڤ[NӧO_>}Z#GT^^vaC{w_J׺u,ᔇ7{g*4&86#OOOX.UIRvvvjԾ}4rHH̙+::ZJMM՘1cj5KVXX_|Q0`(ItVZw}W6@cP3m4ne?M[1YW^_t=88x{AAMNÈPXXX裏j^ZIIIu:Ym￯Ǧe6uLNݻwI:/骤+V׾Z-eVKevzwk5PwFp -\Pԯ_?yzzjl_^ YZtR@C (&&֥-T8ذal]܁`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p.l6k̘1ׯZhQa5vX٨:`܁cCGVhh $)66V6  wP~$IڷoCj߾6mTah…*)) !OOOIҲenj0wm@j7 @K.Uk p?Qwrrr_(&&FO>D!!!פI*I6l~iyxxhRVVVO;޽{%4kLњ7o>syyyɩB)Sh޼y;wN<)ǹӧ+77WoBHyyyl6k֭*((PAA }.\d˺^|E3F7޶@x U#w)--MRΝosҥ [&k׾oL[DDG}{+`42Ͷ.0 www޽;HyIW%],j)Ze.ˬ[f4 J'OOZ퓝+66!KBcC%%%QLLK$G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p88::I&5%&&^ 8p`h QQQJOOakeװ!YFaaa6^TTVZ%;;J?CJOOWǎp;@PP(==-ooozzz>s7E1rHk5m޼Y~+V^]VX"""joeװ!5Ŀ<]VmĈz,l]3gEuooo%%%IӧOK޽{ۤ;ɻknbO.V{z377W#F_]M6 ԅ pp7:tO6렧6 kj͊=#I2L1b_W&HK/}7?aÆ)11Q۶mo͛Wyl6$=䓖BCC5rH=JKK+Ri[i5mTz-O0A_W_Kg#F˵}v\GMõj*K\\\qFTy ksرCk)))j۶+iʕ|f`k8ti 87uM>]7KF^zi:th"f;wVddBBBt)%$$[6l|||4vjk1JJJtIM8Q<󌒓5sLJ-[ŋ:uٳgWvƵfoo7|S֢E$ISLQ۶m5l0 2D>>>7n\g ͚5KoVls X;}tMzz/^\z+##CڸqÇ7Б#GW_}UM6Un,clذARnneggx:uJ'NPrrfXj=L-YDYYYQq4uT5mT+IruuՠA<9sF ,P=u=Vu=~z]rE_~eAUCU#U N< Ad=z;ˬOwuy;vLpcXY͎/z, *,,Tpp-Yo UttMf Y_:ﴴ4͘1C޽nS߿Ǽ<[N}U\\\}louEcgϞTN'|RYYYm}kry}嗚6m|}}`P֭ﯻ['OV^^vQ;wBCCٳgմiS=j޼kˤܙ3gVZYwf-}v*22R{\8EDDdwX}gM*֕Mb(@$22RqqqZ|8'ZykR&MԱcGܹs7mcll^~e8q78m֭[7-YDzJ|A!"*1c+uIiiiڲꫯzܙ3gѣZd6nܨ^x9s7(::ZVRf4f̘:߅`2ԺuJﰨǏwѣ=z(55B۷Ok֬QTTTm7;ŋkݚ7o4iŋkɒ%:umۦ?zU]&1^`$^/_.IO<Ν;KygϞZb6oެAiҤIW߿kUnͿ.jݺuns=8ƭlU{u>&k׾o4h<>}JNNu)-ϯ/v$鼤X}^^jY-ZUeV߭>Gwqtt}ݧL[@ A?A}kR8hTC)<<+1&W^q9غG5duUm۶$8qB[nՊ+o -DϞ=5sLVh衇CiС1c˛W^0`|A~ڵkfIdRhhwOYYYJKKӂ TXXh'**J}$]rE?駟T|||Z?4x`?~\QQQ:{Νku ]v6mZ޽{kj߾5kӧOo|Pfٳ|ML&}WJHH%Izխ[7[}?~\F+WjĈζzjYo4ehŊQRRzM6YК5kt*봷פInjggg(=t!G***NAcc9sL&ϟ8($$DvvvڶmƏ0EDDh̙ڳgΝ;Wؿo裏gpWÇ-[ݺ|$)33S;vвe4vX꫖駟O?)99Y͚5Ӌ/ŋ+;;[K.ոqe]rE;wիOK.JMM3<x@=-Nҿ w"&1ruuW_}8=4m4M:UIII8p.]-[iӦ2dH5j.\X#EÇG}d oדO>f͚U={t]wE/٬gyFvvv7n>C?Z W^yEU{Wohpl[nW^7|޽{w?.]XHRppp6iDmڴѿ*4mTJٳGvvv +ӢE ={V/^$]|YרQSOM~iJ҆ tiUYfjٲ222j5H222^oΞ=g/yqǽ{eggW훫Zj%I˫tŋuyyzzް^=Ǝ >s}>}ϟ-7k,=jӦ Zli\xx-ˌ3j},86VVV HO@T]ooJ;::MaÆ)==]v[oD˝AV\~k։'W^a۩S$U .]]k׮JIIcp pO۶mիW5}thB-[ٳ5gI?J~=wrssTm+00D=ڷom۪o߾t-_\T``,X www-^!OJ;wTjj~ IIIJMM!CPVԻwoV-T..??_3f[o׿VBBe>GyDӦMS׮]UZZ3fJrW\Qxx~'П']zU}%X?QFi̘1{uqرC-뺣յk m0a >}(<<\W\hʶY*Ycگ||p{{pp8ףGEFFP .hƌڼy- Ml6ۺ 0ݵ{ I%]tRj)_պڮ_/n7 +_C Q׮]նm[~_+VиȹspB-\֥ac#08#08#08#08#08#08#08#08#08#08#08#08KOOty5k(,,9::*==]>>>u>& ͛ں n {g86֡C;!!A7oVcǎi ԠAԲeKڵKϗ$fOO8q6mdwԨQի&OCX-l ҬYԯ_?߿_ofԩSs)77W/V&MnT%""BAAA?~zFs~6lСCx)>>^N҉'I X̙3Z`z!0l6k֭*((ѣGuI?O<|p:r233ꫯiӦ֭edd(//OK.U-ԦM*OLLԑ#Gt)k*++S޽t-9::_W>|XYYYz뭷ny\P!oycǎI*Hڶm+ɤy橬L WWWIw}4%&&j֭Zv֭[A~k׮zTTTd9~M^x7GLr #ؘ85͇ӐH҅ $IÇWnn KKKN:)$$Dڵk&L '''L&۫ԲOqq._\1˃*..VIIew&9::d2d2U#"ym *,,Tpp>*)--MZztICrL&v:dG֭[%|OvN)700R/F8r{L&I$kR&MԱcGܹs*,,Ժu4}tɓ;vsUhhhaÆ&L {{{}嗒}驧RV~պuk٩Pׯ#C/_4nA/֥K4uTy{{+77Wqqq:xԳgOEDDU'NФIT\\,I3gƏh988(55UcƌcR&I[Vvvv]v)::Zڳg^z%]rE4|kJLLTNN*<^uM>]&N9shҤIQIIu[z4M rVΪTɺu~Ok?݃ml6ۺ 0ݵ{ I%]tRj)_պڮ_/n;nnZ*#08#08#08#08#08#08#08#08#08#08#08#08#08[K^i{ns%L&.]di[f6lؠKh\#GkVmo SO}4.܁_{%P+86֐J%$$h޽|}}u1͞=[4hZl]v)22R$٬?Oz'䤯Jŋ%IAAAO999/#I2L UHH<<}Ծ}{}ҁ#GJzD͞=[ ZzꮍSϞ=5d]zU...Zv}yxxTZ?СCAF``c[[;wVddΞ=I&)!!A Νc*22R4eyzzjذa2͊Ըq4{l5kLњ7o>syyyrQFɓUTTkѢEzꩧTRR"c֬Y:sF7|S,۫R ٳg}~e˖EmڴѴinU\VY=fY}ѐ!Ck:r䈒%V/Ci 6СCU||SNĉJNNV@@$U Rllt-X@=z$yyyl6k֭*((ѣGuI?O;|p:r233ꫯiӦ֭edd(//OK.U-ԦMjϡcڷo5oNZuצ6JJJkԨQڵg ;-q1Ipgȱc"Ij۶L&͛2I\]]%I}Ҕ[jڵڹs$urppPFFe좢"߿_ڵ,Y_]ZZ}m۶Վ}+ǰU^ڳg6nܨkƌɹY?UӣQ j .H*<<\:uRHHk.M0ANNN2LWiieb]|cEթW^kouW8::V*,,Tppp4c {ɓ'UVVV!d2LѣGoڎVa?]Gw1jRٵ*44Tњ6m S]ƍW\Q\\"""cd2[~~~$www 0@^^^jҤ:v쨢";wNZnO.}ݚFU64w\Z__dRdd|r8p@'N?G/֥K4uTy{{+77Wqqq:xԳgOEDDU'NФIT\\,I3gƏh988(55UcƌcR5ة?~<==o>9=Zf4nܸ:*]ɤ֭[+;;z˗Kڹsg4^u{ѭ[v;OS%}LV/>}/t^PPpKHHիdRz/l2pwwݻ$tUkK2|]Vj~껵dw|}}gU}Zxmc!?~߰I ;p( 6%`p p p p p p p p p p p ҶmԢE+**B?Pok73qD}ruuަM޽[jѢڰaRSSMQicp8غlٲe*--Ո#$IСMkooI&iڴi5]zbbb*]zU}v;V&I?#777uE6m?:x𠊊xbedd(""BΝu…:~ JKKUVVV^Z>tRcbO"IҎ;xWJIIQppp}QرC~~~{5sL;vLPBBB T;p Λr7{MU W^yE>4Nff~uQ$oW_} wtI+WԪU+effX ڼyw.___;vLgV`` -[j׮]T~~43f+m۶N q/ tiUl6ٹboooپ}vuѲڶmvܩ&M_tI&ڿȑ#ZdԲeZܹsgEFF*$$DNRBBaÆGcǎ􏈈PPPƏCZ1 1e˖iɒ%&jn̚5K?ڴiSek^zYرC;v;vX;vDCՆ |z7lؠC)77W񲳳S||N:'N(99Y~_W>|XYYYz뭷t0"iyp$ĉ+T'!!A:t|v풋>uQ~e"͛7WponٯP˖-S߾}5uTyyyi58;&Irrr"I񑽽Z^ ,́c 5NKjժUӧO/**Rzz:v(__ lݺU{G:uo}W\ѦMyf%&&w:|pϧL& o_b͚5K&MRӦM4FcTAAAںuܹsڿ^z%? ^:O|'OL2FCc 9;w*55UO? *ѱB۷=Zaۖ-[;vXKSLQ.]ԺukiF/S4w\ ~zM>]<<<&k׾o/ۻ`9sD@R`hp'@*ZBWZ VXT46E H"(!"r 1'p.?`{6{9'g}nb}}g̘1= (ɓrlHґǝU[yjY134BP8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(PNˬY2u$ڵks-䪫Gyhp q)䢋.JkkkGyd<ȼ=\gm+O=T~__jw ^wܑ X6s\~O?}uvv~\qyzwG~wvG*}{rAq8;6+VȜ9sc~?NN9\r%ill̍7ޘŋKկܹss'K/'>AEYparG䓟d.s9;Scm omݖYfeرٱcG}3&vX7e?^oڴi5kV~ﴏ>`o8E]\veG?+Wf֭ٺuk|… ؘ.(/zы;vdӦMٰaC\r%1cF>uo[n1cSN… ٙ?}_>wuW>+'?~[ny^;.7nu}V(owo}W^o9'Ni6m۶-y?>6mիsmSN說!'xbe˖eԩ9z;o޼\}پ}Vŋ`,^8/hѢuQ9s5dW߿=MMM9ssu妛n\ JXxq坝;# '0444Cy睗kOcƌIKKK[SSSoM7ݔ$Y|yN:餌3ر#<@Id֭YxqY8SLٳsW@Xkƌg>-ydzx|9rCɹ۽y睗?> !C9$Iz>̟?Dzyq=oO]wݕ;3K.wߝ/:w_=n_oii 'o953f~s敯|e3Ȓ%KVwߟueѢEihhȢEgڵYdI/2',~ߝ~~K`9(w%$뮻$ӧOߥ{W466?A:;;wZgҗ6NsNO}{ߜɓ'絯}m?cng}6?я7 Gã>N %pFUW]͛7O̼yWBI{̚5+7nUW]5}ر#w3wC';vlSNɆ r?7=CSĉ׼&O=>bW\qE1k׮s}1I/嬳WmYti>O5yM8,X`$ .Hggg;\veL0!&LȌ3p|Hggg.lذak$~;A׾$>s~ӟf݇U,ؘw{φ r~җ4SLQ~Ypaw${Gwi0Fi^oZ^ozƪUWnM/7r?NeoW;-gg>L87n\})o`߰~3fŘmmm!sU ]3iҤp7nܜP8G{>ȿ=@*f=@ 8p `ԩ9sfN &dYvmVXGyd%!hll̛̘1I&裏G+V?q:;;GiBJyr-dժUikkɓs1d֬Y9sflٲoSN_?ùw+<@$^:o$MMMihhH{{|P M:;\yyǺ_{gsM7塇Yg3f{Tw_~_XVųf͚<3ˤIT@ɜx*Mr-=MG}4rK#;vq̨{'2g;$ɪU\{'ܽp=dڱӧ'I8∬^:˗/Occcf̘#8"YfMnlM4{xի^WU=-]4O<Ġ:vy䑹ku$wܑp>{8f͚}9crM7ޱ$Yv[oݕ!vyu6oޜ̛7/W^ye6m4ضm[o6mQG'f۶miooϪU2cƌlܸ1ښ<>`d8Cٙe˖{̙33uL817oΚ5kbŊ[.˔)SF,{y5kV\y򲗽,z׻O'?Iδu{]&N[p`0JۭzC}c4VrkzǕ'p/].g؃ښ:+ggy&W^ye6n8EtqؗM<9+W<>Ɇ$Iګ;_xYu몺Uy>z\޲>h΁36oޜoyꩧ8s!{ gm޼9W^ye_~쁜g7ؼys2p@ 8UG{>ȿ=@*۶m! plݺ vlݺuN&E{{{F{yP_>---?~|}Ejoo϶m̼L֭[@{/hhh!}6$"IOtvv0+x^e}s }M~۾}8رc1*ɀښoԩYvhHˤIF{e+Gn7p@I:O:]]]>;󖷼%Idɒ=<Ǝ|9Ss=֭˲e}-=pT%Px(ԧ>ill_I7y衇Fr8{~I~8[n}f…y'r,3.xߟ{9sdܸqI۷gҥ˲yknn>̞=;[lɢEpP?~;$ʕ+sp`ouꩧ&I8׿{>,Z(o~G+ Q A{ ~>[Vs矟#8G??^xb]'rwn$y>|[ʴiz,7n\wcͼyF??'N;r!7gy&˗/о:蠜vi'?ImW 7{_$7Ir&y7Z!9x(_T2U /ӻO>x\wuߜs9yސ:˗/ϗ2y\r%|\veyы^Խs~,^8|p<̜tIG>'yK^$2eJ.\믿>)J믿>o}[lٲۿ۰~ޖ̙3̙XvĞ 13}va'vYgz]' =L4)IzOKKK{챼-oQGo~3L81^zi8\~ٸqcn\|7n\.,X ^zi/"i'|2/}KO;N:vm=krye̙Ksꩧf۶mihhȌ3` wtwsΩ_իO2%O?tu~L0!'N̦My睗O0! ,^}p3gL4)gqF Szks;=ܓM6CLtvvn?!^{mHinnδiԔ{,]]g|ȡe˖%IVX-[8_zx^O&AggggCCC`…^O>{MκhѢ{ٰaC秞zjN=tuu̖-[$WŜ{g?W\{n}|7n\t/kkkp[fMoߞq/um۶'̔)Sz,;蠃iӦ7?ysss=|}Knݺt_և\6E3y׺jwttt5552bַxaÆu '8O<I?M'c9&s.`_O}jP_|Żttt%Hպzy\yJ}nU[=ӧOI'XI"ĉ3nܸ3&}k{V9}y;mmmyk^ӽC=5khАC9d].(wW՝?䓹imm͡??_oکАòOFVsssv$IWn}QF3 Wu&iokk1cOYf34rK?5\|2tPeɒ%֖k&I__yK^%KdƌG?Ѽ/Β%KrUWesl޼9~l߾{mrW;^xa6mڔ򗿜 WU8qNoNoa'r;l9Ó$O=Ԑ;f̘}?I{4Q65ҍb fve u'χ嵷:4Uݚ'Μ9$TDŽT>}>ҾcԩYvWT<;65<w^:7ni{`ϟ?~׿A?bŊw$ٔ#NG}V=#(fTW9 8#yJ:N'0i6QC?j>??=:va۶m=.>֭[}_̙3'|?!K.ͿzMMM7n\x/%ٞUgj[9j$g d6 5 c`y],nRiWښ7.]jglf';GS$}ϾֈŅROb\/ o[jlF_SSSZ[[e˖_ZIepGUj)h]}:Uy^]:l;?qƥQ6nܸ7wy̛K'7T-Q =#=d8Od\﵆:Z<RЫ'|1c7a„L0aRc]aU}{ы^ 60JU477gرiiiIGGcO=ԅW^dKmE}C;g?]`S{e]rkg%\Fˇ׮W}eV.-^y>O~Ԟ0j fӛJ<<]y)=4OzFO"p)}|7uSQrPӛN4ճjjg>WMz^׫M%8 _ƜY83oTǵ]Q;@gM%TO}{j֫S}V~7cC=~R?t೻bp^*Tjb՘'' Vg!O}]I6$=gv̾)S%B mNoU%USӕbU3p`5z HS{UV;|*)kNzCekgT϶Y7Տk Nm$6Ԟz}gf f!]3pF<83o*̸Y8+Uug;Yqo'/oFnS!TI+LU/\x{jOd:jUYu`pa;L3(36 aT]U}-Ţ z1ɇ{;j IvJݱ*UނJ:jg6z)9'1-T?L-6cgw©~,ޖ$Ƚ=n#C 7eS웤8/Βk&Nq<9ĵ$Gƛ=h,?֛e>#л49o}p;6vR1XB{]}ͺ}}f('*앳v = kC <^0|uSo@#1&)?[wg0|Y683f #TY @MkP3e=9P}PI9kopj 5vμěޖf 8ɮGr_+}Eo©~}建+!P v C8_z ${maf8PVĈ8կ GA/Y. >BxF" tE'7Kf e3zQSZxF'yp_q_ eۣH1 ,z/P`f{b>dĩ^w8?{#b8CȮ~Qjxؕq 彍?`du=`7I'%7ڕêj;bJ:|G7p(2${F(5 f$"I gDIbƺ'}f .E=-frۆV{=1b8 -vb$Ǿ'/ɸG!Tϰ7|_PSpS?GcVb()qLECLJ9x͟ o6ȱ/|Fb_^mAc_'gM-'c 6=j!L ?)2k?VIENDB`extension-manager-0.6.3/po/screenshots/_28.png000066400000000000000000001245611477302130300212310ustar00rootroot00000000000000PNG  IHDRpA%bKGD&IDATxwxWnZ(VEd DAeGăBE<~* p8@2Q".~"KQ@iiIۤM{'q]|bt)>Py{@0Q``,H6 #^/Y:hk U0:eSBz@U0:&*?&XWCP:_ V: @2kܰ% @ )*fS%PAN86&_ 'BR* JV ^*]!H m<>?a/r=(o}7em9TƸ6)o!?8 oڷ!%<^Ҷ+i} q5853ŗg?Pqe5%$:~70 Q|7*oU6\ZwJZ^yx"ݥ roB #]pS־zxxi)wA/C7 o|ܸ ks*Ǔ69K@QYMK r,P|9LY-s?/>y q!dv7޴)mOZ˔ʦ3" ›qw› *3%4%58[p|ޘJXIpM ;/9mbXct0=Ɠ঴rh@)-hY.)oMW p*vݟظvܰxIUxJЪqAT|Ღw oPyo Q|pqZH?3,򔛛kt)_PxxL&BB3` .ͦyV7Nw:3MgwZ5&qǯ8eq]W|֩Zฆ6Sa͛7Zfrrr%ՌlV\\"##3L&+""Be2Cx8GHHL&&5fZ]3**j'.V8U/^hISw7P'<&&QfMmuNhhj֬itߨQfjԨatPa')\:Ifܬ/JyɅ{F.m9<>^5jpNFWllp p󀒲ƗFk3:,U"##>R^^^EN_ŗyښum (;nJA%<֮];GW\qt)m޼YK.Ֆ-[.ϯDFFF>N5dl$Vl_ݝӰ9F8 e͒aaa8pnծ]ۣ}N:?\SU/44T?s'@ ̙&MgϞ0a;kfY?"u7oҥK\xǘ7B[2U\e8 ]|=W@?hڧvںeoVRe ӄ  پ}{M8QO? u9siӦ癙_pJK.0a,X V9`ԩj޼4hݻ;?o*T#Ӽyzj;vLwnf={I&Uy}ުT1*zos:J "Dݺu$-X@sرcգGhB)))p*.qh߾^x 87fK/U۶mժU+ 2D@%&&F*,,#Y6oެ_~E)))믍.Zv}vÇkΜ9ڰafϞ>}O? TfY>?nddrrr| Zg%?$/IE›޽[TNJ {5kԲe˴lٲՉ'}deff*$$DSLѕW^o&qt?k޼9c_A(77?,BCC}2D Wrr2#P#I7o^5| :TsO84DGDDD?3Ϛ0aN>-u3^ziȑ ј1cԮ];8qB3F]vСC%I6MӦM,X I%UllF뮻N1VFePBB;<>|;]aaaz'g;vԨQ$I֯_6GxS^=իWO&Mرcb/t&y饗_TJ ,P~~|r o\ۈkeO?oQ7|̙Svrs{b(??Be/ y- %%dI%@0c eff*11QmڴQg9Ö 6w}=kԩJKKӔ)S~;mf$9ݺuԼysmV:tPff 'ԼysM:UFRBB}Yf[裏<>vy^\\vf͚JOO$[]>Xd$9C@o4|>?6Ko< 6.SRRv{kOlR[W^QÆ c\tEql6 pY5j0 9+22 `m?G'`2t%UVWxx?oFG5<*ղeKIΝ;5f+/ԩs뮻N)))ڻwU8uMmڴQBBl6;͛7/TNN%&44Twy:vZjݞ={5jhԨQUrrrV #GW^[GZb^{5Vr,8p7ԪU+?nJ-\PE]Jaaa1B3fݻ X;wV~^dyÆ հaCu]sю; X{Vn+,,LÇW 믿VAuP顇jujРA2eJmݺUC,{u]w|2Lu.OrJ˵d{޼.X%mS\XXx }Wڸq^xEGG;כf=cZn~K~Mekի.\-[kq.6l/_[W֭5p@^Z[l̙3_XJ{?SO?g9[aۧJ-R||j׮Ecǎ 0b۷ϣ#"q驧RLLs_lɴh"{=\}kճ>ڼyRRR9s>clm863ϨI&ݻ]tEE0=zt颇~XzeK~i\R}O?\޹sg7NݺuӡCb իWO ҝwީ +%:p E˗/פIԸqrVЁԼys-ZH-R˖-ua=U^OJJO@cK/M6ǎP[0KLLSO=!C/;Cӧ+,,L/”;F[efeZ→yn>ddsxƍSLL5jAd2?5n8=RL&ZjŋWyhǎ:qRSSF111ӧO'Nѣ6msz駵{n9rD/b_˵gϞ"/\Rvs*$$DsÇoiٲe5%)|w^:tHfґ#G ;z qZh49bHMe37a D=ZkVڵskр$[;vlPMme"ժ!C8EEEiΜ9'O+bD~gڴizT~}=Zw}>HfY5j5TAi…jѢ~m_Ǐ:9"]*q2L1cv3݉-./"",\9Oϫ={+TڵUnݠ/&E~+??΄4yyy3f9 oCc;vu֒ٹ<غxѣ'LoHx3h ͙3G$}WF\l6Nyp fʔ)F܅7G͛uw o3*yUU_TXXZ]v-.''G7nK/]K.Qffkc3Oĉ5iҤ"@u[tIܹ[o1B 6TÆ 5rH]~?9zڷo /PQQQos)կ__!!!X,={FΝ;l6 .p9+Ve]:uh^fIeH銍U߾}nM-[,zhժvlmsq_v:wQRRRbt.TpӪU+*.VC='yWeXb 8y1k,v鲃ɓ'[o)))IS͵vZ4ie˖l;w`jUVVbccըQ#`%iڴ$Uy,JLLUW]}YWt;V걷l٢_#GԀQ{ӧ=>u]O>D7n=f8q5kaÆi̙׳> .@'Nٳ}vI?zJsQaa-[x\e~M'O֣>QFiolS}5kvβǏo7Tʊ:!.&7]1xއ}츯եK~+5L[Vs/:gJ:z\:Z3fe2pB}wFmN:%N#sV=gժU+"Ϝ:uʣ.PQFiС7дi|\WV-mڴӒ,.m.7\.岬scWeMyUZ`۶m$$ZؔeJJJRVVO~7xf7gmذAvRnԦM%$$fѣڲeˠ&b vuIj*uSN+3T@"ͦ޽{ .h4XB3f̨'hsVU FTΝuwjŊZ~>G (Zh7jY#9b]_gt ~AsVvv%YVUF222dZ.4.rrr$IqqqWb >Y,1рJFThh,򔝝Md_"l:QVU4@5P١QB!p!T* ExS u]JSV+rwu\/i͚5.8Kiiu^]!p(þ}J]߬Y*t$* |dtXp btejذFa  v~P4KL, @4m4۷ȭs?x`}ھ}֭[Çdr1Sg}7n׵iӦRBU(EFF*4oY,)77Rαb ͟?{ 7hҥڵk5jg}VEh=Sѣu-hQuiݺuUzNhSlVڵCxR*&&Fkזlx0M8Q7nԶm۴l2rzRbcc5k,m۶MK,QBBWCƍխ[7=e7nTe۽]k65x`=%I&L͛Ǐ;CI&P+V뽮G."##.@(OԧO\R6l_|6ӧUV"x uMҙv'%&&:UfΜYfoܹ*((P޽բE uU&LЦM#iذa^ 3`Ol۶M]v_.]hѢEz'/V>Ż@=zW%mvޭnɣojƍz7Z?֮]+++KڵSYرc%?󕐐իWOW1p >}Z|FwyG]vjcǎ_կGmfvJLLTbb9#""4k,:tH&L(YYYz7TfM5jԨ̺Ҕۗl֔)Sd-\P^ -IcĽޫ[nEWVԾ}{۷'ǮQ^yp j׮o,Xpӧ+>>^SղeK5mԹ~ȑTV-VVVVn_%Z3gz)u] 4P׮]5c 6 R\\Mӧ+""BÇ}HKKjM7ĸh+\@СCըQ#eggk͚5;wOmXTn]ˊ֡C4qD-[̣fspTҙ?$I֣>M*<<\{СC9fΜ)٬g}V:r>3IR-4|pϗ$=ZdKm߾]}7n<#k233/kܸq6mf_(;!.&7]1xއ}츯եKPFP9w)Uq5I&5m4KXY-5kVEVZڴiSgI%Y%Y\mg\nv\eYvǮ-fBR6M6 8хKӦMSV$I;vȑ# bt@@!#֭[;;a(I=ҧ~a UVi޼yEY,I}6 sqѾtkXɕ*xiǎΖ7?s'-l@"ګ6mHmۦѣGaaa,,??_v{3 >\u?Oj̘1z衇4}tSjjKխ[W>[7p #.KmݦnȲѣGk۶moY<222$I .3<ӧnݺ ƍ?q*zFw !3˗/׬Yޯ~2Lzgf%I֭[5gmܸQW͛}V7*"%!?K/T}vr_ b\^5#FЩSYoO/W=si˖-?~|W :/=;Py?\8^5j%uIW.q[j֭z4{lխ[WGV :6^.07"|v'/M6MZtfJq#g:}?|bw'uR!) `Ux _wB :!.&7]1xއ}츯եKZ$$$QA#1"P}?~SN),,,8Jwzh #^ZiӦΒNKJ>.7s<˲.][zK[n_.Iڲes9 FE/b*3 (ǴdKcƌ1jUDp*_8< m[Xtp~^ 9 wp #".d8CUŠ6_u Ek\`uJc2bX.@w3A=SAYp\M8*eXkt0 -p ԳgOIuVxiӦ/sq}G9s }ZϺu{nzH 4ГO>|;/oZpMp IZ`W$%%nk>gƌ>==O$! tڵtmy}٬#FhZny\RחT{CG5vXqڷoŋkzwԮ];5k֨C-[Ԇ qjo zZ q@ pNٲeZxGU裏?TRR4hv (::m_ѣG5tPM9rDǏnWU (OFۖ8 N חl.2H/)77Wڿ@7oVƍ}ZO[xz,T? 2L2|#ExAAgo^P qav]q^]#2[Ӹ/s/?~\Զm[ql^Fzɤ /P.y_yJII;CIvr裏uV4iGM6MZlRSSuȑsG:u>5h@ b:@ ; V[qoru~玛}ǎZ]tY˩#FPRRR}75cƌ N:Zf:u꤂  @8uŒ.~<,jժM6utZUvfw9\nwy}K{Y 4sLIRϞ=>ZjRSS+|-ZÄ7n *9_FԨQ#㏪[F VɹG)X=Czu1{Zleʉ7'l߾]7 h}Y# 1 @p!O4 @!s8~9#s8~?S7^F|8 oZ8%\8v"\@aC@",8 VqcPMۆ  @5c}iAiذaٳ֭[dΝ;#ɓUg.i@C o$UVJMMU||͛7~o|̙3UXXX=CjР|J=($I ,j$vM>*TGuڗN+?Fڵkm۶umf 6L7|:ׅiĈ딘GjΜ9%iCIn-[Lɥp̖-[$z4#FPK u!5Jyyyѣ&L;vhZ`BU>A0q5>}hĉڻw4eʔ"ۼÇk޼yJKKS֭K=nyC j~2ڽ{wԮ][7tڶm8թSGQQQ<ݧ-ppL&LZh5{l5J{-T-pCn+VZ)..Nsn?gP޽t{f';!A*%RA/B4A)jQP̈˸u2E(UT]1Lݕ !e[KEJH4$${&7$~ޯzֳ~k5D~aWhrrrd6]F+N> OOO۷/P%I7$]Y]h,ml˦"߶ʚOa7o$[n[nԺuS^x8PAARw.݄::po eo )Ox7F`0,:D@QVCx"t @8\#phС -͛+&&F^^^ @yU^]͛7WUzuGbuMX۽MjӦMv?^III7o kC#GT&Iv+77Jpnݺ%K9 PQQ>J @i<<}P0믿;eѣ{=KUfMIҐ!CԩS';V}U~~,X \iի{JHH o,o߮DZj@UDS}:p2335{lK.ruuU5uT;vL4ijԨv9l7n,777m۶cnݪjժq2U/Haa8 ???5h@...JKKG'P2qrr%!qㆮ^*777L&9;;׵kT`|'OԵkԾ}i׮^J#,Xĉ:}&P6Lw#//Oѣo߮];C z*P*.,,L<޽{C6mRAA֮]'Ξ=A);;[wvtـկ~9shڵp,͑#G:JU ?^uU-_*K-$I:>99Y#GTݺuu 4H3fhȑ5lذr7Pxxz衞={J^+W>PnnPTLe[~'vT̶1&,ۖo388x˗v*Gxx pW~'e?qqqZjf_ɑl>(钤۬ o.Yl˶levvo[e|qyIu릺uL[N111Yrz28PAAR*cN֯_?G*#p p p p p p p p p p p f 6LݺuS:u>|XÇWvvF:tBCCo o$y抉*F֭$)44T{yy)&&FM6զM94o<zc8Pݺu%IK,s "}T0hٲemѢ/^ݻ4i/Ttt$)..N}BBB1c(99Yԯ_?ApOp0_)IZٳgkƍ1ƍٳ5k,>}ZϯsuU'NTVVS97ʅl֎;te]|c͛D붳x 6Liii 6ܷ@ U*%%E񊌌T6mn;իv 4>|@SE*,,L#FP~~{zN͚5%I& RRRR4yd}.tL&5o>VBSEyzzGVjԪU+ŋ%s%m޼Y&LPF`؁Ο?uE֯KERY:vpyxxԩS3fK=oʔ);v-Z$٬#Gرc駟wS99;ٴ[֦bm1ٜgٶ,7.7[֞*չ|> l6; 0<==o߾@I$ݐtf]xwRdXe-[l~*N1F8мy$IݺuSݺuuNff֭[, (::Zю.jժ_ũgϞR#DFF*55?.=ʴzj 0ʕ+Tf͚)55UZkDc?Tk|||۩ڸq~8D4h~2۶nݪofVRPP^s{2< *v+Zp8HSLQ:u>>>JHH$SgϞ$y{{+""B;wvH>%w]F|gVV۷۵7lPrJ_F%iٲeX=ѯ_?YF[nUttyId۷~~hW_}K'T~;wSڵKa6?IJNNVBByk4h{9護*rm+Qe{5j(>>^oQF6oެI&ݽl2ڵK+V(,aaaZr%IڰaBBBJ|j T\\vޭD@VDzGRR`>`XB׮]8={V={}s7BCC'wIҐ!CԩS';V}U~~,X l=M6PHHΜ98(<<\^j wGAAN>ѣG륗^RbbLFI,Y Znӧv쬙3gѣZ`$iܸqS~ԧOjĈv6mu릃j̙v}ne6Uzu,ZH...ӧ$iС:vK|jU.]hڴiSﱬ瑗g z,աCXzw7F@@|ݼ7Ξ=[bx ڷx ;JKKSff6lؠ<:u;tM4I5jPv}_^GQVV.]*'''-]TgΜѩS-ZZǝrJ?~\Zh222_5ʣ<:99iQH<<<ԫW/(;;[ΝܹsաCJϤ$);;[/V:u԰awڵkҩS'I?  uM%U.FooofرC/_uСbU޿<+V׿x IR˗/v[8TTTTi6h@:|p\\\fmոqb;q$ͮڵk뷿ZhzH?W^kׯ+66Vzgd2Sl0VYuqJ9Pll-[Ciso}zߞѣUZ5jJyyyxmVcLL|M:uo_Z󳶵kN-^K ^ɓiֺukصeffjҤIwʔ):~-Z 6_sƌꫯ+WVZ6l]B0LjРA#,ɓz5tP%$$CJNN;&))IիYb۝kk…ڷofϞjժi…ZhƏ;w?NUIϺIΝ+IzUzu-[L{NmڴT3Y:v˗k֭իƌc[Vx%۷oPfM=#]ԠA~a=#8*-nMem*fym|sreҠ+11ѥ$''4ڷo_KnHn.f)Y,۲ٖMۭE6m6W A&M(==ѥP!pP׷~ѥP!pP8;;Yf $52fDr OrtT(F Ԯ][}QPP$INҎ;|r8B8ѱcGM2Ev͚5SfԷo_Mbccջwo|X^{MڵӻᆱcQ3enZ}d6ռys]rEd65|U^]}N<{LC ъ+4p@effZ[jUzu7Ѹq *::Z ر6md='<<\Wɓ'KYcƌ-"##Oh:r 뫀 q0///M2E&IsQll|}}"'''ܹS#GԀ)Shxb}O?_~nTѣG_}U[׮]$kZdI&Y׏?QUx -\PZxFm۶jӦ fVZ^m۶UrrrǽKz+(??~_* bc{W-[(66V/ M0AǏWBBzŋk۶mQS yJQ'X|}GzUV߿z!K.]*٬^zINNN1b>c]tZ/_([ruu-7xC}]x@UG`ڵ$Wo+uY;w?mz$oj԰aC.5jnݺb߿_NNN SN]pA?$ڵk3g ^xA5k^f~z={V (vZT^=? $gN .… l}2/Σ>Zf>JrU%I駟t%խ[}j֬K۸q;M8QsQAAAZL6M6lx۾zY Sjju>>wuuU͚5nmׯRSSw^ b WN:O?TomΜ9#>Zx; #͛7Ν;u M8QuQz4}t͘1C_~/^,z̥KPzJv[jԶm[u [eYŋ~O[OȰv&O|'#}x8%I5uT6lؠΝ;k׮]cl)˧~YbBCCan24d-_\W^[ʜD8??_ӦMӘ1cTF }|FU0[|rssծ]; 0@_|zӧ+22R!!!Zv  ]rE˗//Wߟ~gW^QӦM秮]Z'BՕ+Wl2nݺ ܹs驅 VhϞ=JNN֋/hמd}ӧqկ__;wV@@@_A~rrr4yd ׯkYsyꩧ4aP'O.ׯ_WXX^}U=s7noU||_Kz4d 6L>N<ݻwk\wTT 5j(K]tQXX_'O?wU @qrPwiMlc9ϲmYo]n=w]|nuA2dqM}(((H~~~***۷kyx͛y9` Lb `p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`.Գgϻ>0`@suuUjj|}}TTY[n7|2g..,~KB8X˖-+︸8mݺU۷WFt M>]իի{*""B999$٬?z-[h駟$I&M/-I2L UHH_+22Rz6mڤ:ӧY+cAAAzCiڴi:u$&N={H|I-^Xm۶^oժUJHH(oggg 6L]vvYO+Tf;MIᤦiӦ"""3g(..N>>> W~Ç[7nԯ_?G1b$VZRBBtѣGkӦMs N:iر۷`f16mu릃j̙voW^QVV.\jժ3(Ixx5rHWyyy/tW_^GQVV.]*'''-]TgΜѩS-ZH<<<ԫW/(;;[ΝܹsաCI?)fY;v˗uq:tH_SNձcǔI&Fj׮$);;[/V:u԰a돏ױct***RΝYruu+:z222sT^z@8;;s'N$ٵKd24{lI\\\!IoxرCk֬ԠA(--w^^<ƍ[OFF/K~~RSSKNٙIp*sIr$ʺmaaԺuk(**J{ըQ&$gggZ׵kJ%(*|XvdL&L&]43<_ ~Pnn_x\JJRRRtRZJ:}ԲeK$Yk hSOiǎ~ӸqSi,XVׯ_Wll3d2G͛7$yzzGVjԪU+ŋڵk5qDرcݻwfRhh][~OKF6o,I:p^xկ__>>>zK?''G 4rssn:M8QO=4x;h ի?~|||X>|X5kTǎ.:uJcƌQ~~$iƌ9rd 6\IL&5h@v{UTT<<<~ CG@8Xe*[}jԨN8ӧ+ @zRzw^EDD(''Gd6?Q=ܴe͞=[?$)00PԤI?^_~%I&I kEFF*##ZϦMԡC=c:}"##K|VyNJJR.]ԴiS}wԡCAI:uxM>]qqqZj*ҞVǎէOݸqCZf>#yyy[?,oٲeAF@@o=ڴi]pAcƌQ\\.͚5KÇWDD$iܸq['٬1BӧOWZٳgkƍZC ѳ>c*//O#GԂ /@!Ǵit9 :T3g~;=zh^~;-YDjذ&LpO(իllWlV.]ԧO}:t;DI*W9pNNNwuueeeiҥrrrҥKu:uJjѢ$CzRLLu9͝;W:t$y{{l6kǎ|?CIykԩ:v5i$ըQCڵ֓4eggkŪS6lX=?\PfffϞuҥ\^/ٔGAAy 2DAAA֭5T8gg{ĉd72ĉrww$d2i***$C*%%Eڱc֬Y={H4h YոqbP^^% u\öClkڰa̙ɓ'wt>"q0סz5?-~IRuBu QTTݫQFM&I*,,k׮xMKPTƍ_ڳ|.p^rbWWU~A .M,\PW^㣬,êY:vpyxxԩS3f%I3fȑ#%%''kذazM,;99Y#GTݺuu 4$=ZzRRR4bĈFIJ{6&I 4Pff[IMMUյl2IRdd]{)W>mtɦݲ6m{<˶eqv۲ u;]\\VZGTfG(钤۬ o.Yl˶levvo[e?>5jH_|EΝ NJ08ɓ'+ [<Ș*_~.J#08#08#08#08#08#08#08#08#08#08#08*,22R;wT:unHcSSSo[>cI{ァ9sѣ_îaÆڷo<==UN֯_do;#OO puuUjj|}}+/..?[d 5p@IRjjjǵluvv֘1c4a„2]jnܸ!Iڵk.ɤBQ͚5նm[mڴO… p]xQ Е+W^bA]j~im۶c?-yyyݻwf͚zǭ7jHիWWRRz駵{n5o\>L'N(++Kiii @c7w:Ҧ$/_VTTz-Ͽ~߫UV:r$)00P_}l٢9[֊+,777կ__V\\nݪ۫QF:qΩOK޽{I?46lv*wwwܹ#b/uY 0fWn8;;[ڵKZnvܩ={Zj$=cV<:v-Z^z媹M6PHHΜ98(<<\n=><<\9rk9@U@c K,ѢEM*\8e6m^{55lذcz]v-:u߽{Zj%'''Eڽ{{nkTO?٣7n(??_ g}}jO ,́c 5ŋrJuSjjZjF3c/#<֭[޻ׯkӦMںuչsg=zU&/dPU0$??_ӦMӘ1cTFU``vamx<ҥKNX| ?'TӧUTT !1ʜ֞={_|}Mbjw̮]MǏ۷m6hֶҸqԶm[5h@ 6ԛo͛$i֬Y {պu4qD=S?W 2翹UTTnkݻzmזb=zT?S޶mFi7˗%Iƍ^Ç7ɓ'e2ԠAeff=͘1CcƌQtt ӧOS-nMem*fym|sre,l6; 0<==o߾@I$ݐtf]xwRdXe-[l~*kF*#08#08#08#08#08#08#08#08#08#08#08#08sqtڵkO> $ԩSڱc/_W :v)SîYfj֬ɓ'k322R]t$)33Sv|` l۵=3?6nܨ &xB9sFGULL;fw\&M+6kL˗/נAo߾;"_wJe!1;j̙2LڲetaI^{5kNƎ{G!ΪU-ggg5iDǏ5dȐێuƍodU^l6QF~8M4I7n+((H۷o,>ʪ9pKSLdҜ9s4zh۷OyyySJJFhL&M2E=P׏?K.)55U3gT6mFX]1رUXXTM:U111?~j֬i=.++ؠaÆ Е+WJ컴pW_l٢Xk%Kh"ŋm6ըQC}]zU*((?*--Mرc[lԮ];k[RR}C"&XԈV$STHډ%8&8iLC4&`h6шQOE2ppp{-ww{gޅ0..X VX/il,_<-Z˗/z(-[zj̛7/V\ׯ|;qGw:.Xvmdɒ~AlX|y퇭3,8L&&L/+Wv9iĈQWW姺9眸#"bqgLj#z<_\9"b߾}|.pƏf͊+V|ތ1F{㎋ŋǼyb„ qwx83oo _>$C &DDĦMlKb…]e9{͋'|2xXzuooFx㍽|0,b\aOFDĴi?;NTUUO~hoo?l˗M7T=:M6E]]]ݻ7^z'>=Pc7n\<]޽;θK뮋s_=zcO6o]GġV]]o| (fTXԧvZqDD+~8p@Ø7oa*'?ɨxsˤIb֬Y=4rȘ4iRK=|9sf畵o^ҸiȑQUUUU'@zZaKiϟ?}vo^:_"GuTqq饗ƴi:>OŘ1ch7o^k#ܻ?s鲀s%qhnn:+,Xй=J:fΜw;O:p@G̟?ԡ 92"">Ǯ]G^zctҗdɒصkWrʈ?߹w#SsOs'f͚yQ}~W_UUUqy /PtǏQ_>h,]3zO(L޷۪sy]qۚgoǜy晿*vJ5kV|߈Ƃ޽;,Yy)o`xعsg1d3&3"bWDEDkm{s~:r~#qlܑs?WLz|\*/bܹq̙3cĉJ򗿌;_3oKI~[[nPX q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q5@bԨQQS+ʫ5ZZZb߾} 0Dyc 0`jjj1FMMMV!s U,5551zJuuu 0jjj'5jT Cz"0=p'$NHaĉ1cƌ8qbGssslݺ56lJ!>ӧw>zشiS7d2Z $A)ĉ;ZsnycOt:?lٲeK;E_|$FWRfeOzě\j<]ﭶ8p@쌚G}1#8%:""bƍOٳ;/SrM:5M'tRlڴ)֯_UUU1}8餓&l?p""/|CCCI_]]55]Xڢmܸ1Fy)TǢ>뮨>;f̘ׯ3ΈGy$~?0ݻ7:3fLE=zt8Nmo<֑#G]w틈{,Ky^(!h˖-1y2eJE:ujDDlݺg;3&2Ly 1bDr<``8%ڰaCL<9fΜ7oW_}}?9sf.3pUJ+Ć bĈqgsLTWW1f͊ DMMMݻ7v1㫪ztϞ=q8q⠎(/3p{L&ӧOٳgٳۧ9bqǞ={>8ꨣ:ٳ'N=hllhmm7coDCCC>``8}k֬~:f̘'Nhnn-[Ć bǎ`?~Egy&fΜG}tw}/of{ODkkk|cطo_򑈈x㮻vrH5gΜ gk&O˖-O}S 8R4f zk?ADD\~]+㤓N||I'ŕW^\s`z*֭[WDġx &Me{mmmwy1uX`AsWFccc|s &-N_W7n\\p/첸{ m=&cuxg"hR3rR_ĸ/_fYrOkiӦu>6mZ&ԴJW\qX5iҤ+~G9]w]477 //5jT,Z(-Zƍݿ*-sDZjU|+_kƥ^'cŊ~_ƌ7pC[.֯_7|s||ڵk?y,_<;袋ώ|+q??~|,]4ᄌ;;O)ӟtY&_.Ν~s΍QFu6yx饗b׮]z衘2eJ} 't.2/.V 6NJѣ#"ߓxsύSO=5} .Ƹ /[o5v֭뮻.jkkcѢEq7… .m۶Ň>ضm[G?SO=5y.?s\2/^3f̈o1̙---dbhѢhjj*wt'vys饗[oQFʼn'6m>~ؾ}{}o{؋/öǢE[aPnfѣ /(S?p3<=X<ӱgϞx뭷bڵq)DDD{{{[.voVu]"UUUEMMML4)^3N>8c͚5aÆػwoӚśoYt1*6ިM[[[#"zԔ)Sb֬Y>8qbY 0d} r-Rm1hoood2Uk&fϞ9`lٲGw]fڵ9sĜ9s#Ǝ{M6__~y\{ӟ4n8xa8㢶6~unkjj*omٲ%q뭷ݯ%^~.۶mǏmܸqgϞ5u/wy\SS_~y|_/1G}tPd^lZ''q:5UWW ;>Owyk׮ؼys,[,xޫN ..(v3gΌ t>f͚XfMp q;?#"\|۶m]tQk߾}z8g?YtǤIbرcǎ1cF<ݾיge_|1"q5{2eJ<>&psUWu]ׯUWWG[[[SDEsu_qRmb?9ٟxvg>6mZL6->XpśCWDjll1bD|\T7x#yΙ;MMMqwyزeK|_d21a„wo36_۶m_|,\0?[k'_&/~e9&&8\DdO'?tMJ%No~qJ[{D6559bĈꫯ-[q8}c=w}w\z2ƍ.,VZk׮XreDDW|UVӣ=կƱV;#-Z4h9,X?Ob[ZZbŊq%]{k={wcҥ_566l|=lQGUc  p ~͉'ov;bĈhjj3"Zʹ魁nVfޙo#?UWEDuOMm3VFĄܘPLԙiӦ# 'N[զ""^~N*c'~iӦؽ{wY`/˱p>~|{+u] 6|."ġӖsɝN8t7#7g@"OJkqwϷ2V}ݛ~hkk)AKKKK;vt_@yzs΍;Wy뭷boo%:jkk7߼)"GOʏ3z-ɜN53pzSUq&o©:u꒣:jnsss.u=\eRHP}%DCCC޽{ƍwoo#:KDt?|R]8_/݂ƹ[6nO{UCCCvW]] w_mܸ"%J;=*W_L*p%‹:}[#bO<ݻwnhhȞOTXmmm̛'xkqhMKG"g{_U4 r.d\L}O8:W۶m{xĈן^__?PrZU>Į]*=$nTJ&9rdE[[ko56mZ{hS(do Y=CJOw&L޶bWʮ{[]ǩQ{'ѣGW[[{Zuul0|꫕F|7@R}i755^z$-X|0ޏ5ـ]NSnۻ_̀Š89Fo2.4жpu1Bkr~k0/.J6drgϿm/^ŮP-kOe@p._mm7{iQkD@y ,&BRaSJgŤp)5dgMqVet$=SnH)tSwݴxMV~2N4ǹjgÍzzU=m)TP~֡ɏ9pgtwB󏙿_73iǛlFv?'t}WhLORg̀UDWݖ8qwW~{NyJR'bW$>)T}S촪gdgtDSr80𺛁}>M~?*V;}*"8eNwϟ;ۦsgPH^~~_~ݭ3PoJٯk@;&bYy__Y߯ۻyb/.o IWݖ{/d:*O{7{"@ia &S)vRf$e0cCNʿ_߅Nn{O 20p ŔB;7IlxOEDTArz5łJgK Eěbom`},b{rp` ;pY6=;1I;HsNz,d%vFP 'x3$Tbf@Eg{mY6Ŏr*Sof'$?&"Sh.p\j)qqJHߘݬ{hPqW4 垅S蹾B(fڧ@H3$fDp ׈SO`& t)u߲d}ܗK (MoMRM}z\O*`_*@En}= T5=]]jHǛm<ݾf̛B'V̰ 88rrKZ8tw] 15OO17ӛRRL9M_/TbD"Ns2Yf|JB=hH+: D}RH,)}+&0ї ĩOֿiB~}yJ-Ru?&xnڔ8R紪#EWϗwGrG&bhĉT#P 5IR?j(Eru(}frMP[h5$ ňt(^R=j p1c uWT:B`~#T fL&H )~-PJrE#}7M֑<vD\!r n[ndGt5܃p0 `O&`;'8BM(bzC:@IENDB`extension-manager-0.6.3/po/screenshots/_3.png000066400000000000000000002112731477302130300211370ustar00rootroot00000000000000PNG  IHDR/ VتbKGDpIDATxwxTeL2=$H轇л4E}EE[UWW]{WTX׮.*H$̼附LH5<_H3 FպȣӪmȮ-᮪eۍُvi{_Hc4!>j*f:iZu wu&JA!!!Wo"""""""͙htgΜ9%àVnc-W,{x```yG/""""""ҌtQ Ry9jՔpW53yi+w7ѨIDDDDDDK&Jr%kMkkn&AZKDDDDDD.vr`*'ܵĎpWL]""""""r;z[>\6>꺕+ uNU'*V-""""""eהlWʓ](bm 6[KH=p&Dqo&?D"P)'ƁVLED.zL&Μ9jm:ӏlL2FWFS3!ݷ…ЩSV4v;Kzz=z4U""Rյn^UYRk/"r1x??бcFx0͍V4gC ouֳaF<<<:u nnnVUGsxQUpy#]+d[DIƛ: :}ۼ=dgg;EDD#F`ŊRiLׯeϞ=<9}: | ǰa#Χzu)(xxxpm2|0|}}ٵk7/ oSu?㪼gʊf޼9{߲xו}֑XGnڷp:7w}'111*W{ED>ݻ7/w}6ҋtEbbbSj ʓO>Wd}]!_O /HNN%(({SO=ҥ% *Ԕ)J||~~̛7abo͓O>A,^5V&77*_ý-܌lftԉ9]nɗ0d [oaѢpss'##;ٳ1cZfͺ9sw8Gx챿1m4ٻw\3 OOOoI&2wrss̚u5ݺueǎC2bpʕgJSOҳgO:u_}L&NNccԩg{nzYc WDD{'%KrI}qN9ZEСlذxzz0zhڴiCbb" DFF_mvƌMǎ9z42%kl63{uvۭ׏7%Vreύ7ތba|iiitS⊙w߽uP2Ywx233;, ƍWdu]UVUyϔ{zΝtvuhS(OlfΝ]Z S5_v٥>A…رF͛7'Z|9<۷/kMupUW+"3X}qݻ{yz⪫{nb0s82Jnݺ3f9|-&֬Yf]vuz.))r-qqq}jok;/}Rż+$%%3thtשx*欬r,G+""b1SXx{QQg6pE+;; 6+vop}]tOPe9r={лwo=-7~}Ӿ}{|q. Ҁcal6>P=STTuu:Dž~:#שx=ݻӧ5Y; ^JΝ8r({5{;y),""_|7|bfϾݻQPP`஻$447|t^~\\\x䑇qqq᫯?\N6>2a4IHH`̚5B{ر򗿱d7xyy3{r-[ݻX,Lɓ'˵7T>֬YKXX]va5ʩϵ8qGe底px*F$58>PdґP=SWoޅ~:#שxK_shh(;w|mHE11Ù3gn3333gn= =xk׮8VDD).|>>K|ӠeX,-Wę4nr=g3`N-"",T5!$ihoED,- &""ҴiSKٻw/ח[gϞ'&)[i4i4KYYٸ>}|ŗE+ݷ""RVpwEcEDDDDDw!i.p8n'P-""""""ZLDDDDDD -""""""JEDDDDDD@ { wbbbC!""""""rQw}:3!i}u8n'P-""""""JEDDDDDD@ (q%"""""""NPuǟd_*=?v(c\3.0믝[n˦s) /P1Ef3#OOKx֕^CQQV ϏJiʝV)kfrX?p6bD%zUu]9_j5Kظxrss cAzi^񉉴bQz3Vp!z 7/bi(NOZ c&M)ؽZ?7K㦹s 4$[n9=%e}x z>:EEҪeKDP6r0rs8p۫䪶s=d09'$qV222HNI` ]ep :";'&beDv@xV̹Zj7ytD``_;LSR8b!&:___";tԑjRd6g_ٱ#[؟D~~>kEFu񞯓N/XQc폧{8WU1d{ʙ3ݳ!-Zp ` HCqz򫯺يkj呿>`b;zJNe&:KcfA^ݺjZƏS;oo;>M[SOra6l]نmwpAi/u/ddlZltڅ2k< ҩS4ֵRSSX,t-3={t*_UuR kꫮ^wQ*zX 7ك䔆]DDDD4o$1EXVV+Fc.Y>~h>#n&V]sO?Ybؾs#`oݚQÇ?1ixRo[\x|ƎōseX(e2`ޭwWDZ+Vfxyy68K9rN,\bE9Øj&iJͪKW]3ϿH|B<8sg_Ͽiiirݬ֥j7|rח7^zヒ^{yWWWNJX'aff͹`;Uk/VG݈a1|7ܨ#x:xp]2[x{ пN an^+W!? wxV#䵷?KҿOv6ȳ|o~`"\]\hǼg3ifgYݧyIȠWʋLO@}t FJrxoXA@EDDDD6 p0 =,Tv6lZvHmANչP8r8@]DDDD.~NK_ %\_(yn.q4j4f !8L-"""""""N[DDDDDD ݥ E wV-28n'P-""""""JEH ~)q%"""""""N[DDDDDD p8nVrJ*W^3MʱԦGDDDDDnFNW¤q0 MU;Us5M'''$l6C{{yձ kϑW>;vhT|S**2W\223Yn=ƌ׷[O0X,t[ }D;Ǝh$#3B_#S.:r@I\SR=nWp^|ڶi 9Q~hOS֮@\B[߾z x{{^ |[IP` };<կou)'ТEzտ{3fJ~Yoo Xk9K.[.t |CTdGU|3_\\fյIl4ϫE}ĄciݪU:GtzfiV1 WY %>!GIٌ];wku.SDDbp9v)&֫܈vmi\*ڵg9U Kv= KNMY󗗟_V2bhtkgu#`M?qֿM:q,8j`ŮcD{9ZXb "jsr ngSBl\<'N0Kq3i(FI Yߏ夝<1U]dC5㭷TjqssoG徻/nɓ&>s7ݻvJZZ+WQXXøgx7=r׭#>>6myB{Q\\LQQ'%pf okח¼g3y'p/?d??}דz].Ty|GrrsL86t7oݚr+!)>Tjev9oooMTddVbnZپkqfڶ [[{e=%q%$еKb`Zٺc Xi߮C dj6 f^^ 5zK.Sd$q d>M?1C^S^u6raKdRzvᣱJOgфnfcϯ{9|(gJL|}|5m;&0 !HK#ӺUKFQ\ص}K+-g =h6kn=9~6k8p`'==ݺU_l6-~w~}^=zp}{nM^yĤd>x--x;ܴu+w/?ݻ|-ݻٱ#y7~ 'O*drMx8q>^>S/'~Ĥ2qXoTYn=ƕp\ ),*J4Xr223Ke?F>I lءCIҐD큒!~~L3+f\F(V[OvvulݱcL;ӧ[[{_tЁ\OL6lLvvMӧ|>rp3 ᇟSt^l6e2aصDƍӧ~,$qF3aϤ1}ZI,;vTbChHb|܈Hh Xqc/**bG' zBOOO|Iȴ?wك-{|Ji o`uʜ$GbeDv@xV̹Zjs_ 2ݸ u1eD{¢"_cI}.qwsٶZg6oy{kk6ǟx8thQw+|+[h4һgSIJIj_/cX?SmZÃjiLo/xOKNwTnZy7+n///fϺYW]ɺ /;x7IVV?ݿ%;;Ӝ={(i=rkow۰CpCu. Nw纏&pn aXn~~~k;nnn9׭cG92,{zqǏ_c7z:.?וt16UkO}ڳkOBRlᄃCDۛevb͆fr}_:+eS4\'í`}vZJ~Ud6:ӷhnˏUť+o;Kv"b|6{ZDDD G~nyʤuxGDԫ+/?'[sjE\5r<<~_1g@ZźtzԦOg_.JA/w6B-pwsCdg0[ >׏\9C2xEq]\&l&Hu~bΈmY~Gpq1<=#B`.-{'* ]mexc2HJNis7Cq̙u>.(0cz*UZ| t}A]blӵsǮJٹ{Q;[ŚٵPlNTIpc]%\{q[Y7>u7{+X~YYY,X3g3r$̞u5o۷cZI;y+p3se&e>.w~^x5lN$ޢp!ƎEpP0y,[-WhdܘQ<+ bb.*M+Nf6WL&mۄiV:Pn'EEE8x q\Ann^ewbMJOYՎ4X,熀dK=f#ĉR2Iѣص\rrrٶc''ٽĒ;w&19gϲcnf G\Pd2ѥSb-(`-xxz&j ѳ{wZAN";'ظ8k{ZDDkM[ڻT;r'5ٻo? %x{{1rXLb΂H>vܲ*as

>Ccdxb4 &W";TА\2;wwL&WZ1cJ][f˶9ChhS/dp!]Cev~e%V֭\;d2q71:r~ʎh(3&bPc{0?z-&"""" p1~fS0WXϵ6FАD(EDX~>3s5ɲ`>>>,"үOCDDDDIᖦs".cp!||1}zIٻϕOpPmp, n%!1BZjC-~e%GccbbF#xuUWGݛ\>K<== !.>2J94L'`ޭ+ c6YqII v̯{ѻgO Pm...̝} ع, `q/V֮@l\Fݺ1p@~]hHу˪U?xP H4˄;4$WWWNgIΝJn?@pPm۴!!1eӧѪeK:|(+ߟ<O? 9%Ȏ1\5rݬ;vhOff&Oӽ[7j*cxPRctĺ(..fȑUeδzr= Z g>/gѮ?\Ibb-e=[ן+GX)(8SսdH=~m;vBD pDDD~GDu:#8%X,,R\\\6mFc&CfĉlؼLv={dXP A\q F#bڵڳN ` JZ8H?W]1\IRr22~k';;;t .>ӧѭ}#eDGrjуUl ~7 P&vwsch4sn6oJDkGvv6I0seFϺ?;;J`` =wԛݝm;8~nfdljS\?s_:ޚf$99GX fm6?QYv-ͫ͞lddfbhӦM⧳JNLJwvС)KN%9%rg}[gVΞ]nhaab)y-Mxk>^ueX(A;G~F``ST}~Jc(,r욈H, Ef3~~JED) wP` ƌXdmжmv'hnS%l6[3ͥVVtFkr}e}NEpp w]TOLn.d2q3ILJ"!!xV\;m۶ADDDұTwic˶>Uqq1OҢ91tNLL"z`\\\HJNw6J^ӧ[k߿d Jy Nݣ֙ƒDl#e$'paaێ 42Ks7S󙔜LAF}5>"i33LEDDdafF#iBRh%x{yb&==ݻH6mHNI_ӢE pqqa@~҂SYHI9Vk-iժ%Ǐ૯жM2238?-ޭgɷҩSyy1aJeGYq#۵c@~x{{XFQQ֮Ã3.cɷc_IppPe:{5ҡzhƉ4z A$$&UÃ\lF>}mKe?; Pi8kׯh4SZDhLj\,eۀz쉻„qcڥd) ѽ[Wf3IɄqe[ƌEhH9f8Tڹ3EE;p[JZLJ fȠAvɓ'1=ӹSyyy<|>26lD~~>CŰXVV]fLgOHhllG]O?qT:ڗtJC ӓQxF`` qWL>֭Z5 XѮW̘A^=:, NU FJZM{ez׷҃k~=\.p`ͺ>ݺ6u8"""k۶mtԍi24 =8̀R2J\dlᖋšVEYᖋC8pad>M eXXS&"""""4J<<<(..xzzҳG a8nq:бCCDDDDDQi (qzw)?|KDw} \ޘtCi6ԥ\DDDDDD p8AYlbϦӾADDDDDDn'P-""""""JEDDDDDD&_Q9ı]=@箱 e0ZG}.FË-My.Yv%|0X#~ ty>ڏ-lO,hݼ 7S•Es.X׈NRY &0`d'OsHb{9} ؟j[+~.dYߞ|>ʃgŃ!&R2-TK?gs䚻Q~Lᅷg\^<,Nϗ4%i:W5а>߃fpJ._;wFvם.Bf^1o.\lW;3{rBz^1{R!۹|[Kj= 1MmICu=rwWC.I0l\l^0܏~΢$&*ķϐ]`e|7Of ṟ~#y,ruO 0x ^91nXKyi }Y =۴@9% ua'1 "\>FB\8tro,ٙy|w."DѢftAZZ3TjJdO30L(PT %Kb Gr"Hn\{y],:>˱Uhfi+*\ "܋U ,]{pt1g-r ^.T3S_/93Y6mA4F7WێWdxΘ*mkgȶ_DDDn4u;J& ʸEDg.[x͢o\4С'-0ijnjgL؃S-{;ϙ1[.Ov`0p&YUWUb0p&?}vN_X~CY6LV;n5?+Wv=J>Y?^hcE[ŕv_7Q<vkw2oQ 8>%5 pŅo򉈈H5k1fEyODDnN$[~thVz MsƳJ/7!D|okδGWg] PN>^nƭ>6;:.'wmɽc~N!wf RN3K0ב x okr,ix*_Tȏ/py7.f"""w^~4ue \dg_f&ioAED$2?dgys7= .n+M\+1r ;Njf2U J\#4ȝWp1@@"mOl|ѕ̼7s6 ~8w+y+&;=[ce>}vƒ'#k&Թ(yOwTxL33Ąz:r7Х'>yp6;8cQ>9o.wsby<ʛfnxuK}\N eT[9Ỳ(o£)(9GsQ44, NΕVoIcWoӅ|vHo4*Qnم696Zfۏ.-=q1,ak۸B5 I@d}\x6MVgfB"gY|+~,{{7/M\ bS9;_o<ޛgbv̦p}}DF{Пo/<|_=~W`o9cFO/K&R эs _0/+w_35pgKe^dW W.XY]>ϖ;y? bBNgUǤTv2\=\(I/0^=!Cu/^u6Wm|\xΪZՏy """rg kݖ뾔]GA?cG!P `dRIcۚ\mudz!An|6QδHQ}FWvь fѢWE'/Y蒘Qaup@\/C;ӊnpq~Np;%kܙ:`"""""""unpKwNiZq@JADih[DDDDDD(NKVidDDDDDDJEDDDDDDjn L|#r \wr WK?2Z0[̖v >`Ã0^{5k5.Nbʕ>|;>RǿH4f1oѾM(iPm۶sJ\}ܮ^zٳgsoΈ#5kV&"""wͥKHII!??~Ӿ}H /#uҹeq]kݻGUxxxハ7aյEǎ#$$6mڰqƛ0xzz:8]ϓ}ϵ[x}0\]˔ZmڴGNW@/]ڷxގ:3G߿.ёt(U_y')b2[7'3xx|+kw{jnJ#=aY^v;L^šÓ|_uo?Nlf 1឴j޸ZŅM:^0n8sNVXA߾}l̚5Eqz~Hhh(կl,]b7oγ>;@AA:t#GoO?Ѹqc̙30LL2\r'xw}__jof]?Py(V-"rkbڵg]]]h }_Fרk.\sdk=YjiG҈l]n{6m`i^xQ&=?2/T>_ND O /#=-`*ǤO?j9<~a{_ڴWߩ'Oh"F]yٺu+=z7d,_ݻwɃ>dblڴQ?99ĪUlBV d5tV\ɠAƍÇٵk{!55^{YDDDnbaϞ=gŊl߾KD9} dlڱϑިgv4nX~M}#'\V-l8@n~!2/.ʐ!Cѣlڴ̳""RZHлk\Wؼk?'}+BLj?rGO:ˢ.fbKmpf0TjEㆎs6m'xSl6W+vv;L6޽{eƵ^zꤦb6ԩ㜏:tx,ڵk:t(/JG}mһwo"##>|xÎ9fclْ-[2tPrssEDD5l???<=={#33MDĩՉo:_l23W#iTL?z(YNrlvl[[nba+݇+nneQNFƏOnHJJ\QQV xyy8>}FVx'/x"iiiWWW6lիdРA<cHKK#==qcF j;Vgn7WWſoJqL 4nXOw 7dCRXTL:IVa??uU J4_DZglv;\-&աaÆnJ` 99qjhyf@||<~-W桇Q?..Em6VZEFF!!!F.""Rb2<&""ՙMhSmٌm{~rJ$ )?%R\ oۊK&2<<=>{3'\ kwR_~;u9yYNlT[{_mS{#X,)..ˬXM61x FFŋ/Ȯ]8< 4i{/K޽;ӧO|dddPXX͛!((www&MDBB6ljriRRRjtLDDDrEEE|w?B233oh޼9SS 7>qsOA<`,_lŌKpZk֤# y'mB`ٗZ`Z_]ڷ!=/8i}}j[ QXTKUe|xyyE6m7oIIItرzsΥ 8:ڵkK0ӽ{wǹrIyYbpB/_X>e&O̸q'..ݻw#"""Օo$n=CϞGy9Bt^7`z,3#YB~?o̙4J mk;RRRRkݖG.erD""w.(` w(3`lPfit>QDDDDDN/wR6.e҄B>ߴU亶EDDs0EDDDDD\)*fݶ,Z/IDDDDDDqYGnH7V=-""""""Rp%"""""""5@ H P-""""""Rf#j;J9.""""""R7h[DDDDDD(JEDDDDDDj<}BܲCi/Mxlbp-N >{{***f]:1113׷///;FVn V+{ɓl64iB׮]qs+wөSسgm۶%""2X|d5-7'׻y;uz^۶s1o۽:wCbb"ǎcҥھ};W\O>l6vƍyt)))ck9Z):Ŭhܰ>Fz4!t`0vx""""?+?~=zO`` <.]ŋ;v-G,"R78em0[\/ն9x3?&c׆oy0aBf_G*`X;~̷sLL 3gΤk׮ұcGn긾vZbbb!<<fϞMbb"˖-ݝcb20a[ۛ/^|KL&&NHHH=b_'44 ~_=Cnn.ԫWqˋF@׮]{qqq?EDS.)i҈&Ax%Ĵ']k}O\fyx@?g#c}ׄ6 &8(:}LN^!G jXv|-ǽn:ϟOf͘:u*Cɓ0p@}]z)222r &M"//̒pfٲe9.]TYqqvڅdbĈk̛76nȪU߾///f3EEExyy`)..-Jw7W&<7|})֓qRzvjGiG7r̅ vAO=<ׅV< 3ydΝ;ѣGd2cHv툉^zvFBBܹJqpBMFpp0͚5cƌ\例_BTTu"""RFo),,$77;v`(..DD,pO5GNi ~7r0M[' ;wwDFFϯkzJgfftRmŋ9|a>r6;y7j%::QGƋw{رcVϏ\]]lH 5..DF6$y{/7.6ض35}mߍѧ^eoǵ$Օ 67߰h" D޽37'66!C0uTZhAo@@;vQFecZZzKDDD-3!_s=RD""u_ɶ\\\7z8gSg3)RҸa}<=˝N}#^?zFc&..Em6VZEFFRRRtf"22xK3!!!FV^]p ɷ3"""VPPs PDD,LOdgW[9Υ\2/Nة\d6͕b[wH~R~^}U`ĈW=Had߾}XVׯ߯m;T:eÅcnP9WU6KII!u[J>Rv~-G$"r|yWB0دN\DDDDDDS-""""""Rp4MHωfEDDDDDDjn[DDDDDD(JEDDDDDDjn[DDDDDD(JEDDDDDDj&?G{?̂ Z^)EEE:׮];~JGVui|DDDԩS\Çv(""NnoA||<̛73gΰi&^x,X@tt4Cbb"?|s?8ѕuq|DDDt֭c׮]X,GDNpn4w\mƾ} t #,,Ç3zhj1%&&H?رcЦM6nXለ N5})fΜ_W駟ի<<=zyi&{L&&Lux{{ŋKܹsѣ~~~tڕ]vUzEfϞMbb"˖-ݝc:ڻ\272LL8=z4w<>""""wk׮{ク8՟""Nͩ~c._'xP ۷/C !--+hذ!;wf߾}xxxNRR`Ĉ9̳E1֭}%;;3i$L°a0̛77Çk.Cjj*}Np8pgرc_>SLmrqGݗ^zvFBBܹT/2ݻwiӦ4lؐU^rssYp!ӦM#88f͚1c V\(s'#""""""wS=}! ]u333Yt)۶mŋ?̮sqq{9r䶮W#G`,Y æONff&ӧO'//WzE7oΖ-[8y$U.ӠAҰ3i$ذaVӧOr#""""""w_isJq7cnP 8.\[1={6>}`۷//P1]!!!8pgҭ[7,X@hhhWʕ+ >7իa̘1<ꫯ3f QQQ$%%ayw裏8u5bҤI{.ׯEDDDBXp);L&(` w(3`lt s:t(L>;Ҹqc3ͽ{voLoJEvnZRp=e^~e?ӫW/ӧ_7o>|PᑘxWq9dQ5jTmBDD%4>""""""R>9pk׮;.""""""r+4-""""""Rp%"""""""5@ H P-""""""Rp%"""""""5@ H P-""""""R*>|8:tn{}޽ 6o|#^}>(͛7ח &?gϞ-Sw >9̙3֭~~~DEE1~xrssK>|8ѻwr8{,/-[^z3pebbb裏>X7~ej7***cUڵ߾kTn|,Y$>> &tJ4LӇBz-^8h?99M:e).._~tԉ5kРA222زe GMjILLرc7TҗHU8qg/gΜaǎ7EDbNp7jԈ3gI=Z[uX`qe˖ӧT1c駟~z[a~!/^dԫW0G=HHHO>q±cػw#mԨQ&U$&&v"""eҲeK6mpyӕp܄S-)xg9rɥϚ5_~Tj20a[ۛ/^\^LL 3gΤk׮ұcGnZBBBhРGM6?~ĉ !88ѣG_䭷*u_>saرWXnΜ9d///f̘~JVVﭲX,qJmڴܯxީӧb ??͛h"fϞMbb"˖-ݝcV)ʾ֮]KLL >>>Pm63g$""@9qD%""RU9///l6[-D#"R8]+RjpFFIIIIJJ1#GrR֭[IMM%66Cb2Tɬ[?\\\8zq8|0vbϞ=k,ԩS駟E>כÙ3gҥK{n/u?2טL& JגuڕӫW/f͚Ezzz2o޼2_xVUe'$$`6:u*:t`ĈL4)S0l0f3ͫr|}eee1p@FEzz:+WdРAo|r/_ݻtUu%""r+.\@ j; t 7رcoٷoP2;rH˔}饗h׮aaa$$$Ν;Kyg&88ɓ's9G\Y+W0o<Ehh(\.\ȴiYf̘1+WZ87}RyOz{W*ɿLrpppKlv+{-__RNJ+ʔb۶m?PΝ;zxVUe{xx?7|/ŋp ۪j|}edd`2x ]vĔWqq1saoߞ0>rssϫ/[qirss PDDS&K\toL0̝ܲ;aÆCqJw DZ XR _ȑ#l6L˖-iٲ%C-;8xرcs'O&;;lyrmӦ jM4ԩS-**";;Roe|^yv{cذa5L4SNtvZ&ǭgU,={SO1`{=ǘvڶmK޽dlܸzR+"|||СCڗHU}vbbbpDDmv+BVpsscРA&B2dNJ-߿M۾4߬ljbZqq)ĵ vAF*חPV^Mn݀ <==ɓС?JoРAAA$''ӡC2v܉+[.s*{'4h 22>r^zxVVZa<ۍa-ZĠAݻw3EEEXV,K?h<==+}v 7|Cƍ5-"REN9 %ˤGŒ%K8qbeRRRtf"22XYVZa0l0vMHHFիWW_?OPVӓ3arrrJ];v,g.3jZy7o~w62͍&MTi3[p!f͚;/Lvvvf㋋cѢEl۶UVQLxxx=JJJ ۷־DDDnnyf""rsNpC&V_5mڴ)zƍadffdɒ .N}s=ǘ1cعs'.\`ƌL46l؀jӤ?O߾}ҥ se-[`4+O>/)u~ĉ˚5k8s [l\|y񽦼NJʔ۾};ǏgqQz-RRR:th}@ƳAa}}+[VFɤIoKLL u7oΖ-[8y$˗Ƞ͛7CPPPFQF/k.Ο?+Bpp0־DDD*cINN&??={b۱X,n*""9u%K8ODĩB3  v{ه ;w&MPXXEDDD)))nKP@'\ίDD\P Qfg޽{iժmR,:Çܹs$$$&c""""""&11&M0`Fѣk;,qrᾉXvYaHn[DDDDDD(JEDDDDDDjn[DDDDDD(JEDDDDDDjnVT"l6wvO3yҟHm0:t'O;͚5#::ODĩlfyZ?8w?`Xϧs<ՋLvQۡ8 ݖX!Ըzѭ[7kooovƍk1*fM&'N$$$`FM~~>ӧO'** @~~>͛7gѢE̞=D-[;cǎi{111̜9]KǎٺuڵkLJpJ裏m63g$""@9qDtܙW_}T?`4eϞ=DFFONJ1b&Mbʔ) 6 ̼yn5֭cСC1Ldee1p@FEzz:+WdРAo|r/_ݻd2ݴ/@ӦMiذa67n… 9vaaatܙSNfRRR8~8:ā1b#GUߪԟ4iocXtiۋa̘1gO8A˖-9pv(hѢEx[\\Lo,X!C*+22CNp… 9x`cδixgnzp}+WP~}ܹ3PQ]z8v 6x?s+"""k߾}۷&MХKʔKII!u[|_H]0ȻzE6~ppg9fc %frssezSO=ŀH/`vh""NicHKK#==RZjfiVnt-YtuueÆ ^OOO OC-[_ 3(͛7ח &SvX'::ZJLL矯 67xg}׳~ΝhQb0a„i2ݻ7+V7gƌ$''ӱcG222J߿?_|Em͜9/"٥5k֔)W\\L~(..f͚58q_tԉKMj?k{BDPTTTan<<<LJx~߰zZ$&&v,Xroٲ%})Uv̘1|駬_}V~ŋٽ{7 ,,~ѣGO5j̙3/ѣGٲeK'7;޽{qsssWIdUcw=!"*##˗/ӲeEDpдiS똘/^L>}cl6fΜIDDs ~_Z~[\\Lpp0 55k$$$8ʙL&&NHHH=*Ky`gΜI׮]cǎlݺq8fϞMbb"˖-ݝcb20a[ۛ/^| #]}{X,넆įJ111Fbccٳg>OY-Ub!!!4hѣiӦcI|_䭷*lW~̙3cVhŜ9sx5^^^̘1O?,g}#G\Yx嗫[E, EEE̮]سgk}֭cСC1LdeeUǤI2e Æ l63o<<<<'))0bFÇo;kvEڵkYjw.l<7nd…;v0:w̩SXf )))?~_ZJɓ'n:>sRRRpqqѣU"==N:Uy~iZhQs9999s.]{W^R+RjxFFIIIF&Rǵ$z]v}ՋYf^n{̛79,f3|SNC1ܟw;?w[u%"R۷QgV 8 K}ǦFdeeW[oň#С?{eDAIê$i$ᛉ!SںImr]l=dʲ,]CSV"d[ R*9 0f2x܇\}#ƍϢEx7С[';;M6r%{3g?;w2p@222(((`xzzBhh(٬\ٳg~;͛G\\\;zht邷73gٳ?~8*OB֭Ϗ*fk%//e˖[oѩS'x+sq#Μ9C%ݥn>qY=<<#Gŋ}jNUm鳭&1ڵk$''Vr*fnnnL2{w7V]^^gQKo+?}40x`>.\@ZZ8::c6oތ3CeƉ8@ZZiii9s3N5?0'''02225kqqqtԩFbj٥m`0`0To^V,_XXXi WWWL&,gg 9s&|&˛5kWK%&&H6mʭ:u*[laԩ :D*:t(wח?mKǭ8 zeU5|T]"">|ׯիYz5)))H:.ռys[p $0 $%%ѡCF½g>S̑|l޼>}d?""UV~77[:k8Jŋ%8877&e;>5Y? m/?*BYgggVXiӸrɺ'prWY s37.W7cǎe͚5L>ݦxlQ~}|||.γG˫ʤI2YVSUvn泭1G<=j۶-ڵ3[DD*fw wQQs%6lݻ6lX1vXz)<ȹs:u*G/fРAxxxУGΝt.g\\\ɉ3fÎ;0 >}$c,z ,VZ@zz:׮]E\r+Vɚ5kݾ۬Y3Ҍ^}_Q֔]777x &L@bb"ϟg޼yUf\lܸq׏{%KwߑLBBnnnзo_z-ӧOI&e~'0`.]/KeΚ5]vYc~bʔ)l߾4?/LRRÇ?-e[b7 33fj e5[wYYVSuHͳ{ٲe4lؐ Ҷm[/_ƍܹs-Y0d:v˗ٶmɕʨ(Ν;G=ˆ Bzz:> YYYlذ.]ʕ+Y~܋/̙3 hsS;wlLջq Y7Wqqq,Zx"""޽;˗// j.Zܭ箮8p(^z%* ˋ^zY's 0vM6n@ٳ'_}v"((b=`?-e[b_h999ח-[ƺuصkP\&X:˲泭e/6_^h z vG}D>}:αjgϞLJ\%/"""7IJJuvx58Ŭ {?&r<(_^FvwvF~~>w_]b9p!lHu&lݺҙpQ;FDDgϞ%&&V'۟pנ͛[,=c?>>>>DEE:,c-b0:  H-P-""""""R p%"""""""@ H-P-""""""R p%"""""""@ H-˄{ǎ8880rjGnnɲ^yP~ כ+Zɓ'ӬY3nTlo='O[W8*{-CѪU+\]]i߾=ӦMի5 ~rΝ;QF,3 ,X{www:uĔ)S6nԨQtؑq:tcCW޽͖?? 5jGҥK@3Kf^Vu>v:Ef|嗼&uݫ_vZ֭[ˣaÆU*g8qk=tҥ}ʮ7Wyvw}Gzhڴe܎,&QqT璒FÇ3g;wٙ'Ow^\\\1m4m+((o߾/swsc{e˖;nJddd,X`zܺӿvʖ-[h֬$$$ФIJQ[ݜ_"b":t@:ۊ%fΝ<|g<5V)))t֍-ZXúd|M;/۷ɶ&L>`ׯ2-[ƅ HNNQFnݚӳgObbbxq,X\} cggg<<<,/))'Np!cR{wiim y8;;[E`wo۶ tB~ذaC۶hт;w… ?>֭ɉ'oy2FqLe&?h"{=ܹ3,X <==4wwwon6έ[Ҿ}{۷/)))˨?&s=g\v54h@jj*۶m#441ۇ,X@quus۷ϸ|}}i֬Ǐm۶n.((`ڴiiӆƍի?Ku œO>iҎ8-V?o_Mh"&NH~~~-Z^xxjذ!>?8)))ݻdX&MT;_F_呞^vwﮰ? >}:x{{3~xrrrSeΝKN(** ''VZjժ ?,W\cϚϵ%"HɶH]½vZx衇شi63c ^|EFAaa!˗/2}QlBqqqM61|p}OPXX7|9sX~=ׯ'99gggx6N2{}ѳgOeddn:>wADD3ʨ(vm޽o\@@@ 2cr:th}gb RSS c6Ϝ9>M6Dz8~x24h@`` 7nȑ#DGG3f;fu]111l۶xMnFEe_|>17mj/_̙3gڵ>cu]>{~'~JJJLԩSMn`ƍƤ]f*MRoֽ{w:tOll,gΜ1[^jj*˗/7۟'Oرcp?Ck׎޽{̨QlBrrrHMM`0<;Pᾙ,Y#FЧOΝ;Wթ˖vTOlmKu⳥8q¸l̙deeѣ׶m[yW}||8u}ʢu&˛4iO?+ŋy6mZm:u*%%%&#F͍3fp)>#Μ9C%ݥnϔ6l3|rR9(/^lSs_Udzk5Qԝ͛3wy'dff< $""UCӦMWx[ 7>M|||+`(ggj=ZZs.OpiiiȎ;ؼy3 :3얔&{  }rrr ###YfGN+??꺬UZ}RնT5>[???J <<<*g3g$==?dyf*}Mآ~X嗯/nnn&_JԶG˫ʤI2Y9ks&>ODͥ;DD~&ްa^^^d?fo+ٳ'o6:uzd}VHHH ==o`5kFZZZW͕ѰaC Ĕ)S|;v,O=ܹsL:ooooU^u9<ӧO`00dȐj닏/6~A=;w.ҥKddd˞={pqq˦6O0a9<3m-r +V 335kTxou법>);iKٱiiVֶ7~q=d;IHHͭ}x[|>}:M4!,,-[O?t_*,s֬YڵmVNs端bʔ)l߾4?/LRRUw8991c bbbرcӧOdWY1c0c }YBCCM~A&rWsR]Æ c…V-"#///Sff&9Zm~PDM2j(˭1b7n4nR˖- o߾:zhzAHH#G4[3<Ú5k*2}Qva䥖,Y€2d;vl۶櫛{fȐ!ݻM>W(Ν;G=ˆ Bzz:> pn 6ХKXr%ׯmK.wDFFҹsgcQ "66ٳgD\\_T\ẂUf8-eǦj\,..EODDݻwg/W_EՕK/DPP1yN:,g!_^h z BffݭagϞLJj?.S?HmHJJuvx5kr8"j-0+ "(ed7Wo7qqqGv-8tJkYDDDDv)ᮢuU^1uQr ǎ#&&V'R?ZJĉ|7DEEu( YYY̟?fu֯YDDDD֪_܎kHLL0~"""""p%"""""""@ H-P-""""""R p%"""""""@ H-P-""""""R pJGCkI>}ȭԠAZnwum۶%==] 3M4ƙ3gz*999YSNV]RRR8::c6oތ3Ce6!"""Rלqtt,wÃ:JDq$ܾyf듒x"f|B...5KVZ'##æzDDDDZ˖-IOO7YvT."b&vrrbƌİc O&)) 1+WXbYÇѪU+HOO7NֳgO~m9uoVct.g\\\`ذa,\&GDDDVoߞ'O9uf.mp̜9ɓ'ADDٳ "..?zhzAHH#Gn\X˖- o߾\Xذa]tˋ+W~z6lHqq1iii-"""ooozʼn'ȑ#իܤ""R^{o,sF2^p_^otUA!))mY9uHy5q\ @P 2p.p%"""""""@ H-P-""""""R p%"""""""@ H-P-""""""R p%"""""""@ H-P-""""""R *5j888РAZn?O~~~]v呛{ W^eIͱ؅oWثɱb|8yekHy_~%˗:<V(駟f…\~hbcc6[l8qkޒ~atrK꒚UثjssHD{k׮&N<ɱcDDnvp7h\\\37o~ϟ_!HcWi܉?GGGMTG>rsիG˖-CCCYz5}ݝ۷P\\̂  ӓH~G?0j(cx{{s]v ʶm Ņ@bbb0}t|}}f䘍mΝKN(** ''VZj*.\YnNNNL8ѪCCCY`ݻwՕΝ;o>UVuUTTDLL 4k֌Ӷm[mĖ&ֿFXX_5:3x`233tܸUTFcgMw6۟q\_M"^x'4RY;*j-0m4ڴiCƍ biɒ%wwww^/"b.^˗ PDD]'ZǛ,2e =gϞ̙3׳~zqvv(vm޽o\@@@ 2cr:tqɓ's1<_Mjj*?+6&&B.] Yر#̘1_|#FPXX˭>cŊ)((˕9s&}6m"))zqqem;wdʕ8q֭[ӭ[7N:Ŗ-[HJJɓ U:`nZ+*gEcϒ 111l۶xqqq1Yoqݖ4h@`` 7nȑ#DGG3f;fݻw~^GVVEDQJJ ~~~4hРC{,sF2^p_^ot`FŇ~hӓxÁWx &Md&??M ܸb˛oI~h޼9| ۷瞣YfСCix;::N:]weKvv6$&&e/yGȰy۽{ɚ5kK/<jMyL0q?ϑ#G())]eԟLBXXGGW^޽ۛ\AO2e ;wdѢEk׎޽{Ldd$O>$}n|[\\̰app]Eaa!aͶ9({=cg-uŅuVaʲԟ5]`08}ִ*o޼a[̍[[^ sT?kBmjk]sΝ;WգGTi=HMMͭd[DDL-nnnL2{w7V]^^.]bÆ ޽aÆUcǎ婧;wSMLxb =z`ܹ 8K.Ann.{///1c111رӧIJJ*m cƌaƌ<쳄̚ުU+HOOڵk6mNeJVaÆpBc]O<&L 113oؓo3gi޼9v_ԋܮueq,XHǏ'!!&MQdRϟ_!mHFD;s w}7t֍SNqE7n\щ7㏓޽{M2i$6lh\VPPihӦ 7&((իWʂ ޽;tܙ}YQQ111ҬY3ƏO۶m0}t|}}fk… ?>֭ɉ'޽l|oi۹sҩS'ɡUVZ,]Yl۶P\\\ $&&dߛo-..fIdd$?cUjĈh2x`bhѢ;w4ONNQFfqUVhh(Wo߾}vcYk /^^^|1XqY֔)Sxطo={*?ömۈ'99Ʃ8FUxFi֨ʸ07znf-{եKRSSIHHԩSر]^ס= 9p#8 ƀ/7KJJ:t0Ffʔ)g:uĴiӨW*-Z?W^f dٌ=ql„ +y?#9rJ~:M6e޽t 1RF8q͛7ӓDv _~#}W>_^a,Px &Md1<<==+>>>G?spwuVzٳgi۶-gϞȦ6뷪 sceTexTH];z(nmhݦ^M\e%ۉWo _^@P@//#{I&<Ӽ+,[{춙]sΝ;W$~~~olT $M"%%b f\^XXHvvv~s|oͶ9({=cmNUvsݺuwɓO>iLTJMMИ;8zhըQ# ͛ c˖-www~c4Ys 3~+Kl94hСCٴi=z`DFFҸqcj,UVt}mx"f#KPnRyf,,,z[[ʷfۣG˫ʤIL&@)fNDDVbǛM800\? СC5`IHH`РAV?`1Rz̵ִw\|CXƚPٸyWYj5CDT4sm 7&ڵkm۶5E\r+Vɚ5k8|[͍'x &7oq3f &&;v`08}4IIIfkժ s5Rm cƌaƌ<쳄sUm+ҥKddd˞={pqq˫ܶnnn;zr9N7Ѻ6lȠA2e VgϞۤs)z-X3.5kFZZZW-ִёÇ3i$z!sg4.ʎ[j5CD4mwwwÅ %--|}}:<g Wٳ "..Ϊ͖.]J޽sPލ{9s&'OÃ7zhzAHHZKl)m-ZDNNӦM`ٲe[]vU-uņ ҥ ^^^\Wx%K0`C cǎ\|m۶Yuֺ}QvQiK1,\-[L߾}7;a5ga͚5[oÁV=/#FX4.ʎ-Ś!"bOիG~pqq?'..#GЩS /,巃gCnnnJII!$$L(Y\D~:K]_G" @m,..>}(CDDDDv(ѣs;FLLLaݺuo-Q%dee1||||"::uXRE'No!**C Swaaa$&&uRC;7Q]JEDDDDDDjnZ[DDDDDD(U<99&UrXqȯ:QnҤIM!""""ADĮnZP+SDDDDDDļj%R;.t#oݩz(?)ٶNq \-t0DDDDDDRml[Ϡ;[DDDDDD(JEDDDDDDjAR{u׳==wƍFЭKڨc(*QsR檍S4aM}7s.=_c[ iKvYEJJJh!Vuس]\\̋ɺr!ra 5]]}uBjjZY\\̿ﯱ8֏Vw6>۟̚-kKN>MKXb|z<'#_r8ɇѱCK_[/Wrh\&%GR8vW+u ^+:DDDJ;|H捻?koݼ9k{^55¥qJJ]'3/7=.,,A4lиMqq1;wq>3߻b ~D}vX,]&o7{y z^qwOiтeFqq1p~=n]㭷aߗ_sNBږ GPѱ6C1Hʏd]+s_Ww7nS}۸/9|Az̽і=$9NAan ku?CGS<`x:JJJ!>ݝ<`8M=;twk=ϙiԝN@V}7O}8p0 kK>^t s| EDצo)owwK9>17ZIڏ?lwWQ~}֍'N0ſwGlv͕ƲW.EEE <7nyiߞyi6&FNk?Inj*+c'{K.2s} 2Җnlh? ANAk._[pO7۔41[^!4z!f{ȼtŪ{Jv#O<`:>I87?2nXf{Y& NfĀ3w&EDD*߿ܜ)?Ѳ@p:}V'""5~yfחY?9q2?u灈^L46m݊/+XFɧ,|m1k?BѱK_{ 3n~Ǫɸ퉓|u {wg 1y^ddpWVm{y^R~HZ[]Ƥ&g11l`$aʴţy t nCևwoх/:W܅3;l%B}˕SXTޤ#L}|-`XVe"]3QQ0k|wږTn}Nus3?k),,wqUߗ]vE1WPQTF%IRK)˭qi1F-3F24dMR)XS)."p@n,^Ƚ|=9{?Ntl]Ԥ5e!E5/4xRd&8+:zI}lv5W񚗧UN /OOe[.@AAJ-s?-=Cj֬W3S$Y,u.ѝuǟ ONO?ݺJlg,Ζb)t$et8##Cd7..(0Pt].zt_ W.jujUCF=R,_7i^αj޲SV;VPBtj٪~7uS>lv!aIU\[^vC.KQW iР9l\uo|:C5WU=VU{z-זwf͚ k,Iɑ$m+0YbÎu9l԰$; k,777{ոQCRl$2=6NԮzg%YV /)3}w(33Sء6[kkQߟ1=eғj2ROPff&Q~4۔>ѹ畝-Iujo{TFB3wg?Gu%ڢJN>Rl6Yv6ˣ-] ֝7ͱh~ޛ4vjc'ձuD}[wkūH֋W)X,umj*-[>n^5[7jUҘ!}UtcD׾5ߟ^U&P^β⦼3|$J ,>|*&)Ra)izw5o,PׇDŽpطo6oϜOB4ZR%CR$\IvIKv,K:A]˕iʖtN9JM1+ 2zg O,b/Cn~|XW.\E)99Y+VO?Tڵk+!!Aa\򵧧&M)ShӦMl:z$Iz5zhرCN̙3vPW6p?^׿ԱcGhɒ%Zz|||$MֵkWiFVdd̙ӧ+22Rk׮խZ͉'jŊ΋~Ok7nԣGܹӱk={O>{#""b8Wg\[..nʛTS$_Iņa"peS/I:s>+ YhI IYr%%J;ýw^Y,bYfUVW\*`{lJFnL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@pΝYWrN:Uf Uw prL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nLQe=9…*+b~..hp3/p` Tb&hP]ѐ̈́iTwE6Ap+S6wU76j]A0  *qenUZ.?nnWk+0,,Kumm0x$A)Ϊ^0%waՅgupR.A&n\I&^:~;m3Y3X~:p]SW~ȿu5l@oI:͵]Sڵռu[۽KAR۴)"MyS$_#0PU=VHJMϔ=Ǔt*YI nPS2d,,W^yIl6fϞ뮻Nj߾Ə:͛7wlٻw%m7NkV˖-믿jꫯDGGkҥ媼 **lY,8pRuE~4yd9nM6zMp90m%熚5mʸ/盾떛zh_Wdee+ז+rss(7O5jhÿV3224arX6d̾Gٳ?7nOKrrrt-(##C=Zl_~E3fPe5h@?v$_֗_~O>O@@@~~m}WڵkTV-}WϞ=M٬Y~\K)+~9q+Owy:vhbUfiAA )--M -.ͦ)ӞS>hLo;wFM[oUn4e{u5ᡠWΝU^=kw6i/+_VV٣=zTw)6k֬.`+9*zIʏVkw]w\w\BO?5t-o-YnndeqjР~ٽ{w>}:|͛S:v>͜9SΝ;W>׿j޼yzw:Hʻ w-v= Shh~aGqFEGGO2e6{15o\ ˗[nQ`` /nkيT͚5էO:tPgV.]:h֭Nۺ{5rB͙3GwuWΝYfiժUԣ>Rz~Ђ @u]JNN.ͫnݺ)00P]tQllK]ǻcS*<<\!!!5jte݊|.o^%[Q ,P֭RoWǺe>\`|P򞀴lZ}i3S奬,nnz] ՆO?S蕗7z[[NiiжƏ#.NɧϨfpz].///Mmo=CG>,wwwmb$nQכn뮾}4juJj1={蕗ծmYV9hrV]S;ӟ:u[>8(qL\ݟ[?Б#Gzn3 ,٨1^ҿ׬ ?_~S k>\[cQ8qBՓ.\Ǐku 7 0w^ĸo@>}Z˖-syq㊍UNN zJ .ԹsԿ͟?_Vbb233/iKZf|}}j* >\^{"##?^1c>S^Z~~~z'uM7iϞ=|Zh6liӦiРA:||sƌ#5f̘BM4I\J_~,Yziĉܹ&LO>DVUԩSd6˖-… ^zIzҡC\1/Oݕ}K:SLї_~u)(({K["nƭsjŊZ|m޼Yuԩp-XP3.+u"5CiʋWe_;̬,nR5evY$}& EILk:oF=wimҖoUÆ usZj &%w诇GwWRjwYJIIѲkw߻^o$믒 /LtfnB}Ƭ1qe8gg鞻薛z*88XAV*r ,ʻ2=7^&OOOu}ĔӮ]e:,>r6Wnn~GM:UO<$Òb.kWZt KIIђ%K4}taÆ9s֮]+)֜qYڴihm3FmڴQӦM5ekǎy4l0kN_Pvv͛ŋm۶jڴ{=h;*44T'Oɓ'o߾KڻەԩSշo [_:tPݺuO0 =jҤZhÇ_rqرڵ4hN:=ewq"++K|Mo^Z`~J[ OOOy{>Fnn^x-^X:uR 4dUg,c]TY\\>mII pqYlFB+\P%;tqⴲKpP`RVdo;Խ[W͜1M2 eegic kXׯa0 %8 qzh0x}7oAG͛5՚nKj Z!wzퟋV뺔^n]7Ԯ_~$];D_Ў?Ӯ_$I]c +n3kNNc$?!ͦfM_,rTOrNJֺO>UMo]?fVX۶qvT|Z`,4i':Μ֯#G.9k)ϫiS5ne+VcVZgϞR>}4j(|NJNNʕ+m6>}ZIII̶\/Zԩ5???hϞ=Nk KkԨ}jÆ '|^z).)KZn-Inݺ祼Vvx2ewAe M_OQ[ٟ$$$(55U;wvZuV+rCj֤iOt]S'ԱcM(+3#G%I[}n7Z75-M2 iڽgΝ 0*-7WNmffu˖觴EEQÆ_e Q7^WlNmv履ָ׫'lu;ۇLRcRMXu5  ѭ7TxP)1(CKZժoA3_xQqvTw4rKΞծ][!!!ڲeڵkwɶ;v쐻7onn#o߾]uֽ}wwwmڴI_y 0@={LnZZbbbtwkڴijܸz] ʒfSnnnbSv9)iӦi֬YZn Tje:J-|}}/yw()=‹>6m{ Ζw)_Zz,j(>|>g)/RG}Tsν䌨fӌ3iȪlaaa І J\Gzwm6[Nޏә3g4gEEE) ϮKyZ,mٲfS\\ڶm[[ݻy/'/=\Bd=WǼ2?~\7oV޽uY=3]vm%$$0 yzzjҤI2e6m$ͦG:ٳgl2%&&*##C|Rz… Zhb ORZhĈzG$M0A[˼Rެ}ս{b֨Q#m޼YVzzz.g}VׯWrr}Yjʘnw==zvءSNi̙Z2>EBBBԿ;V{Ujj6lؠJhkա V)y.V-#u`|H'O] K/cH.Gi{?ΔdQ6蕅Ը',67{˯/ԛKj)KWڋjJAա];yxvj٢~պCqcʘ?׀iμz%ImZK2TfM=wNK^:kIXc]EǏk_^ԼW^F<8Y*opw2U_۷oW~]z۷f͚=qDXB $=Ӛg?E,7)GJ4͙u΀5oV&{4I"OO/}j6o٦}]Mu=uk߻OVThSwc}F8qR 4PV-CoVY#n[딙w$IvC3e}e| 3ռY-hmG6^}z'Zg~{s^~E>>2Z$r\z|Oyݽ1)mKV\V޷n3ers5u ֑koh*3#SZc֨R{W*Ƕ﷫[Lm:trPզM%''{DGGkї<#S/I:sI\B4ZR%CR$\I}p_+K93vZsk tr==fqnnw̘%OOI-&ErssWfxyC2 ege:y.݂.5k-~iyyCLݞ^^-7WY]>7fIi&O/o" .՚7-Y,bKEdGc;|7&pCR3+}g] ( jT]WfM*pv5G̯@mdvkI֜3_%eݒjlpؐRN:\?ۢPܘficەYt3[n2ss m_cP0-Qy<Xz~?ѿ_$29Upo>oSFRƭ`M$ Yi}41Q tY\8k'}g-}k]SW'Nԣ&v>Vkf͘f͚za\x~w-{,n;uk$Iv]Y ;7IWg6y,ԫU|]Mf͚U%\*ے$8UjؠkkaGFwoŗ_,,} dvRv.6R+X;|,eef(#-UA`)5GKV UFZjhάo{Ӯ]HSFZ2$Iiy_g:v驲r]>]<< UrrrcyUdd/_^hh͞=[]t:t蠭[J^9s]wU赹sj֬YZj<==裏:^|n/pMqFEGGO2eJ ^m5{lEFFf͚ӧ:TW$}WŶ'|Raaa ?B=󊎎V@@bbb?hR``.%''Toi4x`1k/ R[gP* wia.(-=]u+ưy/떞=dXպ@!>sF_CGjzi¿S_1G-ZT)jP`Wڔ{-۞ǍU$}"u^$?aF z$i¤zh؃j>}49j$\f] 7ܠ7m#R?/jZmn<<ձC{=>nl+nԽןg$I{Eoٳ ccǨedR,닗==9y{y 5[n*V-'>^^^^5͎'?>Q[F~/_MPXep= ]Sv}Ţ{/SmJl{G4g挋:|%}U///EDDh͚5ժU4|p]{x~Zh6liӦiРA:|3Fvq5f̘BL4IN/?~ϟ+""5?DeffkK3fO?ի'|R7t#//JZ< qƅҸqtq*''GÆ SO= :/dիWO'NTΝ5a}'Z8pN%Kܹs%J zgݺu8qbmV>vCɤSjZK%q k۾ wʏV%I5kɓԨaCt}53;[}+99Y~s[WoLS'=賴6%:濤pgӗ+kKuy}}_?pPzV zudڴr.I6~m۩ cUɤSjBƍ՚#kz1{o}J7222dk0j&=#CS?WC-""yV=`[*7ozfSjLisJJJ<5n5y Ԡ^}c-|c^-nF{P͚9אJ˂ I6ϻ~ѪcQRiԪ%6::qds(gc&[m>(t~;Op~JOO׎;SNT߾}]Ӱa*&0;C5kT͚5+%ּy_m۶{OaaaZ~Jי#GsΗݨQ#-YD;vPhh 3gw](С$'ʕ+OŹ%KH7%%ť[VUv'O_U>}Jm:@x-I2wv6l6 zf}I>>jܸBCj9pXz!EMJNa:{ū[ M{nuzܠ\UMz~0-5P%YbQ:uݮgI#h4rsew:dPѡCս[7mCWNvdR~uM=_Toq5)i͚3GwN;v+]g5oԸq#5__iҹBCCu0ZhQl=ege0?Eٕ~Bk(=-U=w׫ )$8XiyCwl,Իz]Fm<=<հA}~hڵi{udycۺ}P^f]Q.IJNNʕ+m6>}ZIII%&.???F۷6lؠ}'ի]FZSΝճgOEEEO>5jnJ<(ժN:9^SLLS`8p,/cZJII)v֭&,xu֎K[jUleK յkWmذA}Jl:@rzh3F``b2ov r-l_P闓KTAiXCB4g=x_d߯^bcƪ}߿j?6)%$C ׫^k/ӒE [o6ԗW!-WnK}x)s'o.:uh?Enw;bucK_Zs\yׄڏVKt>zxWZjlݞwpnU*W> ,X,E!{U|ra, [o5ҢWNe˵*,Μ=}Z?7תm}?o[J}+]=Rʕ%&&jڴiZvڷo_vH_^R ֚ݵi&mذA0`%Wdٔ[uoooTjo;88X}v%$$(!!AǎSjjjZI!C8>?k׮]jˌqÜpWSɥͦAwAk pjEɓxםYӟ-֭ͦ"oܨ̌t2Yb0 ܳVY]7vonӞxj崽`ݻwk%^NnZ&Iѣym۶M֭Sbbb*0lqfļ- 6[zsΝ;umvW Tsw]&VxFoBg%7fp}`򴂋ѷdkܘO ?/ MIS2Yҩv[7Q??թ][۵Qދ|>X%g[Ka#u߰ȑ xY֘+ub-?zv^Z𪆎C͛3cV?3%K CajW4aTnJSLv6\l/\3׬ɤrQO2W^=]pA-RrrVX~Lmo߾?~wﮠb_5j͛7;& 3gjٲeJLLTFF)$$YkVBB pЈ##(66VIII0aBCCu뭷V޲R&M)ShӦMl:zJݶ<_T4Hcǎ.oooj/ms{?@9K#0y:sA﷨IV:Pp*==Jǧl\ǧe Ð՚\UAJM޽GGYy6~RPDMKm-"V1h Xݕm#RDj#ZAen(U*w9RHJ%#3a2[$9ɓ;<{~O|^\.Ҕe߇X,m n_h}h -tel'ޮhF1--MYY6Y+656-Iʲ)==]NSYYaۍVSzz%ZW`!h,XNn^fu5׵ܼ;r ,ڹ W ͢x222)*ϫv^0,ҹ˗amCVhYyyr:gAM|LOѩ6YjV^-ǣJ^Weee;$<6cMR{ϥfӁ4j(I-+vmW_}XIڳgN۷pj+Z^W&MҌ3nݺ>CsIN}M,}"BRsHrIjU{-%js^oǡ* 2Dܔm /ɓ'#p@OFu6piKSttI˸31h2rJ9Ԑfޔr꫺+ `r$>fKݡDҠ-f_|Q.I W)jR_RsIt)H??3 O9|¬wHϔכG\Z6trf%$rHJ+---1ܔ<vY,U9^zwc|^"îܼDĔr#E%tA 4DfU9#G4t577ѣ浻ѭ1|N{z՞:1G믿鵯OZu 3rJt1}k},$drۭUC0x0᚛PFǫka8d] '29jÔGWjx]+F{jMa \PFF 'b0000Az ΜK+ZxpR&;3?*>&KKd }r!G $|xWT;Hg tr#NSVSrӫ;~O<ɮןk ܡR9}1"y#I*@;Tg>hw5|u$k]@/3$ݯ;FcT Hd500000000000000000Az @sꛆD t؍=.8?%@`J9~ŰHZz n@gv.ݘ[Y4 Ыߑv l 'LD99ƴmH+paĸ k)ȮwwnֶW^$=5;4kuÏ?p[=Y=q{{StHaE ܯ ͚9Sܳ6lhBݿ]vkA߿.=p6ǔͺB>~ɣO>oYnw.1]KSْ fh:xlX6o{2Ⱥ Qaa??6ʮnWϻU/=w}C~& :D23躮R57{dZ YT!޿9$$5IHJVݾhF3&l'vѴvD22lGY4y8V| @X,y<}6 uv_pDQq{\ýao<EN]dP9y$-PvY]oon@R|rWBgu \)plm6kf H52p `ЭHSʥS%eeZyN-o<5Y 0=2mܩ)䁩NFq ܎#> >i$k_cjٿ5Hlvw`ԁ}:;M&bFv gѴ@Ơv pjw tokX;xHHjin@n QGSʥ77t&lR]'ulN)9m@O`3hD Ȗ0_uM2_:vbdKp:MG}f~z|c"f=Ah4uZyGBrc (RyL&ql9$LcIENDB`extension-manager-0.6.3/po/screenshots/_4.png000066400000000000000000000176251477302130300211450ustar00rootroot00000000000000PNG  IHDRBN[bKGDJIDATxw\g" EĒ5Ũ`K `A hKh0!ƒo"ILDJDE [~yg=3؛o)L&H(N3I&mmmMLL:+0p;ή]@0 CP!A: dqd F @`NF>yyyG;0 %'dkkv{Rw_/AA155e0|>$I9y{Ǝ DZ:pXرuuuZ:1~!pZPnnnGVw yDyyy$IJ$v 0 @/KƮ {^Ǻ$ Ν^:&55%##cժ55! M6@JxWJKKǏ*..^j9shkkSSSsÇ|>4=99xaÆ8766]e?R>[;o#AÆ"ƍ BYGgggWPPph7[-sFMtb$Ξm)N>r䨅￟}ADD$BhɒӦM433S^.L!X,Vd䂀.{^={uq;<={v/]CQh][+=ІOsBСϯ\NϘ1=4tvsʱc 28//ㆇA999nڴƦO?rVcQy6/_"''xc˖DD̗H$iii;vlG3JѠuVVVff>9s86m33\ut:]B8˖}TTmϞ{p/))[h$eeeIN8Y[7'OIcBq`Dם3geF@ +WFѳg3gH-0a|^^ܹq ]9s (-777PYYҥ1%%%[N(U455=xg>}Lw^VVVYX8.޿!(~^^??v/N͖ZӕFI/w]p!6vbgT)tqqFݺuKIeeU/3BC NMMir_H(.BZhݻw߷oOqq-[ssΜIf2 Ѐ~7okl6!D_dQ% ;0BMM|y6ic7y(0UWW~޽7 kkH{퉎^\]]G>L&ƍoߩ0`aի)%!!!ּSMB<|t&??? E>C 2d 8ͻEQR' \'ͺg/_o;w~)ptλvTDcx!ln p߱c{Jʵ1cGI555ϔgɓ'?:&fk-[mnnnZZڠAK~<|0X"JbV^%ϝ;A}@+S F1="c˟ٯP1*@4J 6j 17 d  c1/V<#1'4ej2v@^}a) c` d 탞R8næ>'Ä$ɝ{8-$47/yU?#oeGO^+Of =(A'F0}c46oOLyƵk+;ʓaoxtK]izyytю7v 3b]j&2HNIQQY6|vȘޕ X8bп]%}Aq(>ſCM߽}I_Gُ#-zOّHGuH$6?&:f$ɤO55>}?Y`ouΟ.IGN}0Бfsso(,*̾<;;LUgxŲv][Kq2ܻ?&znNN֤P(Xzm̢wG,*VLOWa"lXZZ*8@;&Npsuurt `Q1Y3 D"$beڗg慅ZYYF̝k-%OGztrtXӦT4nl/OϖRL"意Tݚ,q|usu%5z Dq!MaTΉxP4֞R̺P6=ϋKHxyA4/γB$caqZqq1^/Y,7{<+ԨKi215e*-{yyտߌ!Ǐ+B-Qr}PZ@D`QÇ m.feܤM$I$I _[!Ͼ<;\ssP¡dz!I$d0L&Sfb0UU5Iq޽[V_lިQ9*&uuё=]]8n{bYT/ώ}׮Zu89!|i=Iz*vq Ԏ5)e@~k?W^KTݠLO4@tyJ2uk+Ʀ~ſ<}p3۾ܕQMMm7Iͻ|ҲҲ_J7v"Ӿ<;&&&!3}۷I,+/ʁqcع;QvuMͮ}_YYZ ?>wQZV&)UR;J*YQY)KgX<BҢ(yAƭK:qRJևUT33Ȉ# ŧ\GKGt{-'-\i3fd0B=˳/NX,SS{Y[[Ϙ?-YOV>om.޽~3mF蜷۱edJUlGAIex_:w})nrW^~MTZCdqIbWf!&wrUՁ}FN<Iӕ0vi2fg WUU#3uxhNufV=slm&O0}k^'T<;%=^\PBTr]F+;s.0b(qMB zND (IO98^W[]\X3iog I-#W(A!b9퓝by*" 7X!~:^/(1 spQQV%q>9 EQzpˌ8ffB՞EQ״l̡/ B_F* ;">)):}}u 3 FCZe@ $b1h Y1믿Zn9t}}}56uV^'L0`%Mb!xfkn =n8ս6l@&%%;<… bx3)eZ}}}l2h ss~]{tsvd Z?MRۣ|NWjSwڵ-K. v횿?tww?sLfffXXXxxxvU餜;w~~~SL_yab;}`9n\{E2(jɒ% 7lpBQQQ={O]\\BBB `ggZɓV Qz, (X>;D# EJ茶cc߼<ռK***N8ZYYYVV+y񂋋YccT#XP$&CBL}_h9onXpD˷^k---Znihh%Fr{gk׮MNN۷*]Au;B"͚6eqBysB%b^hsܹi[.%% Ǐ7oĉm-UUU۶mXc*zW,͜X$BUKqqqIIIׯYfMZZZLLL4G^~}XXXNNN[ uuu5DWv@Uԙ!gD.]t__ߑ#G޺uںUիW6lmǫ۶m[ngrr{ァ'*ބ,H( 4Kɒzw"zXGwP02("Io3<R~fgQ>OpgqAc@@!NNth c@K i*c1tQ a%>1$I'4vd2~P:GobUzaO`ZD|xzCEJ =$ITUZXuQTiυ”c"NJ \B( !>xCDcC]i3;nl3^kSwDK$|x*P+'z:1vuYZt巓T1 c;"()6O; 2 dOÕ1(h#q5qQDkT":ly'Wa Ul*qRoG5}(jl $IvFc9V6v\am? ᎍ)*Kj;[XZUIh8^W[]\X me*D]#tE]mMUY})$°cF1aՁgij?T6 5VRj*%vxb (1 spQQVܶBh`Cwf13,M%Eq̄A]P!A:$IJڭgB4@ACg3̍Z4)(0pz$y7 fy~ݺMw^)yfڍy>zL#t,c @-Ѳ~ŎٻD?|[4hzEKp<"xy.9Os'ED~{ BF/J([6[ۯ__0U%u&cÙihn/^|7=TҷL)WE;`B19x$ik3o9 :&vEK7JJKW[?xP{U&FƠaТ&|]ytK^42 B?x$>͊*;[۰Y3G4Ç^/prr\8E_g~޽-^`U/]* YfQ%Q"$Z8^̊OF-rͥ>7|fIAD_CAP$*,zFۙ =vnMygE]4;VaBO…מ:1[YY!vyw'M,)-?p4˨s*+[mӻ7EQE/jI$ƭ`nkCBfEx2NhoemBqF\B! aCF^YXXgfl"ސ$5kԜOڷk: wAqYӧ?yyII]P E (Q/EOAP <$ _>z>ZۉIIGu?_U;N8q =;X.w{O,Qj"]7gП,Ԏ?#'<<\MЎ>KB0^+~ҫ@*w䙱ԭ /Aš"##M*"K*`}}]vqvv&*++s7"01 x,yFXXx(3 U{Ftt4zv #(`> GS[ܾǼP-oww7`@RZ[>LyMLL`4d2&''Ԕhoo|ttTttt`yhhHˍF*ty60` Cb~Նawr\Ħ+ nO_UUy$ڢ -Zڴ(m28h` T i4ѥ')0`ބqpp;;; 񌒒uq~~.ZZZpVs/qђS0nooEYYvp#$899[P?tz+**0WlD^/w(>?4~ciiI5%e6} Uɣےf5 q6;dw,IYQ.MG}x= /A1eNό$Uc:S鞙Tush?p/9b6ex9.P e1W&Muf"Pn˜YAb$k2 ò,h<㱗BTB!߹26bWbr9/A1Ͼ#L\+Fە[%sO8ʶo4=TwdZOZzfa JD`!leժmRCh!: ¸^(d@:[Z-|ۍ1 natS^ϋꦂ9nv(|Y;~E?E 0O@# g&! r;.B.* !:\"aV!)'#4!P{Чp222222222EGgŹO稈" :pJ8B{wA PtL6dWi| 8[LkUMt4q*+D~:bq~0\_.^׃ .b:ŹG @t:~Fxzꙓc|>Ul9rOcgW+'kA bGGamQQce%| ZʲmAD lY5@X!C9e@7ʇ$yQ9&   kX&&@<==90~{yy j56 LcnC@4C=)>^;wrr7ŧ]~w>=iaO-j-U&5ꁘ65x]1 HXI0g`'qF\/~ObD^AH0 `0 75lsW"q%̄c#o[$AJYLIо9 b;CP3`|Ek`YgҘ#@c 1p1!/o`C͑ {c/,FELe;` A5 GĪ6|^vNߗ7͑s///?ѕJEvBDY|_Vt}}#I{bY+X!"MaOV[)ޞ(k)>-ao @S#H CLt+dSZ-̍H W$7RHr,s\(3T*)4~uIدso[Ztw{ҧl?=Cb컢l(c=1===je<='9m+h_j=2=Gه9F3W>hIAR$IA1&;)U,؜N">0ejj*0)Ư+OBӧcDD˪c!?~Tі Gb@ shhȓb^ܜw ED*O&a0}}}*:#ϔ|.==%%%F@&NZz ̻Ѓ6&G@ݻg2bRJ}S\܉ `J>&Cr_E! x! $@;>ЀFFDPrl3%c1yyy^vvK|W/ H ) 0P1HSh@ HZ| {*Ɓ&zlRerr^[x"lG gVJ<w~ZP}ΘA̱ϩ˗/ ׯ_gff$?^ALA$IA$ARIWHsE;!)n<)dd999> XdY__YR`e.rEWn{uu(P<6B5/ g ;x}ϟ?7VܐϞ=eUzg"]b?`]X]ZOcі0L' ) H )H lв,^NxE|pp˸xw9RZErw2wYb$)!mBJR>7p8*7+)|6xL?"hiigPF129H >$IA$ARORw cGGGMLoiiɼIr}sXf 76<5~NFB N?dJ;;;dE2 `HПLO"w&Lփ@Ryo߾ǽ5Kl2lmmHD8BI4ق]K͛7XݻwKJ䣓q'P+ڒ۷Bsl ޿aLɁ4AW1>SDB ^MR$E$Hq-+A lmmy2==},VFFF `ؘp$z+W\})''QH2466SH"=$E /^ŠHQYY577CēgA6tQ.U?]n z];pg,{^MMW^^<۝kclnna,UWWCГčqږHh '!$>yD$1VXNOE|)м:AOIAR$IA$ARD7Sww7cxcVZ[[SaOpҐ7p::#2B-$E{1lIq //šПXn kbiܢ544." l]]xiXN9.<***EFX?^zDQ8`(Q(E  ^PAtH^ DDICr\`m^Gzws/wPu|e:L)S` 0LQ:S%+tqqa%4)6 }gg'ߢ`Dooo%E ]^^)eͻILH3RZ-+u-N1a@UTZ Uڧ}̌ח ֖UZ:e^__44G|ةm{X;t?W<>}LRH- ito#:v|15JĶ{{{f g bLEs|_22tiBԺ19HCLD;zm1PyBTy1LT^$*@!B!B!@H/UA)O7j:@Fj.R#x1)~_D0g}b4y)hO/m K/%21/lZWp3 B޹FUa<9(F{s^L QXdzikEV(R *[*WR0"Qb}P DAM*("__,̞){YY{Y,>{Bm60(2;=pe]V|WsWuUW^{mKET(w@dh&t>}ˠpKy^"@h3PY(wvmKtbbOdFɔS`Imd?e_~9[]Gfʮ暰K$0Mր:I;R())A 6X /nf3@z $oۭު9Wn9mmm&G#7i֬Y֭[umwqG&)&dB bqS=Ń>_y?\5gΜsjjjrT_}zħL͛#G[LagyF8 3f SQQK+BplrgիWc]-Z\BlX=7NzF>Iӑ?xb|/ɗ/_esZ \.O:U{{У><0$鉰)}n`̙ACCC0x`ؾb p䭭]-YhcƌS)WCsZp^&ğѣl,~*\N=;阋BΙg~aR ~W/ K/$q' ԓ-c. ;FCnK2I#FT@蕀+Iy  6oGI#6n܈_~ĉٳg1c=K| p^^> rM<@%/0y kw{S=!ϴb@&ŋ&A!*++'x‹/gS{/ǹ}=[dcQo\wm:~icBH[l j+Wf#[Ij_;vX8Blj^?`б@Hda6E<֧9#|iZ?sz>e?4|62uɯі.e.l M_puu5#@hq%S>+ZXX/X@\:3H`?ϡžy[ /OuOK/}D/!^(*bAQd(AQD~m=G&L’8= 1;M@ر#pN0q,Sh.qA۷o66e2S[;.:NJ\V 85*aV@b혓"@ #z!|M2%;xnr'O6 I':>8"8@(tpDcc}%7հxJc:K6Z Husӱa@rHeqXn9qj*1磦"Gk˔˯.2FpCQٳрe͡N.f+~9NE]ذ(AQաC|3Zc\ҭe ߿_g2dHvZ6@ti`ߚ5ktw!h4+$3sdDtŴoH4l!h ->S:IAmB"F@ݻa0qD˦ݻwu/ȑ#]aԩdL?fr-ѣp,H!)Oʱ.K,wa6 /ÿٳwܩ@8"6 / dÿ w^h K x| K* LFnҬYJT'^2Qd@Ī@@ 6\o(p)QSMM !44=C-'8}z0~x 0X/2|}k.  ~U@Bx#){K@}'CPC{C{:,ۤC8,rm9s&B9gmF7\svt8OYy 4|t)]-]JQ744 p& 7.L1aE^QQaB,@j#46mYF&GI&є!zlE"C (*bAQd(AQDO޶۷q1wСP l 2DL;s HvXtXzC@RBcnӦMȑ# 0,Ya#qkPK$$2'O0TUU@Ɏ@?:; `' fϞkǜ$rxׂuֱQg!C9L쩖{4߸=F/ +Q_ >c?CDgXdraN'˔&hUn1oq11qDDؿ,']wAŋ5p;XVG)l@ССCq\{<^쟒g\`ظ E"""""""嘓:nFNt%F 6o,_<ضmFgڵkhDN iwAėP dtdG#ЩSVRrbNP d iOi!ǀ@𒉳ntB:j(cUL,8,/ E-m$׸prӘtƍCW /&qPGj.f"ԷaaL4M[p!%Q5>\Ua( yHg,[co@cǎ $EFcq@hzuIK&f~at]1`vWcƌNQHIJe˰rJ?]\#""""""""h!G9'$5'1I@,Z(tX$g~z6IO5ÿEa@ؒX4٤'N0K {dRlj@N2 1, @6{K0 `$!kQQɯǮsUe/^dzqLWeʝa'QE0455=s}];vlz c<BѠ()6NXH[ZZ4hۦmԨ#QE;ID.QM$Q_ݚ={}p ZW7oYu?|Æ {=r+?LFb{8nꟿ{,㕹 n]׼)^NcC^ݷڬ)brV”NQxtE(J>]*F짡dc!(tX'uzpRJ"c#3 m CO2kHp v0g. XɎC"7r#|'y #f2Nf4v,N?y8=k"A!8rḄӨdɋ\A^L@4I|\Zbem*( > 29#F]%~8yfwY|A_$9lWQr:$I'=B[, Y * D10xzi ք 6E  Z>}P-f`֥)(($IA0,I<$U ~%/*PU䄼^/2rxxHZ㗔QI7xلY|b]\ԖHE `ڜQ.VE`fww`$1.bش\EaꈒA`R~?% ^yyR4hB@S9f< 8==N9nAx= XI߄$>KBIbe@=1WIېxZ].yx)Օ>bx߁ /}E^jHrQ8$D;d2P($ qfƐII%9$VM? 0 wڑH_V׹E)l6K.___3+2%GJRo I鉿Fm>Wݦ[x瞗%z1~nĻ3t:M |ߓ|sm!fănND <F, =+/$ 8WOY^/}Hl: fÎ#s\Lq>zd2SKv;xuHd/24XowݣYyf! p8nȠH@x={%\nv '5 ^VDIu# rnb Gw>r7hj& $q9N z89 jI8Nd$jX`*ijK+JVAN\vfFۣH3, ò Dz;z.(+z$nC$}$ҽ7>H0/\B hTHjf2RWBY$yxh/rI$I.3 fjnWr a (AR@l"],AviQ[B!$ǔJ~P@Yul/mIfuNGxux[~ \HX u,p6nʗeޙHQq_|VA5FD Q6 DEc"11 ]RJܚ鞙f9TWխꪚ{j5**enip"P;q`:r|GzWwM%ΐ{ɴ/ۏ'!L0aB8yllN|iIbȐ!3 ƸfwyR G8蒫*j><B"5Ip W{VqѧN%V 4aV! (*XdyI"+OuʖbVNCb~@pT(ݧRŨ/ Wb%$( %$DDI( %!"JBI( QJBI( %!"$P""JBI4ڵkBe9Rzxv<"JBI$hn?/{qbMiB#@ŋ=$"/^~P,44۶mN%A6N8QU4o޼JI1}H"ھOw^*Opp<݈$$Bi4Vh\^俋͛}KhSI$w3f`IoV1x,~Yy-RHL#&Ɂ@#Gdl-4ΆrI7ry6 ,R 3%%gT$O!=4ql;OLClTAX@_שּׂ?b=#<¶TWO=WU[ ٺ|$>h齁o7y%tsf m$1tt\ L[S6ŒHO>EXʄ4S2 X>I IЧIPtb3D|/4}Ǚ+ImVVnK:OZnn7[d]U( qݲPQ/DQJBDDI( %$( %$DDI( %!"JBI( QJBI( %!"$D:t&ҦiIȬؽ{7ٿ;/"n׮]ьE]T_ŲehrY̳sN8%$!t1617pC ӆ n?~|٤a9'ebHc $\&bs6>%Ü%㔄H =3źuօofƁCJZdx&$DZTt*+P%JB%fi$DCf*vp@€a:ͦ }eNhYq<OJ7n*D(Q?mjnep'r@4>hO>| ^imə%Kz`vW i(}O>$/'\PL6e au;O9 ,.D~4hٯT'%=SH:-DS+J34J=*8hgΜ0v1B`|UIȌ&K9[N$e~79ʜhQ"79;>}:YoʒM8gjI^wJ>@|(*V $@,YiPB%n"$P㉈PJBDP"$%$P""JBI( %5_~>s$zPGDI( !Cu+W\i&"*w$:&o"%1%F矂nŊݺ8p@|Ę1c>LkIɧ^vmchhϞ=ƍ=Eϐh6ğ*qMeLMGsW4,(OqѲ?x/NWQ^I$Ҹ"Sq7*pZ ;wn駟VIJ޵hIn&B) ?&>/Z?e˖>HUOUn7qyaCu'x28j|XdI{IDKt_X%%AUZ_Mg/R"]ZLg*lhy/ҏ%-+طo\s ֒C8I]g㔄HAZ[̤?~ܓt\O39J%sN z$ N_}Ul^z2\qJ#&LH%z4CHh6hI9|رMkHO?yKG}4[NY9Fb>YrܹscYO>Glh!̇7bBOI{j?es=L8q"&)_[&Jp*"AFo7 4I:*|Җq]'%SqOSB T#F`8J" +6J?2IT .Qӟ={6ѦY\;B* p/8s@v[:+hX%/{ *ðRDI( %$DDQJBDDI( %!"JBI( QJBIPJBDPsW{Ј( % "?â;tMg4:t޳gCe++We_z5Iu崃F#foy( %ћ߽{wT;v4v*EPPN8Q߿?J6m7N1lOI4_fKl*\I@PYWuNŭ"R>vDSkxbn2.X`A T}:$D*fx[N:^cE<]|I\{D\ ih #iӦRw/?K{wRIIlz<֗K?1l;vlOwR~a]vYogH"sk/į[?+zQ}@} IDAnoIUiHu9~̙$/"UJ(ЈnGŝ~R)e#@2UNl*B%X_~z,(.&*ItmQqQuV <~%TmG&|ζg(J_\7^xe==ra2l%JBI( %!"$%$( %$DDI( %!"$P""Ju$ͶmV4MG@Cǯp.G@P)toW$ t|M֭[(Ӵ{ I+ʥ)lSXu$`ĉ_~$UV!4ھo/1cƜTvȑeƍ=Ez!/V\Y{BxKEZXK.-:D# !+D=H KCn:D ]Ip&9╄p+w߾}tVQͷv$I 1xߌ=ztqEd`yNŋ/%0 is}X׆3bĈ2΂zȘ`y s8 &e%Fo7lСI&EܠAO?Yz]g:uj!gAPP/ˡ&=z%A@uʞJol_ԷXOwIV *D 3aFZ2R,W`1] IP I5K%Q>[o9HqIP3f̨zir S1w9M2e iuՕɓyz衪(ǥ?#& h쩧 !$`@pV$22s( %!"$P""Jb@K3( $DDP""JBI( %!"$DӉ}BXmNa#HXW|}yvo75rӃht\ ʔ ,' ʒcZGEVu]G"\gVoYwWlW6O'ˌ7d~wLR"/INerH"kSI('$/9r"\( %!"$%$( %$DDI( %!"JBI( %$DDQJ'yt[nȃ]Α#GP) |ޞer ,J\/2_͛7D"JBI駟^třg)VJqLM9g0W"e˖4|t|Y9F9쳳e2i}8OvZ뻳:+ JBIiM#8I"4PRJI$-rɇH>Bn\r!ЄxA7QQ "t0vFu n3vV'G'Dpa oiU+H/ -/4^CtVv~!H8#/A AA)`ADX*H8FVI6 :eY8"[Tm|>NOO-Nv'&'YV R quH k$12gw{[cRƋ ϙ_$|\[\l yHXEE6Dދ~B}>O0hGؑeюsҼw[*Q$ܶXC(P\8,~qR2 [4\-oCxUb[<s醘_ߨ@baH@K;PAſjAjR5il J?% U du0{3^XͿ?o1wu1CN#8MC]=cl/ByO&!Ono}Fbh(ʫb,v F|w=@+u%b=WLLC},e' /a!8QsΒP"̓Y9 8:#db0( Ca4[G[(PrzF!èvb^GR@ oi8` $I$I$I$I$I$I$I$I$I$I$I$I$IS30 `,&5E X4ڞ2ԤG{Cq0L SixIj7{:dzaY2 7 D0̓@c,mk Zg.ee,«8Yk~z(ơd* g,v(ata\gnNufta E8bC>0܆OOnC1H *%<&O$ÇˎAged`.܅v$"+vtK0 O a6b3/@R:58v Vt_4B,$ ¼Ym1A܄Qv q݀FDkBQQ<5,]E(S%p"x >P(iȽ^o1%[E7kU[c&у!>ql icWBg(RtdjɎ83D LbcQxx6{}X=~: p~ |5>2j= Ư6LE;Jfԗ$^IpCwXh4~~=E;ucbKz.\.g*闅BxL4HX,N]VyV[G ٌW*}rfn?QkedLB8 9mrr!l$$f!1$$ (""(..*.^EDEG7thwW?Qկ,ޯ^U'ޒ۹+ ]եǴO:::dggO}}\.߿|K ؑpdd$ʢq DPd;(E!3ޒA ?|?˗/eddDΆ(ܕ49i`yy=.\$~DFF? {Ko޼Qf5=kkkjnUI'R|76 Ny󦬬mDrrag&qfpq{IBgT\t8eI,:)++ LBETT ;5-tI$ Q7nJߣI!77͇IB* 3$ I{ʕ+hr^" Q[[+2#}I !%w(H#$'%AN]I[FLprGYҒIEIKx`/$( BQcXNIPr %A!%A!%A!%A!%A!DI7^8{,!~!) 56ŋ9<`BH(N) ?$B%AIPܹs%A!%A!% *ZZZ0~:/B%֣݁^z%0-HS˥^ʏxu$""Be}}]^xq$(S*aaE:>}$QQQ2==! &y山244ċQŗǏ[ѣGrJ"%188xZӧSJJPޭ[$&&V`Ybb"28^XCWv{.%FbjAQ뎍RW7K>233uYggj^煅zyiiǏ|=!.F(px%벙{xV ?n###CJIX^^#B!aGaQQ/]oP:Tj4a $48R  " J0w2( BԤZ 0]В0ّY%A "0t Pɓ'3F:X$Lev%.p$;e!1r̗Immlnnbyww̆$ 'I,--GjPpt/`1~jj$ Խ=N߾}&ױ_IX,g|F{v㾌*IJJe#--M̓C^^&^vFo?U#cn~;I>pĻwA/np۷r}z _ė/_TVjj*捔Xo- L-`_]!/ QNv%&c.lŋ[g :CYi% vƝ JI $$ByGSI\Yf:?5N}3r^ 0D/ewvvꮳ<0:ID}:<>>%=^>j>wC"))QW8F^:GP7#֋gzW@ DL Dy Z  q >FyqL9HM Cⴄ԰r:0$ Cb$b[!aY!aHe!aY!aHe!aYeHeY!aYeHeY!aYeH;sT(YY4ٚ&$E )N\U,ED-¥P<2yΛ'Lws="@n<$I@H$$I HHHXɄypȏ[H HK^֝II@* ,@J$vEqXGQ 4iW'$IlSGGGtZInD""Ϸ4/'AH*Ib8gdlpM%$4^c$P,*$p$XNwwwTV\5nRHh=5yHb%ni^hQ(Ǽz`4%U ) QRFT.Y2DEZz]2KyfՄxP(̻(@m2 J%HHr8.//y.\r9seC9ʿR@ u[FhI@ggg?.-+D"A777KspX}Iȋв$865ESUIFFdXj 2+ aZx[Cb+!v;U4 HB˒$ iHf?L&FNWӢOJbA6]UIat.JB*sHBÒ`)Dܶj2͎bo% `~Ox\mIpˋRt:veEO&n\zY^6pFqBQ FQPwM3 LC1 EIS)sT?d%A>I}uM:avx<%D71az0O`Z4a[ M$k<ST˥H CR[d4^r>ȑ :Rw%/;[èV`fzWURՒFaªM9#&w*@ z[aII\>un}pS_&1n@6^,b !*) u l<{\.8D(f}J~oDZ-uLm :IKݎq-t cx6_w _JL\K&P}Ha0%S^cRa˥RI^Gx" A٤reH"u[nUnQ-=Q,-8xڈew*վ.QTG6ͲRmCt?> r9J' Wp 2RlgKf84YX!$l鞟 ԇf/WV6>W/!wQ1< y:ب`a'bFZP;+ߠrNn\e!-|ݙC) Ֆ~_w],-ލ'@g`$$fIG@HI $$$$ $$I $HI'I\]]H3 $$@HI $$$$ $$I 3Dٔl&nWjڏw"K$ĩKF&NZXba߇6I8T,P(x<[Ts=w:^:$$~C\D%LJ^{mHѐ`0I6u$%,+V^__ $.Q62yZyxxz\.%;ݒXLժivWYØ|$.Me!=?/I^OVm)ˢ ` \Y:R*4- {kX$q9EMc3}w$qNhZvjt3fH ~C DDEg" [G9Tb( ?V{U(-ЛҖ*""xGDQWQZ_"?_$馨kg&e&LM_Nh0;(z777!4ԔH$T>ӓ ľC҆riID-LeutLF 7Qn_xcfjXI$D"n4XJf7XOBė}V7{ɉ^Nړˋvj鈩TJNj&sƝ(q' $ VaT* 7V=??3$<) a[pسad@a0ؐDx3#$"8S$4<GsV3ު6Z6X ?^L3 8K-pG .r^__1GEk|ֳ&$w7!A{:gشm. +w K\]]FN lYj;B"zB_BLv1Bl6m|>GBi=6NրbQ^ȇ&ѓK9>??UTR3O&Ni]mC3J* Fy؆ 3|< ԍp=Ҵ±$D @w'///=jgΝΗ!p357H8۠uBσ O=dZ$ݻ. D E-AD4N$:9 8/( ??gFEaH$nfLJZ-999Z&Hp8W#&x\fۍF#NOOwاHcO6m8b0åT*%|H=zzq>te^' r`+epӄ.}SI$r,_?zLb]˷zl.CA$L ]_FA$_Ԥ^WH, Ix~BBpXIUIʋ3D2tO:vg3Wwh4%TQy_&}6nz7΃OX!_OG̑H$VUGErq xO9/A[rALG1+b0}n uw9 Jqq]( 4v}^,zA! zƎ=RtxR@=22Fnh4j2}pl6E]ٗJ%g`/n%8۞]VRvm<JHD9噏ՁME˥Wc9d=S"ŧ|>cJBE*II\OW+l@ @`e=wP(ޙDqwx>bvM WT[/To @5 4As70EOi34|)>~ tx999pkaa!J1H>KΏ$Ɔ9::2$j677ͳgʊ2$paQkIWI> IĎzSWWpaQ.U'I浵݈$$qĥRRioodݰۗ 1ZI9 w'KVWTpI{Z+**k"I@q( Eqդ_~5&33+ ϼh$SI2{ho?;;3˗/z $<󢖄loo#8;Itmo=fxx_~i($a9 $5)a&$555fppvzBssQ^/99[Łٮ6Ǐlj־#߮B\'$1nFҒHKKAnnn$q"EDr>D\nM>$?n޾}mYO1|?}䍡>_;n%~S[14oddJjh*zFVVV`$HBBs}llG>$ܸ6}RMP) ===H.ZbMQh.{FIIEI2%JB5ϐ RSSUvXIx#UVVXnA)Me?|+ m_oqq$$$.]n;$I\$ܜ?ij6 %MoE=zUOޖ؏?|+ '+ ]Dצ&WH&~wJ"%%۲וnnrI#H,$D|??E(S2lڹ9JRHP$=5^^^A{ۚǼi|/CBZIM]j*Bbiib̌EߜmܯO"t& D"A o,Jrl6NS6x B 9Bbaa:\.3$!"\.J%:??68Kz}}sonnlᗊd2_yFrIggg!icc=5юANG A$ lv{;QkJ"BAz^ ҏ.b1aPxx{{#1:noozȐ@]r, '6{H`v{{uGnZ-Ābq FMB 5!G j5Nl5 +l;v7;;5Ѷ7L8G$\v" JQ wׂ[Awww  ) &!'Hj:99cAPa+ ;d0_L7aAm"hAZԦNKWBPZt#Jxy9|)3pz$|w"PFxx຤FHP$__cmuPJBI( %!"$P""JBI%$( %$DDI( %!"JBI|$DD~JLBDLBI( %!"$P""JBI( %$DDI( %!"JBI$hqD`[Q_KR>?s.-pVW|…ZEA]+nDAnŅ/ŋЖ'B]HCs=$MH~fǡiBh$E R,kqdκWuuzrr"+++j{{k=rV+BAؑh $D&H Nfr(iHH4eiꒁ.D3B(\&(0+HKR!vRX[[,M➞ plCH4۞ޞ(|ZX' Y:880!4@h=B ىN]^^t! n !(L{tcj\ԯ!WH Z\\677zM琀vvvZ$ $Rd_jB)!A?Honn !SSSR)5"zib~"@PH $ l Cccc삐 \\\Mp2:ޖeS35$ ?Bٻ0&BHдffF ^ MH$Gu ; 'WH`I~~Zz0sPXd'iz"PM~q}} dc*k̃zۘDo[[[]BPGTy^D2s T8g#Ɂ=}'N䥥%sgi%/FkEASRP 䯥J 5BqCv3U33;;ILɉ|6,{VyJ-.hÌ}I0hh ٮ^Y)gnnZ"<0 F=SeBz ̨؈?Hv777՛˓LpqqDó$FGS՗///G繿|!_ƝוEdI:Cv;///sƥKYpɒkĄAmF_X Ǭ$DICAH I0>F$\>֡&Hb~DNύ ̐Z)+SLzwY^1i%!JBI$f~:!ߍЌ$m%$~$b-x( %$DDQJBDDI( %$DDQJBDDI( %!"JBI( QJBIPJBDDI( %$DDQJBDDI( ޹$q ЍB]6 jSԮZD7u!.ܩq%7DD*}" R9(>3 Hbp~?mll(mxvV*$ HbҒԷmdYZ\\iɤh$x9HH$&cv|^B@[[[ $rζdp88\.)Ym6Bt^$$ZD$133C\:L&$0H$ C0??'m#IL$FMcKkRbIm4 %?\ɉ_\e\__J_ "$dILVI(I’X,T,珏9 e:;;rxxxnX:$VVV~  $1,۵ZW8co,"-BZNw $XZZRL)r5(JAnrw`?88p8r$k_jtww$׉ -HT*Ѡ IYM'''NՔ&$!I\ChYJJBR($;p IMu f7I^t:}OQp-e^X']\\pCs_1lb!3y]?>>P#1 򵣣#B{{{r,,,0H(_Nת3Mf3bd9X%bV+8(nIxGQaÂ`ck!"(ha!ZhռFBAV\aI2cvn$*6M6 Zfݎ\;5ZV22ؗ*uڧ)jc)q%\R@{($6h*ga<4I\˒`}%c. Ҁ@D'A`&DuȣUvKD-ds\nex.T] Le|>) _A&IĵgQhFA/>U|$K=z~OWHa&oH"YV\'5_hNyzeI¿o6 EMrn0LIDԝfDA;ޞ [?:cٌ߳`|tH"-*\%1$oVg#I DY%?$g 1PI|.Iu(#a;u@ E/#~ĉsH P$"JBIHA`KލCDI( %$DDQJBDDI( %!"JBI( QJBIPoDR( {""$P""JBI( %!"$PJBDP"$o%(VE"AD-"h;6!.q!;7Bŭ+QADϏ;HӠof\3g#!AH8H$"1VA3;E I^__$T*>ϪPc7<<,\NɤJX,4;E!`"7fW$l6ettT...TD/xz&Ysss]5;;+!$BA:Xϐcqޞ|>9>>/Uj~ArffF|ttI C6H!}uu #MZMeccC^6;=E Z> @BG֍-LLH$vOL>E _L@| C|𿺺"$(ʾ"5DLFA qss:m\.k_BDϭDV@AH8Hs mFHPT֮ٙH@A !Hp8LHPID @pM)d2F}(J"Gz&$(MNMRS䰅k]h4zf'(m] ߃Mnoo @"*T&''vk직_{yY\\^͐f~@$ ^.r> (Hԡ.龵'$] Yxz>#NYN@n^g^wwU{gX +P(-몥]Dğ.\?8s.|:3e`ڞØ&7ɍ$ߜ&ɦhT{^ʛSqU "/A A' /mEj`e`@@/opv/̊㚝:ӽ ƫ^1o,83+Mnoo 4}㞫VoۤC2iDk"M2nnnnȋ0CcE9P?a[Ltʛ*\.y ;#@[ /}s#f8N'}M<==Rv6*=<<~w+]sN7}"S"I`^9 2M^,kH"\f~$3Hn.ʓ&/ AX%K7{ f<.3R(ǶjwgF{Ru)~JۑR{+]sNӖ7Ͽ+ VxIU>$JQ.>>> JIҩ-dZV1PJBI|I2Grgfڊ:??f%bI`#0:ȋ Dp @ȶ mGP ? Mh86 mF}k j ,<p8dߕntZV@_S[stExm R Hi~D\+ %|ilU "|Pm%$-1S ( QJBIPJBDP""JBI( %!"$P""JBI( %!"$%$( %$DDI( %!"JBI( %$DDQJco^oV$4,㷁\"F` wAT EP *"r!!=$!=/d%d#o/|MMtuNy{z_y3>>x<+EN^[o`%(Bp$?6b###C">>x~FFT+++HE555jtt/vm,ONN"Q!AH!8HWG% lT6Dz?ܜgS cHsrrĄ1և):{x_:~cb?S-]xx8.ڝPs{ÇTKKYz}=RDZ9X?~bbbmUUU/_ԑ#GTYYy\)ӧO;ֱcǬ>̇aaahMEQ (B؍R{X(B "$ 7$ "$\ ?Y 3$ ;BH,7H`~SD \m$. $X]!&ؓ $(B`'$ AüJ~… >wttb:AuU ̙3}KMŹs0ˮ1ճg~̗<~R&ú޼yw$0} S?8FaYuxA. a +**RFCcH8zKVmAA(0!_>4⵴HXbujhh%gHb#$> իWyUII>55%mC׮ !Y(߿ h$P0?.h655¬NOOV<=P!M߿_|RSS,,=xս$$ 4 h( Ž:a构)v!;wvKHtf^c [}A.P[[:<<<ǀ}X,?MNMlGx D'DNBnQ_?$bNLgd095~)nowr'I ̓|[8"G4-?u(N\[2r'7r-s9s &_E؆9F6˩ky!Wv -r0;'2qEujr$o+#Tf3hS(Ae)*Frh$qh# g&q 285Ug4.Zj_MlD<3q$đ0G""BbZja@X@4}`8vJ1 iѼHPtš(m- qw5L"n^6A8t]$j[9-ճsB *X= I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I>p}|! Yu,ƃҒQq{!5>8.Q0lX#u0p WhɠX-!b`"zdL\r@۞+WA #b3$< }%Xx+"Tlˏ  UJWS"ѠHBWe1;S;7Xcvt" %FD< vxFFC=OV\qM]18( =eah@q(NE4~e?_?{ػ Bo6^)$7tҽU3҇0[8!ʃ2Ld,rqѹj/ªS}0 D"JiX6MVGY'9N -ZF(JI*ᕧۗz, iJ˭//Ld&s{YvyZeůa2e&I/=Ԓ4)1`%)-W"җe*sexl8'-CZL)sXҗ+yM`)v)D b!YL 3LiRn:1-8E4KKDM"RY>˲ 29ZƔn2L܅D̊SDxD]ȨrgXg@,˔--cʺr71+m3XqH0_"*E—թ,QʲIH#i0 ؇D 8. pѓx$=(DqE AEP]qC7/RNf$}T꽪0V yyy x-ƘN1kr?޸A *0*jkNB5etH0 0 XSrM]PpR%!+HHH0(T# "0 ko0:ܨ&ruu $`Ο57*FL"!'V_f6@[w a>OOO#MLL1!(++beaaCCC '''X__]KLNw5{{{ ˟C"@ )&&3~pp@~2,@"$eB^$hor4ϵ"!)v"`@$H0 Qܐϫ(,,T___S}}=uww+ұI%%%Adawwϕ>$$˴90¢$555S[[mmm-a"=WQQA*WWWMOOk_(ҐΣ===V̉*R633C999DhȟGƢhll$5W}}l!p(ZYY!FbnsW" !v2"X$E Y$#EEETi$Z166yD ks :nDqYYtrJ///wEU:<i ^]*۶(VUMՁ}/W8 YFu!p2*qqqjUˌ/ ""0-J5###ZgųCHd /E$ׇeZ$2223XLNNKv61Jo!$SʲRB,--Qmm-?Tܰ@p]ط@*v|&*4rEEN { pb`Ƃ+6$$N;;;Y`Ԫ%= .BPu/! ' DŽEⷿٻ0\@YA*AZAEktD7.y Tэ<3 C>߁ }/? -!մrw^~yyXx~~շ|H^9DQY!UDHu Bv!ȭ`rEu,!!$"$@H !B!!$ ooo2&ĦIJoegggnww7(`,3QF9#-o7-Moooo~+3/glm_@P !:!Ksy7Eoə*gX9[%$b5\.;bUBH W*+g-!!$BBH ! $t:8fY h6qwwEUTz^Ma'|F1j7D@H !QTH4xNKL&n?$$1jZ*Jv}y15 5?N,dcBY{l,$ŽHJ~,f! B<6d;u|y:Y|zy{~O%Z-V+NGZn\]Tn'}߳Ił4eY*˘D"qS"! +HP.#NZ6KL&#J3NęL&,m@>d0P0d Dz51X  -nvK2jhc~I;%EBlJeK۔ . t)x<'JI` $Opww' :'Ȼpu1B$ =l-ېEPYLB2dz}D"vHt3dKkj6\E8z s~Xp('˵#NIxxxD"!Նf#R,yd1˥x| 83" *BvM^g! (RY8MRa88hp "gsm&IJG ?;fb0 _.t č"B<BvWJ^B/! d`B[[y/gLqL#0U7!쉴A "O|' $I4mllLy?::2zk4Le n1+H$ @B$I毩:v 1B` ǘ\,u}\t@oҲPaiN~/H$$VVVLV F'&|5O !I$I >N6fycx~~6wt:HxMN"?ij@B l'` +G I$IJVXP $ygޏ7fívBZ9#(,BE 9 b!$I4sf)1'u^B_y_'\tM@lnnх"ˀCk3yyy >}xxYm3Z__7*tC[0m_7ed?{}}5foo`>חIRڤ6_wFX؈a^+ƐS,czg;q h6S$`y>o2rH'H6hZ$F n7N{:;www޸Lɋgs@l6KJ50@$Xv('qqW*({P6cr||l0[[[cskyzzbvzzJ[* }PGq ~m??ț777pݥԏэ;88stܧ}cǵk@~\#?<;/?_=xPaV/w.+`}^Dx" |D_`I:Gg31ʽ*IRe@.jm>Qϻp#t !H;`d@4XQ!%0'Uc1;<[m64Ǐlfb)J+-׎<պh>vr 6 \.{./Rz|uГ6+5A{FG0eW*G$מ& +Ck>VWȃ]/ڞf% ^Jif~B$ шJ/ ntvC4NDerQ"J F#C Ңފq5nwfx2pfnu[0atY`c$z~r}8i>Qσ  AB2 ͌yi`cY cfTd(`؋ bT~v3 f=&V+2H@Ν &g>V^:ʚ 7FcE|3ff"0p<B^0F l ڄs]fs8^5F]4&b@DՌlPI>I|6$iwVۡ`kbc[PH=ߡ~H Cz :܇2$ ABPRjXbPJ$ AB)RJ$ AB)RJ$ AB)RJ$ AB)RJ$ AB)RJ  !H(]i15 8aKLSRS66-K|a(JBFP^J t9tc:3_͈ $ B $ !AHpGܑ $ B $ B $ B $ B $ B!AH!AH!AHb(!AHN#:dR љNrGkZ4M5F~щD" B $n5$ތl[yxx8.:Fx3aZϿ WrX,d\JV; gIR2d^K\vf>h4*L:B $ -!aEg<p8|.Kt*FTipoz!&_k_^q $ B8ųۄV<==]펄lz}VB"ۧmmzFH8#z,~y.pz]k}9!AH?M&jt+Q&9|I<`"!H$$I6=l Bt]V p(:Q݆P(֩P(Db(e  B$[bf(R)':w:S99j+p$(>#H{j}?$ k5L'n;%bQh4FQE}b̲D>Y]X!0x A >Oc?mD"(D]'"oV׭ %H$VTg6N9XQEQ?v;STªB!=&꼿j%ZMf\.Oa@ӱ$@A H$ áJr#(wxdtn_,_5H NCp|>#OA}!o\ʭa B>G m2yJhd*˷˛Kl6 A Do>V!D"vEQ;d\&A`J%R | (p%(vN<Ǘ+\NSZX*Rtvg0A7臗Jx^A aХL öN']jVVGQEZN1Qg}\{`W;y bEBGg*eYtZ+ Fl[i6DaZ ؈bai_FBBBK+?V~, [C9]&5<;#' "qppPy]^^vTD"DbmffA`?~B6jb-m{99^HHHH}->k~||ԥaD"ĀJMX@&T_Gi6: 3!󯯯t:Wf&#k&O/Qa#?)׳.eqz||Ҍbj6)S-,(#lnwo\,@tn\+][[\nnn9_$?m{=to/}Ul9"D"ᇽ2v'nnnNN$FO[=< -Ԧto63t~`E|M+#t/..t"OIz}nlsoHtÖ׵m袟?jbeDTXdcVVVnvO3RNy얉D[˸]Iݤ5o A$H,P[ p 3ReI_Hfܘ9??\EVJ?PWB:h}D^wm<PUq闶|N$T4QSHHS?̘3Bl}ɷwI,6RN˱[&]o.m;$$$D IK&5?v& p[d )@5, ()Z/XkՍlmC$|gi,F̀6ܟ?%$iFm^z>|899[~yyg,ǩmfwhH vKh"d ]!>A~3˶e3@nUH]ׇ4M=#үwlV~ZKFqm!e9?vG!u+ Cb}L !!$equu`oD-͈^__7C}H͐9t-}f3 ڞfw̚e>4$%%W6\´Eu,/..گ]!f{Oooömj&$vh>a뮩 [v~8O7^ ;'ңBˁ-tuh_}s]{8$ BBH? X BvD3OԳ% BBH ! $BBH !BBH !!$BBH !!$BBH $@H !!$B@H !!$B!!$BBH ! $BBH !7_^^混c~}}zo?wss3|BBHi4}=??ϧ?tt4 @H !U!qvv6?==;wT( ?VrIH"VVZ`'؈(h!((@P]`1#9Lbcff=j%F9 9onn,fu@&0t:-hT9F|>],KbDdXH\hfS22HR(JH$d6"_BnPV% O!P$( d2%B buӓqZwEpN 6i?"p8|킀Ht$>:/7uB!888PVs\ E7}yzmK.@ @6t:%O|`vՕ KnH hh7T˵.zHB1=c`\*0E"SEg}~₽|^F}x\9,#J&ju БHavVxHJ( C"ϕ Ct@TЛEBaQ E"AM"^ @VČ'k7wB!Z..v S(QT"AHHlHB!߄CS </2t:+{___L!X)MHP$v@$6ވHQ$! #,6+J(( W.ċ"#Q$!ho&͆f9.X(  Eb76[8==ۍ&B![):7!OªnriE"MDb ?Ɋ@߫ 7=Г .T@8!88 qԽ_Dt$ɽ~LRSS0#|!(_VxB:-K&u B@"$DHW@ >;4M~ 0!( TH3 OFY tZe5t;|GVSOOOØfX,nnn|\.~M$>pd2YcyBأ ~|||7NBƒ}8!vBP^eHpbqR 8/E1M`b1&.zVAMIG!i %;O!\8gc>1NP!QC;~ W$ p,!.<3fx;C|<{kgtdIH\ c_|LHԁ@@`t]󲲲BdhK׃ـѨL!di`^PW;;;H0˜FFF7VUz]BY[[Â_q~~>xyyp >V ͪWNU* |hӓx^zxx$G!dlnnbQ3HHH#q|| Kt:WV[qiK#A#A#UF"@ L  E!)q B΄^ N`$49-PHHH,H 0Ph)fc,NBfYg25_*!6Q JjZz(FbDie 2BTFFFbFb^ S NBf)dT&v\.T >7L(B~-A#1ݴbݥ󗽳kI *.. EP$TD 9^L<nK{vgf QHz=n#  e*iVj{P՞vc8Fam@ ߛ|n&y||\u66`{PB{$$$$$BHP<A`IKXҽ em_Hbb6TR Rld2;se W v <==up?V3iDzzz2T9'r7 ҧOBqrT4ݱ(J"Z -%[g8P(Sq: p+[5:z{{;h౉lu[9b1BƑuDz-LL"yKgk]l*s)lD"M0Y もܰ$+oFh6avmsĎ}~d ]}zE0}JB+\~v5 yqqcf$A$$$$$$ =I[aۂ2s:k"^Vϓbc.9ć#$X&Z'$67{wHaDRY .6^`k"wHHRJi"&k ^)~dLB"ru-!$Br68M|dU^e^;ϴ˼L_i[{~~^NNNC@H !72ve6c/f777du[_l6K;?8!!$ľ?Z___,`'le4,y^dnrYo%(VP-EA -5TCCSAPSl$ N. :/C>>OU9<{="H Ĉ?=HY(p8d+w$NOOMNҁH@`[YY'H 4xxp'ɄnmT+P988pu B&KĎ"HLHh]^^HY$IjV.-HՕ{DA2QM츱궯Fa| 3% Z= "HLHyM$*&ݯcﳀ8qS(qii @$HxMH(BE{WX0'ZOl6m}}խN=5wJ 4.\.s#"1" 9Uף ҚsD"WFR(E›@$ DbDbqqo?lDzz2P ɤ8VѮ߾h ~˄KJ D$Dx8vH(>BٙLJ}||kSMfJV7BIR @$&C$ d PVN#pubkkVe)Tx<ͪժv" D>|nҲ6:y"Dpl"qqqa ?.\mccÎ{C9>>A>sF0vYn]kw߸٫(CQDVE + T,BDY%ff3wYpag2IN2sa`( DHxw!q^!Tnk_T*yD2YgmӉg'yM}CbG$bQ;j^ӎU'HprnZ`v?f3!^R\[,:+ch4j"\nVgNXh+w9xkFNjkB tN /dzDY٣c^q\T:6:A,Bh{ٻ مP?Fp h2?Lw l\Gfه=xy^CqZ初rbsu =f<ϫ~߮ 11W _&TlFE_@!!B %$,n|m ?ьJ6 Ih cBA CMT'UfQnb 1eUxGh`r:Obz 3aI\s'BBLLLL FHȗӛi] +r4l $xZ)< 5d:M"/HRc)W{dZ V ڣO{Rwp1|b<^o!c\.@t􃽻YI%8|1DDA(Z]E-[]DE] AAnDDč?9'Mx g͡a~~j.ZM8,}}}e_|.$o@H !!$Py^o|71 !!$I׏iy#$@H !!$B@H !!$B!!$BBH ! $BBH HB@H !!$B@H !!$B!!$BBH !!$BBHV"mJzv<{!!$w~!LY'LHP$( Z5X Vkf"֖J6ٙ XJ4˟Bt:}ONNGGGj# F! &$}cIHP$w@=(Ploo9X@3Bj- F1:d2rwHP$("z! 5F߾b7Z@ 2KHP$:O#&I!dK^^^T}\P׫H$j)p~~jŢ\.G!)~~yl,Ò^ݱPP$(y f`xoBC;~xxړW]@=V5xH{ Qۧb#?>> ZfgfYlSBT Z uv;Aİ{LKOOO5rrByDr9E"1"aL3*P|$!Qnj$WM0fPɤzTqPquu%fѐscs&@DVU, ?ÐrL"dh7MGf%666( <XZZt:-CO78A!d\ ?`~dv$}oZ}}{{l9P <b^R" 0˅zqDDĝ n|,D.<Pp܈;w9|)r~жDA`ugeTtqqq!n:/">u}p씕 ICO"!]Y[[+,VN}ص=I$HL6PNל$)))))J)U6oe_CDb 4EVmJ"Db҈ԔEulyxxS"Z\\,///:\n!a^݁KzppP.//M9???ڔ \H Ig)3X]rc}z'Sxޚ~sH?>%e M&$eH"D' tx||ԀU:M7鱐nnO:]ZZBxWVHY'X^^l#eB^:Ɇ{"c|ODI1jѳuNIo75_lHD"O$Si;D MӼ]ՙ4u_wg9o JytyD!||EDjWؠb]`ZBtCNQ񛭢"5gꋟ]Ŏ:lj>V3{-a<5}G"_##+{h--_qᓞ=i~g))wupQmMRѾI$H$iD5~m _" ,x$T"@ $@r]&5y@(EgWY;x5p^A"4*rDl`c ijjK SÚѥX/v8Ys*,5}(޶DBE!Ά.! SRRRH$H"1DAeh$=~~[[mnm."AV($ <:&p>XB@*Ic/6G'+)[fp#I|::c~3o)R{%$"WR2=\x~~YmdUe)\'I%>?gʼ+sHUB?[B"Wu>\@sw]H$XBC7Y "ө2 ?Wr_B5!qWx<<==ɉ CE|n|>F_6Ph4$KT[^ !E"z"z=v-^W 3 7>gt\KM Bh4"sfa* HZHhf>>.mّ`0PJ!vXDHB!3 ~R$( $u̅l7ed2|&{86B!: & 9oBAr, E'DoZ5SO L /"Bu~tt$`+...jF,@r x R6E"ANmNOO'YE-^ց B!kWD2 0~OޜL&@,HP$(!Wdr^&% !u7_t:-FBXLv ʾfS"KU""p8jݝ\^^bW 9N޹Dqs%!H$E@+R|6ډ(>Wװo ]x ٝ9 tJ<O5,.\.JIWWW\\bDQy8=l<+e˵2K'  Ӏ͍z^jRF6 b@.$zxZ2s A2 `$p뒀h44~yy۸Wi ձId`Hsmo팇@#Ft]4.:Ū,r7磓zXڠw\xR ^Ƙm~CDTTп@ozzd2 :Wk^* C-tqo2/ ~OskjGaoٌ~8z=cVHEH ݲTj ahTj.1L[bꊱɜOOO65z0>>>~8Jb102u ?2sV?/~-˃P@iHK/u!o2Ӕ۟𼙲ga}CVr(xѥb/>sǨaK [4i {z ~&@Шs&ρBBHԐȐtu 9+'h}r\rDV}H:+Y.'u ?Y95dh!mHoL2 ]ߞ(o>gɐU2`0hϫժ ]/ZlKQ{{}A1'gdxl~7eݿ}5U*!QghkVo[=$|<:Nk  !!$~zHKDEkȷ\. Z6+$0Aeį @9W#!0Qs8K9]e ceswGQ Vׯ='%$uCjXʪq^CP՟>e!&y ym]DWuk?f}3=~F~[ovY<=[,&$!!$x 2uVsK벏WӲ;?v@H !!$xnVje<+o>B!!$BBH ! $BBH ! $ !!$BBH '#$o$B@H !!$B@H !!$B!!$BBH !!$mþ!!$xөf\W&Nk5 rss<ᐟ?\.|3xI%AQDԢ jmj"vmeZ хFP<~ޅql^39s"H ?S$FFFŽ7+4v}}mX,"199idVY>svNLLqqahh/RɷHt׵TVX,bH D4EBt"͆*o %j?<šp>wX4{h_/`ۓ}/rڕL].eE/쥏c?𠃄C'ᐞk ~tqD"}< $h?t9R/ޤ. ={* ! ! q 0HeXd2c 9lݩh4* BzZ9v!:6u gx?lXP?!zHVSdҠԓ}s؎94@B۰<~\wt:"F룒$tgۭ_܀.tTRe D.D[q>q :K!$'H HH $ 0OԊ 0v&sN r M=DB8];2%ءE#ù(]FC@BDDDD@B@B@$e&e;ϒZqm55-m--Ac6DKCKkC68|ठ)'z *Qԏ\mˬ?/X2$*s7[;O*v94qzC|q"$sqm9'Ym2DZ2 3}>3wcPdcseY&BW[Vg92%weWkBbE@H !!$}'''\ $V\{uWy@H !!$B@H !!$BBH $BBH ! $BBH !B!!$BBH !!$BBH !!$@H !!$B@H !!$NS~|^af:dׯ_ޞsBBH ! !qxx~_2iH4qzzBBHRHkx||B"c0vsQժ}>>>JF-Vfq~~xzY^^^g񸼽l6@H !!qssSFQ0MX?==]t}}swi%uETTJ*Xbj6bemk#!IBE $Eȣ8_rHݛQ$qw31dwsfL}NԔ)2LxڬMA-R 0I(@$U0in7 D'''vyyi6>>$UWVV\o{2>]?Ҍ/gggz<\q<*>_eE6l7kAEDD]t^޳ &v&%r.j혤%$jqK3aT?B;]V>Çͻj8P(Xyz^iLJ.sz  %+࠸?amg@^fO1f`?[m6hG~Z0L,Kv Mv)[bN+erݝ4 t=JvuG&v>Yw8BDB'"_(A`A4lHcrw@rϬˌSI{5N[oPl jX@#y@m閔 }}I͒7vm"GkWb{|1m_H紳Rmѝ LZ+qC7I4;D”iB@ΔK~~O:Dt@$fTtPq5<_xFU,BE;J$H(P"t:M@`$iwi+b |ǂ4d2D}xhxG{5v8%l\[_:Qt"/w [b/Q=z_ ba" 1@?90p@a]"[oL$PϣjX&rĝP'3AzPQQ"DB7`J4 | "ca %u5QO"D㙾&I#/kYk*DtOX%(- .=Ac/Xm=AOPCC44": "j> z|=Yӄ0ˤNr=ۑ#V+DSdv4)KnWiY|;S,?JH,s|YǏD&Y*יl&죹(g}kOͻ S%_&|xxN&21;;; uƭ j4|y|b $k&QxH:\ !!$ĚȑI#əzr}Zrv !!$BBH !!$@H !BBH !!$BBH !!$V,$666>BBH8#3BBH !!$BBH !!$BBH B@H !!$B !!$oTrz%= vږXrBBHݭ\.//"q`L? rssS^__p8,ooo:a2t:r_ov|DjM&ѨL\&9==-;w̚:qth Z;mRJBApqMppE;QEAA7'PU?0I8朜}aחL&3^w [$.C:m1oKA Np8z͍\]]-nwr1鴤R)b~_ sxNGl+Ig-VKŢx<yyy1+Ly I.1+9ε2s8S ///wBږd2/;}EP(dvi@ ` $K"L$1|F(`0Z,uDQs}vt,'=uKZS 6D HIV AA$ a@ H$ן,ӟ8^z VBc/_ A8 S7   `$; ` 1_x* `Q!H$N"Hq7X A H  $ z,W qA tJ.]áTUh4L&cgYl\GѐgEv[yh[~/Z-q\~~~Zߋ~Bׄ 2 T*Iݖx,`RG{>P({p2f3I=GEJRDoz("(*%=TKg>_vr>t~s>|΍s bU q"c{".k끌F#omb۷ E$PDbs@tttйGQr8n)i^SӜٙv||L`j Cj4zTρܿLS/Wp8L4#- yxx"~zzl6C0(r6shZYг6* hG0&/4 (ܷۛ"0ҝL|}}X,R^Y`i=a mz"u:vdMIT`$a/^u-:{Y;vB- 8^Vd2lCደ.G[f`^#3<==)""H$>>>Ŗf 1߳:d9 T![&~ #AFTj\!_tø/#Ef L&6˥9d2 Z 爧hdhunpDBؘpV D["]_%^^^T*ѿ&p%tV:oBtJ9? loF##g۝ʰj/êX`:?#_pbl???p>B`rmݐP(^$PDb[@E+\P^__x^]]8@>< IH`Ⱦ`l6ˈ̸>;F0# lDD A!pJ? YZTSHI{ `\f?kk;33;??Mz?www|`-ތ驷9,{䄄=7 l6A?r< QL<1H$s|WWWMmFhFxI؃?$+*3F3ފ(>7\ficje޻&Ʋ ! -T1`R7T$$$$$$UH-Y$P椃6SaƌsoyQ\뼙"6K:ӧk6Tt} [fvfDuyN4 ,xߡAV2jaV ԛź kw昝Q|| %˚#zK۠t"؝?B"Gfߜc' eGHdĺJPxIXGH,KHHHqxxxB"$EBBB"$6')P" J՞B!$$49f;&PX"$VBbKlJu+&|i۔vM)kwv67# ðbi'vMK麺hHр;p -];y2gΐpXvs ٞ%3e234ΜtS|H߭Do[3cbbL|I~IG2n(cp71ķ8K~)F]2Nόuo# lHt|+Qq3}<Ƃ9Y$?_L/'L؞ 3b<^qgɇsNo# &agq!r@,?Diu!Dv"< a1LFa8*83 l8 Oub#"D'v+}LcbiP]~SnA9060En CϖMx_bᓦÌ^mPV pއ[N!3"6ŘNTME*\r0BCm@Tn!FOk<(zQQ~jKՖ*á6z]1Q|]x$# x # 20j~E{[Z{0pXċGE8V NZ9Jmƃ}փ"TEmX7pp^:J#b}fm102:<ƀmMGgkaCٙr05F~k;*F@qUc@f;4-8FE v5W:* 50V2 0d\`4P$I$I$I$I$I$I$I$I$I$I$I$I$I$I$Iұ>u!IENDB`extension-manager-0.6.3/po/screenshots/_6.png000066400000000000000000001752371477302130300211530ustar00rootroot00000000000000PNG  IHDRpA%bKGDTIDATxwtWF-PʐP +xr\q^P*((W?/8QQ*D"CDdΌm|<$wҤi^ Q S$g K@! `,`h,PDmmF_겨 t!Ј@aN]7} uʫ3aN] ԅ `V89M||S 6Q Q ǬUANm pU/-lBք8)Ĩjr5yn[eg˚ $b!N`›`/hqxY-ȩlJW p2MWVNrLUU q 'RD8uosNEh@2[]> & fLC8Fp{+1{e__Ρd/B{Xyp&&s?_!-n r`塄7f/={O@ lr]]^m2ۅEM8U-wLxc)wi$2BA-px%JqePu grץT!LU1)=:_WxcU&FR\MLL266bih6i}@5s8ݞWRRرc޺u璊u|xvq*?p)½4qmPM"On4Xv]իxYF{JgTTTHR\\bcce6e2=ANSC%%%ֳ*..VRRIu|&*Z3 %PSӺOަ88q~9X,jذaժ+>>^yyyo fYXjrH3@e|wWj;k6z)66V +..V RO?s~ǏÞcz kM -q@"ȩO*M/[UldjCxjaÆɉt)!@- 2bQbb@mWZZ_)so ]W*O1Dw)o jYkboLftQjc\;.fsmkD )o|?/&&FVpfTHt|^?x)wVh@PטJs@{)?j5f|:F0`VZ2b(!!g٬X*11QEEE*((4?|/.҂ T@ͳZz衇tYgIO^'Cf͚I8Jf)^]|zzJ;Gb]wݥ.f͚ .\EiֳX,!wA*--c[+ZTgSХӇ0vX]z!Ӹqc]zr8z饗2t7ԧOM>]tjUAAjj+r:1bD Ԝ'xB~Zn+!!ASNC=/""y@9@ո›"͟?_+Vռys :TƍӘ1cd2裏x}>f~~~UjNP]ӉW[T[ZTM5:%I .^~jȐ!^С2224h y o\3fTKs]w/:m߾=H;wdUi&mڴIojܹW?Bkݑ,3jݺuھ}222= RϞ= 7ܠ7ٳGӚ5k4w\=Z^TwX,>gpLU3_Q5iDʄ7lݺU\-5aÆZx/^s 5XUp80aBPV`aZ1;ytSOO?Zgz| F-I?~ƍ`M0A]vY8F#..>@?|A9rDCxucWa@@jE@"TgW,ø馛t7 /j@]rJ3տկ__̙]SNEe˖ZprssuV 0@/nkРA)IVZ 0@fY˗/ׂ us9պuk;vL|AwUIIF!@W\q f͚_~… W_9}yw矫Ps/Эު;zꩧ+))IcǎU޽մiS>K/n5`[nEguVXQF7C]߿_]tݫJ=*&&F?ׯ_a]zzkѢEA/oƎk6-\P/rPV3}_~Qrr:⋊աCԮ];M:U*..g{jժUX,tUW]O0ǘ2e Çk=zG(몫R~~v2Zh㓘wAm۶ՕW^%qq-Zl2KRR$i~svj{޽{ծ];=c9sN=T߿_w_م*yݫUA|^$.z۷֬Y3fH:޼Sjjvޭ{Nsf͚SN9EK,w'wyj׮-['cJѣGu5f+_=z/TVdXsN-[oWf͚iڵkn&l6]tE4iF޽sn+--M\s{==㒎jӦZn Zҫ}[1RSSտ8p@&Lfӈ#tm$ݮnM[l 8uIfOj߾}_~&Ok:=Sa?… %gK74htwy;vlXʨJIIQ͵g5oܽ}M3 ƞ_xs!M4IgVv$ :vo9SU- WSOyzT\\\y:oH"M6~O>)5}￯?_}ў={4w*S:l6Ir"ڰaCI͛k.[k.k+]v2o[r&Mmۖ95jQF~ɒ%v{| W޵M6uYԱcG%%%d2SOck׺]. ou\I'N:I>^}Gl:S%_'.\bp 5_w .СC5o< 6̽=lef-)) -|%dIk|oH"%i͚5zʬ۷oC$I&)?SC 4n8_g}_l2dXt:UXXlذ2V\8o3(x.KMMO<{j֬Yڵkx x;fc 2 4o\O>Zl^֢E 5lP$kjܸ}]}A;o{%Ԇ&??_ ,пN-\qi͚5^2֭t:_W# bp8iҤfΜ6mڸǼ9ciL*lGcP ,pHٵk:u#Gxc3СCu!jJ\s^|EIrl511L2LZzV^ݻwoԩZ!_$oeW&)WVo:wX}ZnLп$ t ?M}UffJKKPfp.Yfz'ʄ7Нwo15_wohnW 2eZhƌsjzw~hBÆ SZZ┛^l6߱f̘o&O,I5kN>d=~g up *99BwvUaCi_9s?Tf͔zH4irssuM7iΜ93f>m߾z//VX1cƨgϞJNNVNN;-ZHwVffڷo_!1...Vbb/>>,**R~~~7lPV/$$ǥuǏďuy,Dz=WuTK8^}U9N <80e@;l6,mVL>[cǎHO?{W2eJjyrrrtM7[<Ӻ+Fk PPPߤ :FB f… g}2QƿPpT%N~~~] o YQQJKK8EEE*((nSu9&#bg}3PkLl;vL%%%r8C%%%:v옲kz̛:8QfjOYUhp8dX"] ^gUhjs\;.c?N+,,-Yl6 #]q4?N˫U!fS^^^ رc8@ rv]999:zͦG*''á|n31ȟ{Nv;-#" ysjbG @rss#]jZ5hݎḻ`0 &PC`у0( c\T9vn+&&&eDdRiiiˈ pիbWRR"5*T@ЮIΎH zV&I,*?L&;%9YυwuE_ls}SRr5uDetjhn_bQbbb ͦ";vLv=oPPӉ%$$()))e(ժ~UAAAK"!Û򒒒2,Kԇ7.IIIX,.@sBbbbK01pNt H58u5JFD aPx`8@j} A7`OliN:I&k߾}.jEgVǎ%I7oɓ#\_Rrrrw222O?E*IJJ矯]*%%EC׺u' %Fjȑ#շo_5jv?fϞDy*,,ٳkR@4 .8 o$SN.j^~eOV޽#ISzz̙[F߿JƖYަMiFּyiӦUY4x9N[nQ֭cǎ#AemٲErJs=X,8'NԔ)S2#رc%I_V\_UfYr Ν;+==]O?6oق#_~~XvdҸq?I̬ _ʶvLZ@@7ovl -lB/p$)66V*ruWJ^{5m޼YcƌQ֭5ydm޼Y[lȑ#5tP?^SLQQQQ+9E 4nHҨQԯ_?)##C5S$U`PDcT^||&OBꫯVbb>c}.2 eeeԩSB6NSK.թN;M{>VmL \ ݮ^xAkKQ-tM81m3223TsEӈG̙3;wѣ>rj$hʕ͝;WzΝm۪UVQג{>HW\qnt:G'ZM2Ewׯ^ֽ{wwKW^y%j T@8ХK]3o͚5ӤIsN͝;WC{Q&M4c -]ToDcXԤIv:n>,[Vq5mT_f-[,M2E@0<F!I>[ބ o7nƍ+--M/>l]{2LJKKk{7v:r:2Lիyogggk̙(pz)Pjj&M (..NWo-ŢmnGT@ôMFF* %Bx:شi:w,Iˣ/͛7פI$x?Lxsk޼yꪫ$I}Y$KQCjڴN>d޽[lQ6m$I#Gh֬Y4iZj%IktF:@]U-esΕx7CwuWKʇ7pB%''ÛJ*++&K 6נA4|iٲe?~{h'xB*--ճ>+Q@]6w\7CgVǎ%RY*۷O֭#<5$ɤ#GFUh:묳c}uڸq.]NS^^VZ ȑ#>}zDH \L h\crp"HRN&LHzrץmmn~,'.'. 0 +//O:@)ݻ7%Կ9RK.ꤜ2-OM!P5jHk׮/$$ǥuǏu[屬muO AEpp ] hr8'lH`(< DZPTTG (**t uB8 cǎEC0Dfە2 !77Wv=eD@ ݧ zx((('77W.x` r T\\DjfSQQ;FZ7]~:Q v]yyyˋt)R}D"8Pc5m4%jЗ7\wVN]@kذaK0CEARiiiKPO@t#08# S1^zC l6TXXRH0(҉r,6lHpXVկ__˓ntI .T)VU 6tj#PVի2H @ 8h} Zх*DO=:u$IڴiW:Iܹ|w!C<}ݧVXk7o>c-ZH4gzF8|r͟?2&IҶm"Q mڴ~p/M0JKKu1,Xsڅ'D&P)ժ4wyիBIR>}tתM6:|VZU0=ڵ$פIzǗYV\\,p[nEɺ[eZ5yd]wuzgT~}M:UOԴiSŅvP=pB o$[nXÇY6i$}~KHHСC5qDJ^~e=zgԴiSYV}W:z=T= p fɒ%zB/55UfY?,$Iwֆ 4o<}WZb֭[@! ?.]H6n^A+բ&==]999;}޽ Sj6mZ W BE;3%xu_~Zb6lؠ 64w\5mTJ@̑.yꩧ>ГO>Z9-Zd2fƍ^zl6+%%Ev$A ܃wMEEEˋ}'D:ur_ܹz1Œ%Ktmm۶6m^uoVf͔駟T~}s9?~gM>]%%%a )Buirs~ۮˉKF $%%%@W0@qAsrrSըQ#]#l?NmyܖDz=y['D6lP%Iׯw/'Յ'D'Ot 01xl.@o@p<EQ=!PXX7jfSaaa`p86Myyy.@-`tFcەz)>>^V+l*** NPXXȇ+`t08#08#08#08#08#08FhoY_|6mZf͛5qDeggG:` &hرIԩ233դI7TZZvlll[#F9?ш8tKƎ 67iDj߾>2iiir:zgZϜ9sz<t2={4|cX+VO?<JMMT{رcuuiȐ!ouӧOo={}:3ݷ;v5k֔sՒ%K_(33Smڴ MhSˬ_^wBqmO>tQu^]pvJMM#<}i„ z4lذt5kLw} t-_UTT} 'J.O?i޽5kVtRm޼YZ`6m3fڶm~7M6MNST-D(*Rfpػw PKJJn:k.uPD *,9rYd iϨ@]B%#ө^z0I[x<&I]tC:ф={Ǝ+I:v옖/_)SK.jҤz߿_zR˖-U^ιa9R-[T-4jԨ \yر4i;CE+W -p"=zkl6UVj֬{̙37(##Co$UokÆ z7裏USO=hoV{7|'xBoZn믿^6-B$|uirs~ۮˉKF TtUjߗ^zIs̩_~*))ұTD 05jktD]q-XV'-!_8AX=󒤋/X)))As-_\U>g 'JKK9_۶mնm[}jڴ/ȹ@D #|nƊ"hBA111uiӦem޼Y'NTvvvjݺ|As9%''+99Y:uҸqzjM2E[*nzO>|8ф.T4a;Bx#I:uRff4ijݺuJMM z#ݻ/^5[o=zTse(o߾}Fs@4!/X4vXsVkݺu>@銉:M6@MIMM?KJJ?͛WSeW^ю;ܷ7oެ7x#hx&tI… C'--MNSUƍ /T=dPUvओN*s@KO͚5_s]O//PL>]Ç[G(==6|߯CmvZV=YVp ڲe~mz3f3}p=.~n馀]r%Wnfی7N:"\I{Z,=ӲZ}DꪫxbmڴO待:YXf~$$$W^Qf4w\y^I>EF>|p}SaY waTX~ghĈ_*|~5cƌ2cIǻUe*vym$)??_7nԪUuҵԤp?gqנ.;;|_xb}~먊p>&_x#I&I_~y򯓺P{_t:իW/߀tIIIIz˼5W| vP-Zb"q=k Ţ;S7pC ҥK%oMӭ*xLnݺfŚ3g=Zk׮tO۶m?Szz&N辝ER2Tzz{=fM0A~{}.Bw{ァ,)66V%%%AP1B?~ԩSc}(dv킾9.&^8uԱcǴ|rM2ESL޽{|[q!կ__^z>#Ov}]6wlRAQСCץEgyfeYYYz$IC=FmۺرOW^y%} p?B?tڵ<6nܨݻ<&^8tAGpq5a=p@mgΜI&)##CZl~WIҮ]Ok„ [W_i͚5eu97Է~n->ڵk|4ZByڵkWQFft KlllR(&&>zuEuqyW4m(7nܸBV.NS۷o/\kٲL&ϖ?s[uln U0Ku>v]^j7z%I_|qoB|9p/_, :磏>Ҏ;t)YV͟?_ ,'|;vM64hL,IoFgu;7n\ ;_~LpA1"f2tYb M:UkvOڵ{Yg#F護ޒt|N:﫯 \h;#D 8TZZ eddD<á_Jn0fYǏsN=ϓÇb()):ͦ?/r.\)))Zb{=رCNSZR֭W__ ~6lt!]xv8}5o<1~84k,{r:JNN.QygdU}MP7hʔ)zNWiϞ=?Ļvwӯ_? 2ĽaÆ*۾}j ;w9..Zl~I6k׮ڵ6l;ɫ; a#RՁC RGV*8**TEN(Qi+U)6y $uJuF}s gϞxo޼+3GUWB>w:O"V Q &௿t_D(8;;W8[:ۇ˗Y?c U:6IѩSjPy;z^^Ο?_WUff&6lؠr,>.--7N>]~/^ Z~ڢK;]VsB'xu.]ӧvFYYYHKKùspa=|}}_m۶ }6v؁#G?77֭[1vXj 666BNN222p\p>Duy 2%߿[n!((&&&8tPPUWFjj*ƍ[[[Ν;x|MǏ1qD}Zj-Z 33nݺ۷###&^-e='|KP.5Rge} ɖe?z=;::ƽx !"Ҏ,NJD5x`XBi]N>sssP DYkC-Ca ^]*VTyBP8&pt8DDDDDDDD: """"""""4DDDD)** QQQH1CDDDDDDD!"""""""qL8&pt8DDDDDDDD: """"""""cH1CDDDDDDD!"""""""qL8&ptxbxyy 5Rv-x{{#33SK8Z 2h߾=6n -DFDDDDDDD -rrrk׮G߾}u8~8X@,k9z"""\v eطo300Һ1BuG|YUVDWb'˗/ѣhӦ>+_W(x YZZ~* T5kPdDDDo.OOO`ԩq1e!նÇW^ Js5~m{%8:k׮jۥKl۶  4CO>A֭q] B`@bb"ѣj,rq>}V_D7Nbb"]S!C`ʕ:t(_ 6 ~a=z4i&ޞEDDZ興\~Ǐ|X,̙3qi\x/q2&M/// 8III?|[^k׮޽{^&1~xٳٳgرcqbcctH$/N>˗/c_V9,00+W璘/b֬YuFFFHJJҭ bbbpeYf߈8;;#44کNG}$&&"44-Zo @ll,_jrwwǺuTT:m8;v숛7oʗ5qFΛZh+ :III8xұ5}^WeS9 TTwF _~9sn &pݻwڵkHOONJ+O>7n{󃩩)z-cnncppp'=*燖-[bС2d1cƌ2億`8|0ڵkEG>} /3|pOPԫWŸwg!""JӧpvvD"mZQ?~z۽{wbOgϞ>I&aذa84[fuwܹ8pFW*mS_iӦ2e 0)>>>O gggaΝ8t>cq~p*'գN[+sEX_󦢺eDDD]v4hұ5}^W:S9*S{ST'Op[78oDk׮͚5q2"""iM4X,ƩS;wƍSSS9k֬AFF?~UVUc߾}q222qFXZZ߱c^'O`ɒ%Ν;HKKÆ Ct`hhcbܹ}6>|^^nUbΜ9u^^f'Ow"͛7:tիW#""JTԯ2wFrr28y$agg{RY=궵":WԍU7Sy]ݘiUl{egN'FCزe JѵkW\t t;t耈mJDDuԋ/РA2MMM3b„ ׿Cbݺup<== /o[zYW% all#&&k׮ţGe~zzz  J?N,ۨ?P_(4o/_V}OBu봩}Ԯ*N@bgg١~XlRRR!JѣGŢπ_{޽{ĉ'O[nӧΟ?rUô4B`U:mzUe*#^w )))w^~Dر#z}ر#~*ǯN=ϗZS+ՍUR絢Ƭ=GS"zs1Ei e[CozzZ_p| -J*S:1b4k F)ߦsvy]՘мysyPqYsV{Eg'MZ*-:t\]]yWW,ٳgTTTTe˖aٲeUH]7nN & //W\СC W>SL>{.BFF6mڤrLHGŋ1yJcJp9̘17FBBƌbܽ{˖-Ô)S0m4ŕpB̞=!!!(--ETTouP7 x رc _ ̙3>={6ΝݻwC,#)) xJ~^p~zʕ+;v EaΝ;777i]j\U eBˊ-y-{6wttMbprrZǤظqJ򄅅a߾}DDYYYUdj^DDvڅ}i}cǎ!((F .ƌaÆׯ_G@@=z $""""""ja W^z Ċ+pQ4nJ̘1+Vˑ\ 9snݺ!++fCDDDDDDDjajܸ1b1~7x/^(Opp0"_}H5BUG_r ={٧@iYf066ƭ[j+L"""""""R8uD";L"bʕcff """"""%^]rpqqG}ƍ  Ѿ}Z*Nenn!Cq044ᅬ|<cq ̚5 011#k1r"""""""z1֢O]t.U.]+ }LLLp=,Xӧc֭HNNFJJ ki@K.PX/{XVGplYkٳcYj\]]_-[`ڵtMVVb """"戏 @³T![2ֽ,UxHպl2^E'''XZZuLzz:<7dhDDDDDDDCѢb!((HۡUJ"TUko8c,ۋ """""T*T*! ! h #JQZZ@ h7&"MLQR)B!̠_`jj CCC@"H£6DDJKޔͫ`ff&o&iojMDۘ!"""""d===HG[}SSm""8˛NTCFm""K$i;j6hoBDU!. +k&Q,W4&"}LJu)9Pch.@D """""""",KKK,Z'O͛7q),_Z)""#FZDo8m@Duo|DDDT㧟~͛71yddeeI&ѣrrrUA۶mVZXx1߿t֭[qa޼yt8DDD`cc3ZW^2e -[ׯC$UVx QQQHMMnZ|wto""""$```f͚X,̙3qi\x/|ٳq1ܸqpvvV:>"" Ebb">6 QW^ǵkpAt]í'D"[̝; (--EQQPXXر#LLLKmڴK!гg&&pH']v صk&OM-[СC1dX[[cƌbܻw^^^hBs9r$^ 4i ___899̔cmmO>HHH@PPbq ћEEE?Un?~<Xh-[8pf" BwDg""u*"""I9r$F WWWL6 ظq#n߾ SSS9Æ CFF`ժUXv-ϟ a1;wݻwW^H$'pMCb۷onܸظq#F[[[H_ھ};>C^Z~{dӦM'''H$Q(```P###D"_)z;ӦMoEDu8DDDrssm۶O>puuExx8 X Pk055oaa'''hР5jCCC: abb"OTÇ˓ߺED^m"&&"*qen2e ?ľ}4RO֭addK.… *a*鼒*dW >Ϟ=+s1ߏ]=–-[* _e'IMM)ŋGǏ# 1puVsDFFbܹh߾$qZZ% """zc"==x!rssѧOݻ̾vvv_|\ j3P;;;8Dz j*,XK.Źs HТE E59rèQp!DEEocU7k׮ߗ݋͛7I&5kiii*5ڵkؼysADu!""" LSVVV(((70vX (,,?M6ƍ{.-[)S`ڴiٳgժ{٘;w.v X$$''#//KT]x[_ &ȗn:[믿_x=EEE5^=55JVe.PX/{XVGplYkٳc܋/""DD7v(Piuo4&79d(P,D!UxȖ u.K^+ۮ"DDDDDDDD: """"""""Kt]MA}S"&p荢CCJׅcjgggĨ HHH( QxU}XWWW{B P={gm PZZ0'.mMMt8:HHHkڴ)6m*_NHHѣG[!ꌉ'b;un߾]{}Aֱ&ӦM888Ѻ&5=vm6hoBDUiu ШQ#rӦM pvvǏ7… ѿ&YfCuEEE￵Z֮]23223g(wѭ[7hN""N  //{3: //O35iojMDxYk׮#ۦQǘ1cSN!((@( 8s6-E&MBXXΝ;۷]v3f qY\ 4(!"** .\@dd$(/'N\r}ueDUVLMMɓ'ˏ:u*q ظ)+ ;v@\\S2ػw/D"111ǡC`ccnݺ)wuuŞ={PXX(_WH FII#dgg+E75&"}>'N,wH ^^^HJJx9`q0qD޽{رcÇ#99}v|ؾ};>} ^aZ޽{寷n gggtSu9s&LMM7LLL0tP;uaJɢhCݶm0|p?U/_|n֬Y8z(xb޽{prr*"u]^b^x/^[GucϞ=0aڶm;w`ܸqRYM}ֈPD@ e(//OaMM_6ncGf͚nRMOOOexyѢE ɾ$(S2ѠA|ҥ ׯ H:ʣNC A1p@lll  b yĤV#WaaaX|yۯ^Z *nw\rK.GNN 777,] ˆ#TQS5""Ft WggDGmMmt8Z$Fq):U㞨3_B"Hˢ"qBj1oߎcǎaӦMxFUK.FBPP7n222KUy&3Jg-xvbH$pwwG1x`˘:ujc^X^())'T&jFDDTW BHRoղcjRmMmtӶuzlKKKT*UJ BtGm}_>V^?*忢-ѣG={6Ə?ͅc5Zzh-\\\Yfɓ|2}v_rpqqG}ƍGӟL8p @hh}B<YuojMD{Ϟ=|%#lldggĉ5klmmabbGGG#779sСC4lӧOGff&Ο?X|9\\\^gϞ#F@ 0`mVi'O[nj]U˕ƍpBX[[/B4mTebLV5> "44;viӦɏ}nsss 27!}eƍ1ydܻwOvuރΝ;#44666u{֭[ann._cÆ oԪDDDUČ7DvcG#==]i]quS ?֭[˿x8ww^ԫW^^^}P(DfT^aT^ .(s!\v G@@@Z͛7#>>+V!6oތ[b̙8{,BBBj<* )=֭[?~F:G__-[ă F0Cu΄ _!11Qۡi8TD"{pwwWMQ7N)--ŷ~04W8&pt8DDDDDDDD: """"""""cHqq"""""jH$RPVL&T T CCCB$A hR@uc5HRBAOZ ɁD"a-HvMM'o^333yD`dMfFFOOLe!"""""qoEakDoeDLUm",W=!""""""]HB DT{!"""""""qLZr%RRR$DGGc„ !::'N@niiEɓy&N:˗p{>RRRODDFQFN9add?011Ucp- L:6}}}Oy&&O,4i=z@NN<]#9x D"JKK֬YXtSNEFE!33SbtZQQrrrӳ +Vh(Šy{R&00Vb!"qssǏ֙aɒ%q=7K,$"][r4h^.P$&&>Bxxx 66 AfzX,̙3qi\x/!ₘ\|Y^ޤI允")) W:F$@WH$·~SNXdG!&& E-Ξ=ǎÍ7 gg2S"ҬΝ;Ν;HMMT*Ν;aeeDva(x)Ν`ȑz*~)쌢"ܹbXe~~~hٲ%!C3f̐o4i ___899DHH֯_Ç]ve8׮]Crr2vڅɓ'iӦR[Չ6m)S  q=xyy>CDD 4K,+%Hch1*"UL  vB\\k.xyyAHD"ڷoo7oVڶzjDDD 99ׇ4}-S)F5k ##?ƪUпyݞ͛7:t]XX#G⧟~ N:+WSƍsx!{cٽ{7̚5 R Ν;HKKÆ Ctܹ>%ٺu+<(h۶-z sss;7%"1ptD߾}`({alj'\v~0dm&&&>"""~//1wqqG}-[ѣGr ֭[\y9O%%%>ñ{nH$,^͛7RڵChh( " Ϟ=~pvvƳgϔuwwG-0k,ǐ!CкukԫW?ƹsaHRJJ#11-[,SG-  vZHR/755gbb7nVrssm۶O>puuExx8 ۷o]$).IXU)**•+WЪU+AhԨ yOzTӧn޼YDD8:o߾XlB!N<0:tرcѻwo㏘>}z8 ,@ݱ~zB,}Y/b16l###_hժ<<|/Nfff^8LU 66ǏGtt4 P&PPGvccc߿111Xv-=z-[vzߘcݺuZto2 ,XBV´i <C Ǐ7 ((B ,@*O?E=_ø{.ܹHy/D ꊳg8}4&L/^[̢"x)a3m۶aʔ){ٳ':t耍7V}УGի6m`ȑ8z(RSSC\x*KDDo6,T&o޽{Jѣ|H$Bǎ\f"77}QY^ZZB!ʭuT)--Ezz: Պ*ם:uBJJ P~},[ )))U‡jP(-k׮R`GKɓ Űa/`֬Y9s&"##m۶055ŨQ*R4n8lٲ ~z 8+W~/oXÇC `ʔ) Avvvx_~_}֯__'77ǂ `ggFaΜ9ٳg_RRM6D'l?X̛7-Z #ѣ5k4 )ts|͛aggh/Xp!:uꄆ 믿V;Vt 6̙3!taѰAЮ]j9U]Æ hر(Be{r0͛ٳgxbiЫW/DFF",, {#+,nꛚ7oTի)Fٳg1 j*|w(**v]i?Ç1x`b^zhҤ *n- ===;wnnn^mB شiٳgcܹؽ{7b1888W^4h| W8UٶmSѣG΀ WJ""zM8|""""]9s0vXLhٮ]޽{ K" Ɓ0qD888 ''vR;w")) ?3F֭[ # 44999رcaiinݺaݺu077͛kt.\aÆ)ą sN5 mڴnݺU8r ﯿ/^v(DJhնRODkYVV?;wFXX|<;b֬YpppD"Sr˔_~%/JKK_!<<ےƎ xyy8<6mڤ࠴N"`ԩ:t(> Q9+QM((((sxmMDoJVVge} ɖe?z=;::گn1.\X?999ǩSj70"Ҫ,bmADDD d_J$XXX@Ov/))Aff&—_dDo sssP DYkC-Ca ^]*VT}ϑW舓'ObРA5j`ccT̙3صkWQ H$ Άy%qJJJ [ s#88Xۡ$ 233all CCCD"M#JQZZA p8DDDDDDU$ GLC^^^ԫ5}LYG_8DDDDDDI(B*75}ko"z{1CDDDDDT JM]}X!"""""&X&I""""""""cH1CDDDDDDD!"""""""qL8&pt8DDDDDDDD: """"""""cH1CDDDDDDD$C~6na*$J!JahhCCCD"mT*Eii) PPP@PFvH71CDDDDDJ 033}Ӄ) DR# l.^GDDDDD*ɮ.yS7Ӄ6ncT&&od`hhX# mMMt8DDDDDT.o:YCS ]Mt8DDDDDT.Hڠ; U 8ZA@XX_U͛vDDDDuʎ0P G\mtH1Cu֩SpmmADDDƪKɁGt!"=ohdDXvC """"""^e]vUЄ0L4 aaa8woߎva̘1ٳgrJ4h@~X,ԩS'N 6P777DFF̙3 ;Cv؁8ٳҶ:88 ""gϞƍacc#믿gϞv… JUt˔H$79SN߿%""mD}bܹ055ZL+WDJJJǚ5kG|1B[ -wӵk Ǿ֭^*W]={… 3",, aaa񁞞/_ooo,\0c XZZb̘1Xp!LK^z Ċ+pQ4n<<<b7|M6?Gqq1 %Kɓ'IJޝ7U'i BaQٱ €(222(_ : HADedd0Pe١"d+6ɯ{iz>y$wɹ{z$sܹk"""4j(_Ԃ ԵkWrf͚ir|9cZZdS뮻UV/Ξ=>C͜9m]FF$iڵڻw/ 鮻ҠATvmѣ:u?мe˖zgUJ%%%iz]? 7)!:Aښ5k~%$$hɒ%2LZdN:cǎ)66V<$)$$Dݻw׼ytE={VsUv$]OXVmܸQ/_֡C\NէOuI7NjӦ+իWk߾}x.\rʩZjƿl2}TLK6lЉ'n:=SJJJ҈#|fSrr-55U4k,mڴgFҢE M4I||IuEo+5j6H/ԩhuY/ׯ @ @(K[xիl67К5kf $>|X;wԲe6|rӾ}\RSSgլY3xN>T!Zyl˵¨R, ;3ezzfϞnݺ)<<\aJ>>Zl4hzjըQj۶m:u{5x`-[L?VZ&M)L PZX,oӫ8efffi߾}JOO${ョϛVN#ekȐ!;v>,I4zh5hРئQPzs6NÆ uڵb''ɒ?IӟԱcG=C$ݮAiذal5k|MIדBf9[fޜsRؙm6pLlK*,,LڳgO۷o.ѣO;*..N/m&I7njժݻ[nZFVfV4~x=ÊӜ9sdZs֭)Shƌ+WjС/թS'o+I|Xzu%%%رcnSSS~z9.҃o>?moիjݺuܹSǏW~Զm[EDDĉr8n &٬СCE)kd2{u}HMM-rog5*rlrN]tIuK.ݻuYkx?)44T={[o9sFg6,wŊڻw4oס{֞={nSXҠjժxbۗ,Ykܸq$fŊuAuE_}c4ͮ$GɬťbŊ?T|b;҉Iᒑŋ+**JO֎;e_~Qxxڶm-[jܸRSSu%l6\Rcǎ՘1ct 8P/^Ԗ-[ t3g֢E\z_UgϞU~dX7H~G=op8OY~bb*W,ɤWjժU;vƎӧOW^E;@;w$RJ|rrnkݪYj֬)٬~jy%SN)%%%סM-*ҼE(Ν;ʕ+9^I8EDDd65l0Iקϊ8.\PŊsV|y>}X"7 ,PZZF`_+**J!!!:vF!&I>}YfO[nՐ!C 4Ll6rʮN;vЬYݻws?{lM8Q˖-bŊ\f%]رcUvm˚>}F9sڵkՉ'n)11Q.]RӦMl>lJMMu%z .x,0R,=zTj޼mprtEGGK>NVq9;Cuu秖-[jر~L kNwn6-[7o֣>Zv8Zt.]'O****l6͘15~9x$בsӧX^BBn…o˖-ҥk9--MSNԩS]Νӊ+tzŢ(-Yu'9Y5h@6mҩStU=ON i 'MiӦᅲnW͚5uI+11Q*Ur]4'׮]S@@@s+]ZZ{=M2EcƌѡCW^yEw8{=]|Yڵk5mTu_CUUlY :T!!!믕kĈbQJܮRIRL&c/Є ԫW/^Z>|ʖ-+z/>}ߖ_ο/Z`*TX333]8}'ZpƍX͝;Wkc(= +%%E=zPTT^z%U^]ڴi~m0^^#GTDDԻwowyG?~*U͟?_?c…2eԩ!C4mۖ={o߾l̝;+=>ķ|/=z SѮ|ݔeޜr}Y\v,y޺u9MF%[|>bpvv+dΝl.˄n󜀒$<<\v튔$)SRF{Yn,7粲,+˺YgdO[H +GxuS. I@н{w_:&I^̔Tn'D@fv+a_U`Y{wO_Ս' +gX2%oD7[Hȓlp%'Jo 5v0| u/goVݐnm$pIQ7<GH #`p$p 088G|.... 6r$f\>sYF .4D<Ź?tn ĉmذAa) =ppz}0  loMU7<'B<9T*&&F6lP۶mUF kڴijԨw *hǎL+V(󪛬rŋj߾zLk׿e?(^CC bduX9r8TZZd2<+u<]7>'Dǜ_6lg"QFڽ{k߂j֬&O .hĈQLL秙3gjС?ɓ7nBCCզMW(𗒘pS``kxMqnr˺90:*Qxrr$O>JHHȶnkРAjҤ{1͚5K;vK/fY, l6s=fA~5(jqqU7qI.e TjjG|nrg)s`| 򱸸on~MW^U֭oΝ?~맶m*""B'NpK2fկ__ ZvXXׯu$)_G+&77SF OfѣOI +ξsn_я 7H%##C/VTT7o.٬+^zpuM TƍK.իZrƎ;+/j˖-7WA4hڴi2ehРA Ѻu$IgϞUFTR%ɫn$i̙ׯk1͚L+Vu(@JLLjuPjv<=$Νl|n󜀒$<<\v튔$)SRF{Yn,7粲,+˺Yg_سs5ju8 8!|7T\\ʗ/mСCozk׮svBO/4hРb+o\ll޼!xEAϳJ*Zx>shQ1 >wQ_a PrY,3W+ݺusݿ=z]ۯ^x֮]{z(K RڵGjԩ:~C۫_~;]vi֬Yy>lٲQ>}t 0@VҲeJ̈́-w!ɤrkĈ>ёG[nz衇{Y4iiiTrrWc*/-Zhذa1c#Ţڵkٳ(ѣ ֭AiԨQ:rn6UT)]tIѺx$zOp8Q*yQPZJ]vm@JPTݻ7@)iӦiĉu?ժQFoնm4uTK:_۶mѣ]낂o>UZPu\0\/?zȵ~Ȑ!Z|~G}_/R?y-[֭C/_kٲej*5iט1cvZOP熂X,W_}Uqqq̔fӾ}.I{HS1=ܣȑ#˗/k>no~} ŢLvoԡn `x+WӧeܸqUwnݺjժ9r$iݺunsh4iDVU:tpk֬?'N*ꫯjʕٳvZcǪ}:q{9=VyVZiz9sjڵk:v옆 Ν;k劎=Uf)>>>>֭)ShƌC/TN$yt۟~I=z2edn24i$-_\˖-Sf\ۜ >\kVtt>C7[z 0*;aĉ߿jԨm[hhz쩷zK :sfϞGyDwoםw)Ijݺ͛˻{~BŔqjڿRSS]W\}… Z`L&,X'Oȑ#ZlGMnVX{*!!!9:q}]:uJZkON,Ykܸq^ŊuAuE_}c4 RPP-x |*b111ӧ~m O?Ղ TBƚYa}EUL [*H,O Pgڴij۶ۺwyG?~*U͟?_?kugQ\\k_Mضm[C٣}###3w\͝;c9>|XXqqqnxZqۍXqrڵk(]35mT-Zw_ͦ+WRSS%I[lQXXԩڿF իպuk6m-[^zZ&Mx%$$h߾}qK =o &7/_֬Y]eيTɓ'uq5nX$EFF5yd9M4'|"ŢUTI'O,бbbbamV5jP||MF{Pvءɓ'+11QFC QNM6<0"z֬Y3gΨygZvX,7oVƍ]=6mڤ۷+00Pח$ծ][ڳg~'}F9sڵkՉ'nLrsnʲyoa9>,s.;o~oݺfgb,11QVa]vEJJ))#˽,7GsYYeݍˎ,ʯF`088GH #`p$p 088G|@q3Lj,fL&CC1s8TFF]&& z(mF@@P%&IEEJKKSzzmSR* J@Ϗ6. @PJJ|$*3j[`#%&&8B+ 9~~~ PzzzO[l[Pr.c۷פIw߭~ZǏ7|S2ձcGIйsyf[dP}ڹs{9u͛7׻ᆱZGXv]Nҁ4o<k׮BXm6uU'Oqc)00_iiJ.8о}{͘1CfYׯWLL~IR3ϨM6z+*giΜ9X,UFiӦi*333[Y>nݪVZ_6-cYVըQC;wVLLƍڵ_:uԪU+}wَ1`<#dR@@("""$IΝq$ ɔLyWimEmJ68>VlYM4IfYgŋݶܹS;wTI&iݺtRʷlr$)..N3fЂ Wf'7VU۷נA4|EFFjÆ +11Qqqq:sF͛7+99YdKTVM5r[[CI bwzUvm%$$_o4EN:9n{GnK.JKKڵk{ˑ{6:k׮Մ ͚ܶ5K͛7W׮]uEǕ0ҥKz7 ƋQ^'EiJ68>E!!!Z~[fѢE) .߯6mڨW^zwt4v]vPϋԕ+Wo>mݺU۷ϖҥK]=V^-IZzuFiݮ}O>DO=TbILL6lؠm۪F״iԨQ#u]*TЎ;4ydp2Ţ!CSN ֦Mn:@YV_`͙3Gs~U^]ղeK3F;vuڲeK/iii:|v{^2Z/Fj:tPllk(7mٲEv+U8j<(HX6m$]O8de۳uQ6mԺuB'pL&*W(-[Mj*((m6DSNͦM4bY|A6MtM,Iр\ kN=X xf͚iɺpF(**J~~~9sɓ'KԬY3 >\W\Q<7g a{G}&NtL&=zg5rH=ӅᤸM>]ϟ϶~>؊V_z%O3f=Z]vտoy7^>VJIҾ}4s^U޽{wޮyeSOeK=5oMPPZn^zI΄ ԬY3}py~n>Wwu8>}(66V/_αbɚ5k~IҒ%K裏jɒ%z'$]ڳgO 0@$ѣG dZճgOi_͛͛nݺjݺ֭[kjŊ˗/?֊+\eiРAjٲ?hٮXk׮Ն ml6kŊZ`Aaڵlܹs4*J3J[v횾+b~aw}T^= ڳgVV\)=3:sBCCW_i׮]6lX,h;?s挺vӧO^pOMMU6m˗kƍ>|;wNo~WYYx~o]_լY3/_^Z~ϟo^111jذ-kbM6r8ڷoCC|:~ۺd}0`յkW-]421?6`||%]OY,.Yf?TZUVUqnoVTfM׺^z֮]TB+jժk)SOƍբE M>ݭ.:u|PGQxx﯇z(XGI&n?pα 6E97#;C$ 0@ʕN^׍7J~I}ݧpYfm&I7o.RiW;vT߾}']o͛7ѣGU\9 }hjذab[l||jYxJ;#˗/kܹ3fmB7nԠAԠAIR&Mp5kLz$H L 2ʕ+ի2335p@__|O.5jz:x`1JMM?ڷJ*+z c}֭gy&3*ұl6.]") =wڷolW8uݫ:r,jԨΝ;G:Tl޼yZn]$͜9S?-ZTիZjƎcիWa_?.áK*Tpqr7:#+0^9IIIjx뭷mΙzެS%:͜9S .7!~nڴI_T~}}Ztʗ/Mqƺ駟)lW9¾&nܿjժ3gN:iӦѣZ|yU%'},11QǏnWTTfϞM*88Xj̙֬_|Qv]ǏwŲe$I={t{ꩧyfܹs%]>_8믿Vv\o|7zWe6գGD9IJJ*e.l6rʊ(xE`ڱc̙J%@0֔^ZVU] zM*>>mIHHBCC%IM6dr%x=*ݮ{WIII:~ͫX9 OŊգG)SU'tPV-uݭ(Έm5>>^|j֬F*9N߾}e۵sN׺bB91J;ͽ+mݺUwq~+,z7|#FhjӦY%''kKyѣsθus}qe>}ZZo#G3{l3]FFRRR8hȋQ*xiiiJKKS@@cJKKSzzCqC[ōV Pj+==]&IZbldu(fCv]еkdp8|ZhV P8dh*TGH #`p$p 088GH #`p$p 088GH #`p$p 088GH #`p$p 088GH #`p$p 088GH #`p$p 088GH #`p$p 088GH #`p$p 088GH #`p$p 088GH #`p$p 088GHf͚00ڵax 0#G:B;x`ԩS j֬iϠ'H]~ə$x́`p$p 1pE ggddwavs#IB78!܌b%( Z+ju ̲->>v7RTjn-VA(lƒ,$" !ѐ $rd!Ag9{ffz82|/ٵkW@8#ؤIr}S[[l߾= C~O7L+)ugҤI~_8#PUUUY›6|pvk8#PmmmK(D 0VpFǗBcEFmj@1uYrGty~ӦM~xx EWnÛ$9#|e+})p@<$qWJF/0hL1b̙9_H6mڔ'|2w_6lP:3ƪF>(WSSO}S?TVv^l̙9sf,X{77}RFө`_ٻwo.]$G}tϟ /0 ,H]]]/^,`PN5x8ا>kŋ_L~IիWgչۃ+"7|g:్8(5sAݻ_xdɒ|mr֭[>pfΜy@>z}0zlڴT|ٺukoߞ 7as$R~*++tMkk~׭[e˖2wp (/~'yz\|Źg֬YX'%I~uj^tn坮xsgt{v9昬]6/B‘O0J5~饗;ww;ܯm+)@OSYY,;nܸ7n88TWӤzӶ@T-ʚ5k2k֬̚5+ׯOLLQmzT$t-WWө̞=;K,ɒ%K2{^LL|̜939{I'xb(K`شiS<Ȭ]SҥK_oܸqᄡ /1kc=6~ZZZrCvNq|_ƊF.#pF 6{͂ rgYn]䬳c_u]mw*N0}L]]][nɲe(ׯO̚5+矟='tR*+{8'XixC'޽{w<y衇Ϸ8EV:fٹsg~$ICCC&O5t7 9s椶6 ihhĉ3gΜr5b p N +Wf׮]4iR&Mݻwg)wY#5pF|c駟S;vG~455 q&͝߹sg&O>mjʕF0J}͇>~]3uԜwyimm! E8sNNF`:ӓ$\sM֭[קk9|_駟._vؑ+WfΜ9Ft-ٶm0U7Y`:MǾӦMݶoߞ+W859V4۷oϪU qZZZf֭eld3 ` kSSSn!;v(w9r[n͏r10TVV.W_}uwC0_E^~qA0FTTT$IZ[[ZjQG_~9_׳k׮TV&oii)cu@o8c={nݺ|H}}}v:2/8Զm2mڴp :.9گC0J=# /~E0J}iiiəgC9O׼yGr= qu@pFu]뮻] pl#Pp8'(8@ p NPp2wqG)RF#p NPp8'?cO6}s=WF.0ƍN:)v[{mݖO<1ƍ+ce#T-ʚ5krǷyGGelj֭?ìY_… 믗K [K.ɪUjժ7o QA_JF'S I38cĒ%K+;O?]r~0 ` 9ꨣrW|w8coo˥^ɓ'127\p)wI@78cĉYbEڼkg]r.pF|I;;w|}}}$駟>}#ֽYjU}uQR?ZZZ$I;,rHd֭yϵQnڵIO<1Ie˖$o:mεE0'?I|HmmmZ[[f͚]6?$c=VRnpF{,Vʡ뮻.gn?7{\wu9C3p8\kkkyꩧr衇+l?wWCSO=o}-X,b 0466榛nw݌?>K,tn@0FvH5k7PpF!_W]01t… T WP1Qu5 (#pӨ`18'(8@ p NPp8'(8@ p NPp8'(8@ p NPp]cڴi=lܸ1O=T/_rtC0qrAuj?sG`og)S@O8ܙgsdŊyK/2{l>OUW]n!>l+JY`;Cse%Io宻ʅ^o|ill̳>o1K.Meee⊌?U8؇>Gի}-sҴ?A^xL:5g}v+"N9$0`7$4iR+J0̛7/W]uU񩧞Zj˧?Nmg80pƈ|#j"cŋ]0@1bɒ%ݞ[p0V`( ijkks-?8cDn`䰈1@ p NPp1QhɓT _1t*`0 `xl燹#r 8'(8@ p NPp8'(8@ p NPp\u ( &d)ٳgOKFDL2Ep f񩯯OsssK `TWWgʔ).8L0Ax L0e'`.z#z#(8@ p .K]]]&NKy_;rNɓsάY&>`֮][^p2Їrꩧvj2eJN:餜tIy0---e _wj6mZN;viY|y,Y2U F3m;}#dʕԩSs'3ȼyRQQ;;9ck_~}/_}c/_I|#Yzu^x$oVQQݻ7K.c=[fyߟ /0{n;N#駺[o+~n֭yᇳnݺ\z9S3k:?gFlذ![lSN9%SL??S '|k_˺um޼9{o}\}9sb ө,bOmӦyNMG/ryN9{hQOt{ORm#k.])WU-[$M~9sfdʕ={gr9 S:3gNΝ$5kVV^G}49S3k֬TWWgÆ YbE>l?~Y|FN8!IcE]ٳgGYpiĉI4iR޿*՝Xu+WAO?='N=ܓʜuY7o^}>ӟ4+Vs#ɓ5'm#ݻwgə:ujM2λNm˖-ƍ]Aw]{gϞ$ɓO>s=SOf͚5~vܙiӦeټys9@1 piÆ 9餓r'ߜ9s$/RժUYbŁnԩﶏ੬LMMM~i͚59?{oN?@1 pI'38#֭/_3f3h_.oft>`N;\xyg_j>w\?$ˇDBO㏧&^zi:r!!>;]vY{Z_eoHwڕ}nXkaڵY|y:\}G>#8"9#`|A;wfӦM.809Ss9sٯOCCC&M.,zkv5u466vZtt׮]={vjkkؘ\2zjvܙW_}5&Mʄ z=@,Y$[[_tE袋S__)SOO}-;v2^T V |EK_w1nQcTkkk֮]u֥&&LHMMMvڕkfٲeܾ5>{}g͚}uٳe˖lٲ%[ܹs=֭sN_WٸqcZ[[s)d޼y5kVߣ=nTU GukkkV\UVeܸq4iR:ر#+W̷{y3gNwdܹ~~F06L6-۷o/w?~|6nILҚQ e޷NeTfЦQygXWeva?&Mʥ^#8"[lɭjKݍ۶m~ )S|f̘7ϲm۶!/sGg.[SNSO=$;4'i[:<:9mpm]@馭?8C!kC… ]@=J+,wI@!А[o5/_Bϟٟ_NEACCCoe>_җ]P8455` rA~tg ٳe')Q__/ESSS]0Tinnζm2a„?>վ"`p555Ϥسg_BNkkkKUkkW "7hEEEK(1$B(RUpi!ypkii)!mXCF?n---oVSƚ7|sݻet 1L4).cīK/T2 w`2eJK`KCCC}O>LɓsϕaWY8'(Zĸ5ɨ/|!ۯυ^$Ytpî&]vYϟiӦm۶e[4Րly=wOOsUW2_~1ŋ'I{[n(&L>:I~ٳg9iҤ|ٸqc/ٖ\z>֯kM]Z[[CTY$X. pFTVVbr'Ln!&LHp Yp#Qmmm> .ȸq$of-[nm쪫sWݻsm{׽-ZSN9%ISO{``?~ӟt^x>]w+W+,e Fa~կ[Vbvx̚5x֬YYxq,K]J›o}[9:7.G3gΜ\ve]8/Nmmm.uQlٲ%>h}aDW\xǠ@ 0r!IcӧIM0F}|qT/\sMΝ~_~y.vaYpaUVgTZtiO$~~0wqG}_e{2up Y|y}tM9k…CoϑGK.$guVO$<@'I?|yswO)J|0s}9w„ zwdN:Wʎ;~OӽgΜپtG^ziHBU8SLINf„ yWrf_̢ER[[o1_|qnܹ3˗/׿7._so 'ED6oޜwټysdOiݖo||&ˍ7ޘ;/ȩ/<}kq}n喌?>G}tV^~__ĉS[[]vx|3گ}ĉsw@ 0eʔ\|IݧVXZ*O>dyڵ+6mߟ?>IҒ˗g۶mٴiSHq+imzױ3fK<ٽ{wiM7qnjTVvkڶ\o;I|9ۏ+++;E]A'X{V_ \F "=&---- 暜s9noښnU۷w%cǎNw^;Tfٽ{wd?|ӟWu]ۿ۷o{y7n\ﴷwwmذ!ofƍ~Y~}͛7vae׮]CwJ/t:Χ?\uUvO?ޯ"MMM`eS5qEis%뫪nUW;ر#֭mݖz3gN-ZK.$;wg.}ݗ/3g̟g˖-$>߼yss%@ٳ'˖-G?ةqӧ7H̛7/O?tugvZ'I~_&yk6sNN><3|Oe)zrWgϞIv+K_whH}{}ճ>|#;wnΝ:+-&ykGڌ7.555y{\TW_}5[liS__OC=4K.\~9re?A|q'?;\sMvڕ{7o9?z_mm~m ,Ȃ k_w3Ie˖߷&[n#IS~3P6}5f+x]4ul/}Tvq\ãsyNrT0;mSgΝۇ4v套^umM%65Oc=~Yzuv9w0xO~'>1ko|utPv/?$VqDN,Ft\W9} p$)8-`f4QEzj֭[mo{MMMMinn>N[7x=`pvmiii5Z|~_UUUƍuݘ}jTi8S0өrN_޿|wp*8(WsOp&̙3K'Oံ2(3***2qļ=_N'}}St\r%yMWǥ,\("ƥºbzZиqʕ+{&Min2qļk+x4ӣ:h(SpK nTq4%ɞWܹs٤I2nܸ(,tPț+V|.o;}VI@:TYv2 wu>St=i+jjj8q'NRYVeZU>رe(>80Huuujjj2a„ܹ_֯_3Ne$=ӦLqƽjJe[~f̘_~e(3fd.c?MMM-{ok4o-X/ kttڞ{RUN[[huw, /B]骭cpt^̸5J[88ҦusKեmṴ>ː(6m^گsJ:mZuoQS]1)2TFtwҶY6Ep`u[pvܦ-[m/IE~tѓp`0u Rz7-]\Ӧ41AMwt5㨚ґ7۴kM:OJM[c  ֡) sJGᔎi穮^޳_We7N_G'7mM[㵭%JGt>u5bT]x}u3ԁ̐>F nTI;Rul+Ū2'igzݔv* qΣwe/o T"NJ6jiUoFմiMX#p`4|ҐtU{$X)X#pJ dNOی8ڦ;JC.^:ktկ5qjM pup:ibmZJwֿ2٩xw~qowxqWP;EBtTǶۅ^Sq8jU[{#=-<4œߟ72a`M*}]Mꩽ20t SZ|P}&ݶᅟ>$UqUqwJi{km#x:wt|ݟ𦻐@G ۈ&2 qopk"ݽRwSz n:6ʦ7ALF$UBQ2=i{]%uD08[O{3fD(Ȓ qGtwmWlGO5T9ob8] x[Ը:KhvaFOnJ5B9kؔ+XQ8]HQ7]-kH3"F$p;{ t֗pfÛ &#i;i/MǶ7˹ޔeޅP8}mc@$w͚vMR@Ҷ﩯Q70:t֝1$┶h\+[ ^|Ow!o  qz[ӗ~@%`\oP%dcte5ʥOBޔ5I: E-)Mod tDO޷lL d(W{7.g0F յ@3@h#P8g/E1Aȁ} Á5k+~j5*I$^[FVU})zHq +w`' oN5 P$EH !֑ VRH 3c`h5"t([:j،b(k tCh*3 b8Ôܴ-D?GkVĠ5h Fn7mFs1?еQt4B`Mn ٨m:X03ǘ lJ ,CGP P(ZIENDB`extension-manager-0.6.3/po/screenshots/_7.png000066400000000000000000000232441477302130300211420ustar00rootroot00000000000000PNG  IHDRr5HaPLTE888~~~}}}|||{{{zzzyyyxxxwwwvvvuuutttsssrrrqqqpppooonnnmmmlllkkkjjjiiihhhgggfffeeedddcccbbbaaa```___^^^]]]\\\[[[ZZZYYYXXXWWWVVVUUUTTTSSSRRRQQQPPPOOONNNMMMLLLKKKJJJIIIHHHGGGFFFEEEDDDCCCBBBAAA@@@???>>>===<<<;;;:::999555333""" bq#IDATx_TTWAIЎ5^5}i;is;&&}nb'i-@RQ D`(FQTL,STY{μϼZ0<3kͽk<E>kIg_~nNmw7H ]z̚C} OyVJ/峹/J"h1EéᨯRzɮ']3B.Rܱoi o=ܗNsA~._fLi#<z61b8(%bXCQ?T,?TI]^X@Z:}gITYoF)}`XІ5/v{.n2Xv*,_,o;I)ZWI{ɵ 2ڡrf!^SS$N>Òd[Wg a+ Y &/6=SSr {<@1P@`e*#wӐ>㪏m̳)fԪ*)#'ws#?SB#:ʯTz賁 +PYGZZ( 1)kr<5O]:W3,*dNm+A2zft94U~5<I:an@ V+-~.?K:,E8x\>5 z&fٰVԗ+v:Z[Rւ#{iuU9i$c0^Fn O`Ztufhi. jCE7n=L;5~Hy +ߨ$q@szxʰQ&DFWx8U-PQv`{2k{XQjNf8 ^+땤N8 :7"&?F`?n`7P2O_ LIss6,m S%BNBY5S{Ap~\:ːr22"#vZ,ZogtN̶>YYfm}SϘm=&l=򤻋g,#HNƑͮrnȇ.[4b;3~ gaUW76:l_luFo ЧqUh-q]Z^'F9/]Y,&Zf)fl[_{1SPQ'8|*DvgsTKHbc)Fo`O^ci=؍W%팹Fib|}K ڰ_SkKP\Whk)>Pq2CSC9 E C:k݁ #8_:ٵ8#[s0 줰;HWbJq~<܌6oGz7(l\w;&nt5\Z^`?p4˿ED/3S1f[O_5(f3q6sT+hX'mDtO|PBW;lf/HJ??[=E<`^2𺀏ݯ6—,p .\BC'>z@'`L't\z=(l''J~/,>1qiv"z4/*֦wHV2^~c¬k1%i;9 q7JýWoƩ_ηu~;"p'*rq`7ԯ|dyt;&[BGn(b(Q,\^ـQJpnE鬟9 *fÑ{8p@ H=iVB ~EPH;J(P TPXu#|G`$8R&b`Z? ƽ.}r0x2͞G^y%|D׻1P@lBW {7{]RR1nRQ R4HC焑\'8r.sZpfBahl8 0H %?f;߬z__'T w!`)릢w')HpWϖ9pb!U3qE~C\[Bb> %xK1 i}4 TUi^MeSnoZ[#x]A;+8.KVzЈmÑS6Q-އ| L/B xL*ך{,rS,rZ(y^iBҺՓ `7b.X1LӱȽ֫mT8 n!`5Nє  ppsiz|?qXk0KлNX5 #ox4h"vQ t+9'oaFGfB5fQ*宅cܨV0Q:M>CB9%ѩ{YʧN|C۵_Mcmm: ۉ ?1-?uދ:kw– O|Ŀ 1'"[!w~5RBĜwt Z l\ᙽϾ> d]z otς(~}9S<HByX&B)6;:'EvFݟtw u 8' >uww뫻'Rizӝfk#9W3r_=!2ө6C*0#m *}tķXSԧubu=BG"קGWὺB>g9rH|5Y!BqL[njf}|9H f;A MAdž!q_ uP(yGK8My<{l'l/n-#טOKLc}$rcS3r .on-Ƿ)ʍD9pB}*޽B~9 R~ }$_G'ף 0~N;Edoc7c.UWra$ni'ӌ$ h((Q?rX2Q<ș{_BX#Opx7'b:{pXt3I=%ƜO:t?݌\Z@B[}y$%q'b8c\QE;xSFW%0tZF.qWĊTC%TRF]x~/5tC7S<)b:?3Y23r_%BLnŇǶ~w!>U|o1 nT ]AQwmv{mwx 6@M*ηo G ʠ  *ly7[Zٿ/e6ۗx6 H-ǻ&s ?Fq|!dFC!ĸ'gD^b9K#y R+r'JHXN"Tl|I+g6ws(frF[).r 9|+AS&9BvO%@*i\!B1O,_b Ij'HRC?G?R@ȅB'B o n'1VwDW8G<(1P9 7BW>kpe9JL|6D y pK/J{ĸ$iV6XV[q {[4Pv(| n(ݗ(YfƂ\ы<=r4ƈV6;P,ԅ[38\UG!?'fPF.'2rCK$r\j5ȍ[YEӪ)5ochG/Od֊? , _ lCO;Ag` *2q 1xB!BoYQAd>zt9ppx[qMcBS$:syg/2d.7Y+wd1cn7 2,lm\kywCrM &7 !B!B!p3onƜ;tD-*1S\Ċ?u6#A)/}gg1bSl~!iL]_| V)/]кܣ}w YZ^lw4K]f}qы5\u9r]A{|cg ,<{QL1 C0\M0XJJlL-)Od%J;$r$ '7>7Ӓ+S-CO3?~.k4ï-5nu>0Y_y|O3 >s*O3.jh y˿3,zxG$ LCwǧ&5\`o' F0%ݕj} nuk$"1eT"1N"cr|yc.g373̓4'7FSnGГƅ̞>&nГ !B!B Spv^+TрUzn(kuۖX`ll{f}PvY]Epz?l 7tB'l37Vnv놊6V,n@%#*llnKymmlb;lFoBsF 9\mb;&zݘ,1wWMir{X!c6]ݕU GխMY6Ec;rF ^IRɟB!B!B3KՉ<,7)/$rWήHw4K]IVhE;i\fqH7J+E+T&TR>)w/"cq]aYNiv+pIB!BbkQ{"T'yyI7ew3E}T,Wo,[ sF?~{O+_)7=pv~}8tqC~Odz@ʷ+sΝm1\PaZX=LY<}DfJz GrzwcP:I? ~)]JŃʹHm=؏G|pݺВu3?Ho'޺ VV9rVegs4n\~җ%1MOm!B!Qa}Ƀ1SQ0TWHƂ9=!B;j9~G=D榶||Zy97;6jmK+wꃲZ` Wӟ̔Lٝ!7]%iq{Y>Iy,')%B!B!B!Dj77c۝!fS:$!~ō.T\ssbðzxs[0@7|ZK_qHTv6#n_O\ʷ- ]u9$sP|*UsţH6Pח3g>$ȜǞ1Sޒ{rNBCF:fk4]3RޭyZ]sܺ^mk;Yl/Ыr phiFhYtv%f{5S~iZlEt&t3-)a58XǤgSLytlZ-{^L9VDW)3ZE+-)LF;OX?_үWbCrך?co᢬RnߝW,K2<޼م|-~Z9ic JN|_8[F8\צ/*꺘Xt\!Bȴ 2mB!x_ït_;=Ğ)^r?Wsf{l^(MK{d5Oe=/{Yhٷ]eʱ/*S/N˨_m ; P;_y+,4پ4gX̬MsWsuز<-0.u=qS҆lBmyLftL |OOv#9~ޛ_^]Ύ}n1Dz=:mnͬ&BHsLyזz*=sOwǹ]pdmR@/N@!B!DiʷPN3EnnkkP?t(ཌྷ91́vpS3ߟ7 7Fϵg 2-/֝ćVrNc݁@OiNoWU>-i}pi)7QVs)v;*o\ւ.s[2s4F!r3v7Ԯ W蹑2ط,0n$ nbA!)IENDB`extension-manager-0.6.3/po/screenshots/_8.png000066400000000000000000000042311477302130300211360ustar00rootroot00000000000000PNG  IHDR)R?PLTE000~~~|||{{{zzzyyyxxxwwwvvvuuutttsssrrrqqqpppooonnnmmmlllkkkiiihhhfffeeecccbbb```___^^^]]]\\\[[[ZZZYYYWWWVVVUUUTTTSSSQQQPPPOOONNNMMMLLLKKKJJJHHHGGGFFFEEEDDDCCCBBBAAA@@@???===777222& gAIDATxڍWSe=N Hq*Ȁ!J.#0TfVfY`0ďa(c?{/n{9;}94a( c:8A}*F|p0jLHo12FvB&gm %>R+*zuW>"MBt]&YmЬNrzdP-xV[(9@t.."^F(w;Q>X b뤞 IBD-p(Җn^i70pRܲGlS}( w`'HQȖ_"USl₲!Jɒ=R+3neBV|e.tpz S/dQ*@piy]s5](_;}}N5J(KaM/NYKIxXU[(3äxu2Oq,ı'&?3:R\V| J8'F@j)+$Nγ:ݔMtӸ6بj`ehvxىij 屆RB`nxQӸR)㕙FQiߨrt9m=4Qn?25I 2 :f_JW}n0x7KQb8S!(Q#>q+Yg(|V} +FHo.2R.(>WfJ$5H>)Q$d)C>CR]ڄ&}dW`tft)!TUǩ~(F m/e܄҂OKAr&8&=0S o nC je !N(]2i7_!N87 Z:ŷ}_3U$1|+H o4Un7; 5opoaq ''1q = 4e;[}}cS9 q$-nbYG0" W`›P~L~ &ȩIcV8Fp o<ޘ,?3 PհrLUNk]L::o፷uJ۹rP;</*ww7{Y'/luԄ`m0፥ҭIGI̱ef>ZK*dcLn]䞁[C0bS{Tu5ƪMΝ;xUlll p8v{AYY#G{֭I*0ޘG+đ*5._gduZ$S޺I2PfѲ,s΃5k6966rl6v9~ L&Y,YVĨC=uUG7+h땷tӏ{̗: xkEz쫛YijcQ'W^ӛ6m:T!>-nqqqSAA6l_GCu@ǕY&pe7uX$TspbcibbbТ"@lJLL윒OGC{˔t+?5\USݧ|M]yݦ::M^z+11q#Gp2;mNSJHHhעE{]!3LsR'a_Wuu~)2899EEE7nW&M:]ũÁ8ЀgYB0ByFT2,).))iriiv 5jHZ8fDő.08l6d2@9N91#znTIII%љ:^sjq&`CM1nwmx_+ǞxƱr)gƦVbiӦ n\V7nxǘf%&&b!7TY>}j|\5jX1lTM4I;S>{-6-pUf .޵`_S{6nU7'ժM*///ҥ@xP'>EL]yy7n|t+t|omMz㭅y=߲$Ybcclڬ^hԨQ o\V5j2#z:AcUxEqqqa"f)66&r y ^0P>5mҴs.Q/666%""'66Vkl '.Mv]M,U\ݫ<Jݥ1B+ f]*1I2fiGo\s@%Dpu`Cv-V~111Z7C6M DBNS~_GOI@P#_S{;n偍^c)KWc ҪU"]X,%$$a6X%&&DEEEᘘ3Ş6ՐǨI:rSyj * ]ӂ>α~v}SV||4i>*,,T 6^`[Tpv#`dzՍg+js"\ D`=Ouê\GBB&Md6UTTTCT~63\8H8ƹv+U5m4jԩSeZ4%!fC~ڴixZbm1[FR>}<_^-҆ "](qILLnKـ޺HU^v(3Gyۏ Ţ[_~y婩:ukѢE9sf8m,KݦiҤ#}mE pTwpׁƎ.,}7o.LC/R-U=FiӦﯕTqqqZ***R] tjȑ .Pw|Ir)j׮;<%$$H:tʔ)z衇G60WxSRRyiŊڷoZjaÆiܸq=zL&}:P Tհ0,,,aB jk:Z K "E{$i> :>;wVff B!oK~4}Z qnu]9D;vd5i&mڴIohjԨ?Bk׮],3j矕Qzonmܸѽnݚ3g֬YٳgkԨQzw;b9TMLJkf4AET! d֭Z wM6ŋxb4iDêjЄ "] w H %ةSNS'xy}嗚9sfF0j(IҼy*76nܨk„ <1qqq~׿СCgϞ>?wR/H'Х6bM7ݤo1m_|EeeerEV;_q4k,2e,-ZHmڴт [jРAsnkȐ!)IVZ" 4HfY˗/uuYkԮ];9rD|AwQYYF)@W^y T/Z`֮]>^0wg}buYr8?\zt颜=cǪo߾jٲ駟꥗^r TO0HHH-ܢ38CC+VХ^7xC {o>]xڳg222Z꫘=jܸqu{ァEu`ƿ;vƌ,X_~9mk駟^{M/ /Q[y\bVX &N +&&_~Eݻwc=[裏OԯZc&B0!O s$NC$umԩ9r6mڤl~>}fykQ-t+&&F3fG};vH-[ uL?_ /f͚kuwkӦNdOUPP!##CǏfW_}N:I>zQa; dСׯ~%''ܹscǎ2ebccUZZ3\͛5j(wPwjjA]HNNl֢EpĤ}sСꪰ7P(ፋwѲe˔ذQ[$Ik}4TV6 w٣;ӌ3t'j߾}?Qc~v f^Zh)_5}{% APNt44lDiӦ͛7kΝ۷hΝzWGU9_ǎe6W_rJM8Q:ts6kL^zi,YGnpO]ڷo>^n׿U]tQRRL&{]0::[} {QTTDx o;8wqzGu}?fӉ'(/a*-- 7PeQOខn|?| 6Ls?VaвHL,l0!zWJFkt7paHquIZf Id zTyТ"7NԙgWaa ۺ Y,89N96mk²+Wz$ OjϞ=zǵsN>kv@p#7`u@4hժz)iƽujڴrrr$I7owyG|If^{5Ir8!),,;eӢEtkܸqZfׁ{t9΀k1v8~[ʴhB3fPcz4iҤ*&U>6#1GHٹsvCycOװatmV^{Ν+IF9f &I&IWիk.x:8򋤣LTVVd24?O!Mn/RׯDRyy*lФ'讻r7џ1u^sohn ƕ2eÆ ZhFٳgkzwo>nZÇWzz┟^l6߱Oo&M$Izu;SFFc`~PSU Us*3U8p@˗/_͚5K|RSSzH8quM7i֬Y=z>c[o_|_~91ѩS'=#Zz SRzc}WׯfϞm۶鬳Ryy^y啠n{$]xᅒO>9ݻ+++K۷o+# !iժ~inڽl޽;P\cU]O#3gd2iԨQ0aBt*77W-ZМ9stW{voөS'ϚO~x &I;wԠA{ꩧ҆ n?uTtM߿M6)+++]qF+uh͚5թScʔ)뮻ԫW/YV}g:thk\А o0j͘UV@]zGb =Z{Vrr7hѢEڵkԩS:q4qii}w})77ocYuƯ1Ԙ7ff2UZgTi{s/˱[f ʮfht]q?O?Eڿ;״Zz衇8&ˡ]|ź;Oj.0^xA;w$;kx K3N8 pzpBWݠA`X͛7WVVN:$ܹS7pC'1R# >>>,))Qaaa7mTV($$ǭ}Ǘؗ}y,Dzʏ=WuJ8i^y9NwyAA999je@;l64lVB3|.Bm޼Y;vTϞ=n:*ںuƌ2XnnnFeffF팍v]jҤIXWXXuZb.RVc`ͦSJMw!hذaӒ%KK/E,oh:eDTIIfpq*CTMtO駟F go/EEEr8nSXXPÛZCBVRRr%$$=.NIITa 1 T@'77WGQYY{PYY9ܺANlZKsV Z9Y,Hn٤ZD߰> @AŊeKͦHD\ii)O(A UcTPP28r!pnW^^>l f*pPŲ l >}"z~)Neh bXiiJKK#] .PB ` -p:~T7\ 0W(!A 1p .*[9rDL 2 PNNNKL&GQF*--%`xeeeZW54[͎܈[ga2]dr %I \+61ʹ`xWSJJX_ ]9QD7([GmnX{fDGnt9>>% `caPp=m99^ZǕ8G3 Bj/ fY'|v-Z(66Vg}{F<BA3gT.]$I7o֤I"\_Rrrrs233?F*IJJҹ瞫SO=U)))r8ڷo֯_?XEEE.1bV._͚5?3g*11Qwu5s: j3!'\$u}߅^Xk5/4۷bbb$IqqqЬYuWYUW] ۷oӜ9siӦUY_uyt*&&Frڵk۷AuG"AemٲErJ{イX,8v&OH1gyƎ+I/rJ2:4tPuMzgy $=ڹsL&ƍN:Iʪ ѢZ6ؼygkhnaB9w#I`UJꫯj=zڵkI&iڲe. 6LǏɓURRbQ&Md7t饗j*))QffrssH@T TN0MkҤI.T%&&꣏>g}"cСQvv~M2Eqqq*..vot:tRx:ug>`4h z믿F$^mԶzgkь3o֣>rꍤ$iʕ2͞=[zfϞ:m۶QגgϞ?PW^ynt:V'ZMݲeڷo/IʉO:\'NT۶m%I?^}U9Whh@$͞=[TN}ݑ.^H҂ o*ꪫT^^,5[{2d͛u-[LǏw O*##Czd"]~fϞ9zp"`̙ҥS3+UU›{jzG7d2t%DUkРA:3}v}'uEEEڸq.]OVAAVZ СC6mZ4`RSn-'B`_#p!Wx#I]vug?L0JxOfiҥ;v;y۹ˎ&zWJrV\]v{ '1cƨK.r8;wJKK#]v*,,T&MԡC`ξtI_]A c@FCq߻wfΜCIe24fvM4I3gΔl/Uo\p8tWo߾۷om 5w\mٲ%F_|CjA%@&\\uNp"S=$U$Z+(==]zgի%Icƌ޸G5kh˖-:suꩧ*%%EC{Ն 8eFҥKt:5`5kyyyZzuVqTWm7@"\oM]f/=1{zm6hР삂 '?=gϞHu%hҥ@WE:X<f͚iݺu%ddurz| 9&fECz`8ǔDCz`89r$%   cv#]!nG SA=I"\I绯(mRp*)**Rii/_"ͦ9r7PO'n@.Spoa!)O@ 081kٲeK7\wF׮iӦ.!"p8 ;4d.!"B`p8@S0х p$/v?pi"QF%^6M%%%*..t) ҉J,6mJpXV5nX*((ntI A+!PWV6m2$5jDxNYV5jԈTłHm Vxt P||< RS}8& ]<@$ -ph 1I~iuUi&yь) :HRn} :4hUg6m̙>H-$͚5Ko} @CBxу`/_yUXf$Iڶm[$DM6[| Fyy9ur?FHy˔jUzz9iRqq$_~3fڷojժUUZ! O|Xy8d!&٬eE ]vo՜9svZXBׯ[W%I7nt/ jQ*SCՔ)SaM:+" ]wQQQ +Voշ~ٳղeK8p+2G駟￯_O=TDk9tZn-$ͦ7n#٬|ɒ&Mw^ܣG F u}[n8K,߮:hԩzTVVoY_jܸ:,?^ ڽ{Mz[oX5{y칍c?cחح}mAe{kyA+Dؿyyyjj֭֬[7P!IvI6[DZ/Ǘ<cYN- e}hoV={$mذM4)%( G`p8G`p8GfEQ=!PRRD!~Cqq1S6Mő.TRPP@Nl6D 5nW^^5jxY\"eTRRBA#𡸸7WB`p8G`p8G`p8G`p8G`p8G`p8gt,&&F7|."lٲº͛7nSnnnFA 0aƎ[%]*++K-Zzx *>>65rjhA]t$iرo[h,uI}Q}߯zK/Z'|[_wuj׮ް'RRR$I ,it9N=ag֬Ya=P@޽ruq1bDX,Њ+'?Iؽiر4tP}׺ׯ^yegg_W޽>~]tњ5k*qgkɒ%ϕۇ\&g6l ;կ_?~:|ծ];.X@ ^PG޽{5a=c>|x]RSSu=HrΝ#F$@4N_iӦԞ={WXK.͛e˖> o/^m۶~ԩSt:uyUNHKKb0Hq8ٳGJHHeeeZ~:vֺhHpjlod2YYYg!!wT>}Bj m‭i<ɤݻ<Dl̙;v$ȑ#Z|&OݻEo>GmڴQF:~K.DmڴQ֭u饗V檫R.]ԢE y睲X,ZrehAA$+}\l6m۶JMMu/1c+eff_W\\]\z-}z7裏UO?-^XYYYߪtꫯO7Tvtfu|Qh֛ 0@eee5:ڑHFfʹnݺIKy:wx|9=\X*?vz%DC'^xAtE)%%%}rrr|reee;wݻ o08*//Wff233|:tP_e˖/\'GE4i뮻N<ۧŋ#]'lܸQW_}u!b*#08#08#08#08#08#08#08#08#08#!f{ZvQa_m۶UܹsE$zDOftһwo :T P֭Ci߾}Zf{=}7.jժ>;3too6mݺU~8ˬW~m|Ĉںuk+,^# NoE]-[VXyfvm͍Pu4\ڵӃ>:ʺd%''k׮7nV^ɓ'~@ѭO>U׏7p5 Ѕ*&LcV o$k׮R-vX_^iiiAo`}ŋ7ޜyz7իWZ ݻʲ=x&8tEIƎ޽{=\Oԩ>#_+##C111^u]Sy+iiiz~IIIzԪUZ ,\P۷ow?޼y^V5 Ѕ*RRR$I ,it9N=쳵T ӴiӪ7%%%z_֭. 2v-[Խޫ;S.Knp^u͘16$jĈ:Se۵qF(Ӱ.r?mժVXQaٌ3Gфzz5bĈb7߬aÆ)!! 1119眣TݻWso-h뮻N4d-^X3gF֣G*ݦ4jԨ ozu7jĉ>|~i/uRsCTVV_n]-VTx `,+)) :gFD zfÆ hOFFN?tq:|믿ꮻRII|P6mΝ;`%$$]v{#6lXe9#OVV=zf%&'tt,s9G'pnFS͛7ƍmзo_9Rr:u|OOkpTܒtj۶m=z?G*))ѦM~!ԣG >\]tQ֭զM>|XvO?^zI;vX5U9JҘ1c]ziӦƏ㎓d?~IK.ڵk>o]󎮽Z5J۷WAA.\_|Z35}?gϞ2ڸqy}גs9G\sz!Ţ-[hɒ%Zdzpg@t#ibcc5j(7N?$76͛#G[n~ØqU-Z>s̩o߾S֭5qD]uUZD}:u(##C{쩰_bb=Z&ɽqJKKu%h„ ڿZǏ-ZhmV -ܢUV}[eyFN;M^z͛|QF|/))ֱ} 5vX,JOOmVKϞ=ճgO]zZlz!:t籺wAK/u/KIIM*uMBN;Mƍ߿wﮇz}JKKb$5o\\pzꥤ$%''`w\EEEڷo}\xJMM_s]Ϟ=O+PL6M#F[GϞ=(##6_}߯aÆmn:oV=YVp ڲez-z3zh=}p]c;C7tS.b5jH7|mƍ'Re_~5kj^EQqqݏ[n-EJͫ,{Ewun KJ:ښ7|[oU]_~e.:=zpŋ5k,>|X߫tرc7螶mۦs= vm)))JII Q$gddT-N222l6k„ ;*s_}]egg+..N*++ 9*D @^SLug*33‡;v V?' g@E@9rD˗/ɓ5ydٳ§Pƍue?Ԁt'wqoo>oS6m>+8111j׮GQɻKv|I]r%&ܹ 3_Wx#ݩS'^ls=WiZZ%i׮]ԩ ޽{]vjٲ7n\eN:j8b駟^aYvv}]I?#GCmtiӦi…Kuj^֭syqFӽ>qM_ g@EAWJJzS W֜Θ1C'NTff˵l2믒;wgф t뭷jڵZfMz-uYz7_oFnݺ o%)==]?}mPvܹBլY*J%666s{k)wD=ú :G\\\+56͛7?\֦ML&-' xդ~oCT&븦<~]L@p"護Rzzי,Y|ymJJJ4}tM>ݽs_`,XsRyZrer$.{ァիWW~>|xeeeeZreHmӦM۶m$l#mAts~*Q-))ђ%Kyf5mTw}wnjp_㼼HsQYYYد{W!\wN++++shgFzYM&y}@(p@ꫯ4yd=+{nx*,, jo]PIGǃ0`^ִiS]~UԩS.,,Ԏ;* WS6waM^IQ*\UZu<:j@UFZUYVQq(*uBHU\ 8*"mEQ"eC&O"\ɽh>sܹvvvvΝ;>޲e Wfjm t.}tYu u>DDU!|"""#<<&L_Upvvp*u߿+V(~̙ tl͛SNՊ2/wZ<\pF믪LlܸQ嶏?XZ}\ZZ ooo9s^x "$$E>w:焺O""u """z\| @ѧOt5!ȑ#j%z/D۶m! qmܹGUnn.,Xm۶aرhժlll`eedddΝ;x">|… 2d<==aggKKKܿnB`` LLLp֬YT7(..Ɲ;w>Ǐcĉ۷/>3j -Z@ff&ܺu ;v@FFFM6Zts˪{N$"R]j\U eBˊ-y-{6wtt}ECDYYY.4kXrҺN:!??_K}戏 @³T![2ֽ,Ux)4>o""""""""qL8&pt8DDDDDDDD: """"""""iĉ^Sdd$"##xcH1CDDDDDDD!"""""""qL8&pt8DDDDDDDD: """"""""cH1CDDDDDDD!"""""""qL8=m6򂓓5j֭[Fff#"""""""]+p...e7о}{lڴ Zt 8ZpqqA׮]叾}?@֭q $$$1112e b'""Rϵk`oo_f_~k>) Lj#4^W]qQ˗UaEtu!z}"r ;6m(mUy zۉPi%য়~1JXvm EFDD􄍍 MPǏ._fRm>|8z> Rϟ?W^ӟ׶WQ"z;1v]t1hРJ88|0>nwޅP(  $&&=V{-gkk7nӧoe9JDoz$&&;2dVZCظq#ׯf̘ѣG7oYDDq ȷb̚5 gΜKd)cҤI ȷ aaav:ݻW|mǏ޽{0˙3g?7n &&JNjD"̙3r ,Y_nc)j*~tfϞ-_gdd$X[[+QQ ::W\App05k 3BBB>@+|GFbb"BBBТE 6P >>^)իW_,www_IEVUcǎy|Y犺zxxh伩ŋ㫯СCC)[uyW?ꜣ@MEg~̝;Wn`۳g]t\YYYOqGJJ   AzP\\{ }ﯔH1cgggH$Vى'ЫW/ݻwX,F~z#--M>4i 899JeV͛bȑz6u6mS  2e|3k.b>|1׸_~8rHޓQԹnySQ]غu+Ѯ]; 4Hؚ>˫_HEW轩T*œ'O8- D"k`ccf͚AOOIII~z մ&M@,Ɲ;wp )Fk"##?իѿ*ձ~ܸqشi,--akkZܹW^œ'OtRdffb^|aƍx!:w 044رc1o<ܾ}>//*TggϞEѺuk/Pl3ƩS;HOOO͛x >|5kdre*W={ 99<ٳ!J1` HNNFZZ|||`jj}̙3C.]ҹM68uTޓQԹn߫uި[yɘ+;^hyMegWD;8[000P(H$D"o/**Baa#$"џ/"** 'O hѢB!֭[T ]Çccj/HpU prrᅬ QF044jH4Ϊ>˗ѫW/ptt:v޽{#55XlZmKii)&L_:t(֯_//^gϞH|-_" ??8pn:~W|爌Dq'P(DiiZǼNSYEEEpUTT8t?_~سgOWԹRXu_*ՍY5y* x U޽{Apww N8\|\G:2 $vvvHIIׯ˗#%%J|߿R=zX, xgϞݻ7N< 8uu>}… ()))\>LKKP(\ӦWU֯2@uN{wH;"99~Wڷo;~rԣ|5RX/5}^+n_s|Vū+ܹsJSK****˱|*ODDD7ӦMÄ 8 :zO?Ō3`jjw[>.[PP +++ddd`*d@޽qQ\t 'O4ƪϟ̙3Ѹqc$$$`̘1(..ݻw|rL:ӧOGlll/-œ9sRDFFVucπ; u111XhΞ=[n9s`޼yسgb1ÇZ -OU:Rk׮ȈH0v]t1hРJ8ѲeK<}ǏG`` 44?3:/^3Æ _#4nܸ}>>(** bƌضmb1<EDDDDDDD'R ˞**'[=DɁD"GmMmt#"""""dW)ɛWLMVdH1CDDDDD*n z72zzz044DD """""*Cql7,١.DD """""*H$vVSmfԅ """""*CveG](WM^X6hMD!"""""Rr&6]j8DDDDDDDD: """YXx1N:7oXb͵Sxx8FFHNO?7obB&MУGh;<"mZ1RSSdܿ_ۡm۶Ν;022(&pH'Fii)ٳgߵUE^0uT,_ׯ_H$BV)STE)))w}PH*"""I"h֬Yb̚5 gΜKd˷͙3ǏǍ7ggg쌐$&&>osqqAtt4\`8zꅰ0\v B5zA$oży󐐐R!)) ;DˑԦMh"={:nbtҵkאݻwchڴi}|}}ѲeK :C 5fΜ (..ƽ{> G-ʘ7o<#GիI&aذa񁓓|X)ƍM6aԨQEJJJћZ);v?Ě5kG6m)))prrD"B!  022H$BCtt40}tx@ H]DT71CDDD:+77ؾ};WWWaذa XnkX SSSprrᅬ QF044T@i&&&Me>|<[D?Jii)k(7n\涩SO߿_#nFFF|2.^r&p"L+))ALL N8!Bvٳ2ƺu#lݺҺ\6x2T_.]pTz1۶mx=wADD͛۫Li^";!""7Fii)QXX"77}}kgg8iii CDW… l2?-ZPXX,XYYU8\qq1 4v;šϞ=Æ a81.]`޼yмys/l޼>>>H$u G vUZE011A>}xk:z(ϟQFÈ7| /Ǫ7n֭[==տ/۷[lA&Mj42Ujڵkװe˖&^CDDD:);;˙PPP7n`رAPXX???XYY!##7oƍ7p],_SNsΩU9s0o<ٳbIIIHNNF^^^.tRP]~&L/ۗgX~}'_᯿zj"{jjU]^,TP8ٲ!YײgsGG/^T9DDڑũH+$ $ 7nP4"==BP#ӄJhMDosssP DYkC-Ca ^]*VT}ٕ߷]E<Ӊt8DDDDDDDD: """""*:麚j6./DT5LE__ .744QP&8p+@z{ x5V'@ TaT[iiiOx]h6&pt=bbb _״iS4mTcǎ6B'NĂ *]wiܾ}cʔ)jkRM?mڴmnnnmRj׆j6./DT5F\,\5/7mggg<~иqc,ZJokj;ZWTT[aeݺu/3##nnn8{w}ݺuCNN$""`hh=7CII 4>S6DDg%ovZ>mu38}4;B!g*m^R4i$رcڵk1c ,, ΝêUРArjb~-"##qEDDD`\\\0qD?A\\;dunW",, 'O?m4DEEɓqSVv܉XݻGeݱo>D"11xrPvW=BCCqDFF*] -k|+ÇݺuSZꊽ{P "",9  -GTu%%%Vj&hojMDxǏYcܹ/pQdee<<<Я_?̘1GFQQ6o X,?gϞXh"44M6Ŕ)S0f4oP2ӧcሌ… akk 駟eĠ{Xlu\E"˗/ǝ;wyf̙3acc1c`ԨQh޼9NZc픱ҥKׯcJϫb1Ͷm۠QF<==rPvcz|'>}:N8Qn|+|yGq㏱w^ """@" 337JJJtz]T̄D"jojMD 눭[Z@MBB1qrDꫯ兤$@tt4֎7'NDJJ QQQݻ7?8r;v~;vӧH|e۷Oz۶mpvvFZa=Q\@Yf| Cرc X~=VX,v>|Xm߾Çǻヒ?Se |JfϞcǎK,A`` ݻ''2*R( oŋxEuyT?݋ &m۶sƍHg. H$[N*ꛚl6&p:ʎm֬q-_W/\~-ZPYK:[j*N 4~.]~hذ!Ԯ<;doDQQB+WLLLj=B~~~+Vիի'O.:VG\\o!<</_Vy|돜۷nnnXl #F,>kDDDu,Q!{ ֯TSj.&pHvS2u=Qg,333/:B!D"EEEJ6cccرǏ͛c vn/_-F@|;n8dddT;*Mg Z(Hݻc+W0mڴ2Ǽ籼 šCPRR'OLTg JߔeWԤh&m(ٖۗT С SIQ~}Y'rssU~IW5E#[G0g?1 GGj4[[[ gϖ'dPS펋\\\Gqe133ĀrmDDDo2@P(O Ck]l&ptg(_3p@ٳg055ň#РA 0m۶Uɓ'֭䷻ZWrebcci&,Z())AHHL_ hڴĘ&YU}jc}}}/"-BHHv܉ӧOjV2d7n CCC[M6aɸw;wFHHlllzm۶\?ƍةUJۉuuoCzzҺݻ#..Ni]zz:|}}.w…?m6DGGc/?Ο?۷Ճk_  ѬY3WX+55k֬'"""ŋJ>|׮]Á_h˖-ʕ+ahh-[`۶m5kΝ;j%pϫ/JƏ###ܹ?ٳ'}Xvo߾ؽ{7N>CG>Ы4yF|||y;YfJ5l8DDDDDTj*[Y ˞**'[=D}W\ҥKW'֏>HLLDHHZh!?vΜ98~8nܸ8;;GUfuwAjj*R)v+++o$ 8DDDFӧO'_7o<%"JgI$<~666Zt8:AݻX޽^^^hР#""*HoŖ-[YHNNF~~>___$''#-- >>>055E߾}˔mjj#GbڵǏzj_^'|}}qM|^Xeكd@*ؾ};BCC)((PZX,Vg&??hٲe:ZhPuA*x˸<ܸqڐ`l߾}􁫫+0l0ܾ}L"H)vYLĪJQQЪU+AhԨ yOzT3fn޼YDD8:o߾X|9B!N:P:tرcѻwo㏘1cF8 .Dݱa@,}Y/b16n###lذhժ<<DT{B!lmm!///\v̕:DD8Z_NBHH _~gƬYgggl߾gΜ)FV qa֭eYTT 6`W^_zח|cb >SNEpp0+ŋw}}}rꫯaÆ*'>8p.\;;;4jsEFFΝ;Wfl޼>>>H$4o ;;;DEE_~EЩS'4l_ڱʸcǎhذ!f͚H G vUω6l???DEEaΝ(--?HG*-ݻ7 6o}Ν;%KO^z!""ݻ7Taxw+WyW^@ M4jϞ=ώQXXիWCQQ̰gϞJ9U;C&MVyDDv[x1f̘ pss+j VVV͛Ι3Þ={ d!""{ѣGq%L\VZ!--Mۡ -%GڷosΡsEFФI,[L~l̕)<pltM;B"(շ~888W^4h| W8Uپ};SѣG΀ WJ""zM8|""""]={0vXLhݻ޽{ e˖1qD888 ''wV]v!)) ?3F֭[ # $$999عs'aiinݺa077ǖ-[j|2.^aÆ)ŋk.5 mڴnݺU8r ﯿ/^v(DJhնRODkYVV?bʔ)ܹ3BCCtgφ$ *[/QZZ aaa^ޖ4vXxxx HMMŅ yfNuӦMСC'%%%HMMEppXjBAAA+kn"zTʶrUm(= U,+#T8N,{y1V~u㏱hѢrɁN>]VeeeA,k; """R R"zzxII 233!${&z[#>>@6R% ϒ^KRl PXTᵢc}GG:u  ¨QHRܿgϞݻվ򆈈jP(D"P(Dvv6k-SRRl&oBLϟ#((AAA H cccB$i|lTR //!""""""U8dJ^^j^Uc5Ȓ8@M7L}!"""""zMBRT[xۋ """""j%Ujz0BD57N8&pt8DDDDDDDD: """"""""cH1CDDDDDDD!"""""""qL8&pt8DDDDDDDD: """""""" HB{umMmt 8DDDDDT!T T CCCB$A h;,R)JKKQPP6DD """""*T*P(t@ LMMahhH$IxVfHw;"""""RIvuɛy$mMMt8DDDDD֠71y#CCIhojMDۘ!""""2vyɒJxBhMD!""""rD"mPm5mM]x_jѲBCC8pj4o$"""+dWvԅrem8jDD N>۷ok; """7V]J8ڦ 1QysG##ĺuF -ڵʇ&bҤI ckcƌAXXΝ;UVAcb1M(>> Ehh(L===XXh`̙Ę1c h"L:˖-Cz+Wرchܸ1 uyxx?Č3o7oޝ7U'i BaQٱ €(222(_ : HADedd0Pe١"d+6ɯ{iz>y$wɹ{z$s5I@Ξ=^xA3fPΝ]oQF)%%E/,X]*--u(5kLÇו+WjՒ%K󟊏]wݥ(ZJ_tYj̙n222$Ik׮޽{}`Hwu ڵk+88XGԩSuq_u-[Գ>*U())IׯN Q ֬Y+!!AK,dҒ%Kt);vLz$I!!!޽͛/ٳ;wڵk'z2jjƍ|:p>}<'Ojܸq U6m\^ZŋpB+WNժU5e˖:u&N(áGyHuz)S:}^.P2eʨW^ڰaN8u驧RRRFl6nYfiӦM> 0-ZhҤIOK.z7]ר(ըQ÷AzIN4x`EGGszU~}uhJ8%Dq\&0>>^zǻHU^]fYo֬Y5k_WHH$ڹs-[hK+WZ={f͚9si ʋfS\\\F*UdX yl=/5{luMᒮSzg'~вeԠAsVFoV۶mԩSރ/_kٲej*5iҤHq7d*Xbo^}U)33S6MSzz${u}:u_~)_C رcuaIoѣGA6ҋe&p6lk׮89INNt?Oӟ;ꡇ$v 4HÆ fӬYoJ2M6朓Μo܆[gff^`TaaaО={rܾ}vL&~=4}tuQqqqZxn6IҸqTV-u]ݺuSժU5rH2[jV\\̙#՚Vn}_)H,@iPjUl67zgUn]M2E3f̐$\RC՗_~N:y3\Iի+))Iǎs[q|{on~MW^U֭oΝ?~맶m*""B'NpK0fկ__*rLY4&I{@jjj{8mԨQcxs"ҥKp[tvޭg^ŋ?Iٳz-%$$̙3={va+V޽{y|ݻv+HUVŋsݾd߿_ƍs%1+VK.ꫯ<lv%a?Jf]..+Vo۱NLb -^XQQQ:}vء-[Vնm[mٲE/_VƍK.fiʕ;vƌ3ghxlRϜ9S?-ZZ׻wo:{'ŢoF?'з~+á'|2UreL&]zUVرc5vX>}Zz*r߹s$I*U˗mmݖ$v]wV͚5UfMfۮޟV5+Y:uJ)))mZhQ(J,@Iu9U\PJ)"""۰aÆI>g}V,ǹp*Vr Y`4j(ׯ//0o^QQQ ѱc4bl6I5|p͚5K~~~ںu RaRfY+Wv}Xwڱcf͚޽[=kٳgkĉZlΟ?+Vz5+eǎڵk_5b͙3G׮]SllN8q(Nt钚6mg~}ngnWjj+ԣG]pc1b<ѣ U͵m6_3g(::Z9pZj؏sq[4???lRcǎ-c(]HX^s|7{v[lܼy}QײҥKtl=4tPu .x[lQ.]\iii:uNZ7w>@=VX+W[,EEEiɒ%+?IɪAڴiN:W֧~sbXOsN8>i$M6Mvj֬'O*==]T9v[{iʔ)3f:0+ڽ{7/{ծ];EDDiӦo]׿:tڷoejС _ ͟?_#FPdd,*Uv*OJLLT*Ud2| m_|&L^ziՊUlYI{IGor}O?Ղ TBƚwO>… 5n8jܹڿ^{5@A`X)))ѣK/zꊏצMo:}9r"""޽{׾;JOOUR%%$$h駟<~ .Ԕ)STN 2ħm۶\PٳG}u-GFFfgܹ^)}a%=/ԗ_~c(v /7,c ɡR111ڰaڶm5j(>>^ӦMSFԽ{wUPA;vɓ(IZ?T@@֯_7xC)))H⋪UΟ?kjΜ9O=ʖ-~A:}+u֩]v]N8\eUW^;;ԑ#G{_~8p$CZlM}gZbEğWdS</^TիW/eff*88X˗/׿/-[6@r8r8 T``,L&ʑPffҔ&X90&8>߰a<5ݻ]Tf4yd]pA#FPLLbbb%???͜9SCɓ%I#GTջwoYVM\O>^z+88XTzuf7???H>;wjٲeڸq/_۷K*W,???۷Uvjj٣5kӧ:~nRn׏?իY#k{͵n jꫯ4{l?^ϟ/@8]k u;_֍ ĥDP œ%I}QBBBv] R&Mci֬Yڱc^z%l6bMfٔ1 AQv.?)'Orp(%%]``RSSp8K=u;#MqcxuozZn~;wկ_?mV:q[l6~:tMUвܞW~}W#Iy:R\T715j_~5kF|J/_]qv5Our~lA.ZxԼysfUXQՓ$[nP``7nT]tIW^ʕ+5vXկ__wq^y]xQ[l ZAԦM)SF RHH֭['I:{5jJ*)((M^u#I3gT~\lɓxb-]T{/x8{Ӗ s(yQn?͂ QFbŊJHHŋ/(,,L۷WTTBBBt11B6M4}t >\f͒nݪ!C˛JA޺u]WZzZl?\;w԰aÊtU7fY+Wֹs\O\\tRIRtt-[/R۷o/PhJNC]1| x՞_9m7eY7簜us97~?vއnz˗ q:0}gZbCUbbVRnn9$9wfhO(uS$ڵkW$I2lrsd9eYYݸ8ŞQFi#oT|lۆ7|ӣ_v<-+z_|A[y˗/ןb+7g;+ zUTŋ矫E !TGz [bh̘1_q֭?~UƳvZݻ׫Du]4hj׮`=zTSN}׵o^wܡDڵKf9e˖ULL .hZj-[Vj&]hL&+WNϟ$߿_#Fqt0>HݺuC=ޫΚIKKSffCV}hBÆ ӌ3gY,ծ][gϞ$EEE)66VGm^Pn] 4HFґ#GtmRJ>ҥKŋ%IիWק~*áRQ΋ZjժUڵoP0 B޽J$M6M'NYV5J~mۦS*88XGVڶmFZ}jժ/Jׇ)=Zx~=CC ??Wկ_?};lٲnee|r /ƍSZԽ{wuMUVȑ#%I֭sCI&ZСk]ftq8qPu\W_}U+WTϞ={nH;V۷׉'Gs'Pj-jJǏ?8͙3GVU׮]ӱc4duY˗/WttTZU6M9ngUn]M2E3f̐tM:T_~:up%ɣOz衇Իwo)S&vɤI&iZl5kg]o߾SQ 'NTUFlBCCճgO[JHHЙ3g4{l=#N~NIR֭5o*S˗/ZrJ۷O.\Ђ d2`b=5f-[V=z?Y r8U֭ӄ ؅"Jyiҥ˗/Kz .\0ul6'xBRvQx r܂r&[WPW_ӧfBD.=P5o\۶mu89:s挢%]UVz=~܋/jԝwީvyqU@a1 6M&LИ1cZ)]zU?p]n5k6mo$_^5?-[(##P举ҠA~1c}o/N~,X *x4 +2eh՚5k/jzVAfynf0 8ӦMS۶mֽ;JOOUR%%$$h駟\[N<\jKA Gь34l0ڼy6m… 5eթSGC QǶmrBg׵msjܹ:|ʏs{soժUn:O׍ӕ+WԮ];@⩟[+7,c'D4,R_U`Y{`wo &}Q7<'FܺHs~96z'o~n>7 pk#܀/ʹnrG$N R,::Z6mRrm4hv{$IofϞ_~Yk׮UHHjժi׮] Wrꫯj͚5ںu M:U|TJoaA,ZHv] $_Æ Ubш#4z|4gu͛7kСn3K?0hB֭soڴ~jڷot%EDDQFJNN.ԹpAvLzgiӦjѢEl6]r햚*IڲeTN5jPPPV^֭[մiSmٲESժU5i$+!!ASLL["8yT؞6|f͚,VrN<Ǐqڿ$)22R֯_ɓ'iҤ>Y,RJ:yd 6m۶Q5m45jHݻwW cM7oV˖-Cmoci˖-u 4ȑ#բE U\YժU?z$i̙ׯ_իZjƎ{We˖s=W0P'翹ѬYԪUlz)=Snv 9pRRRrL~ÇseIȑ#UbE_~?Gl6r:wM5b͙3G׮]SllN8qSe`&vS{sY1gysy~c}x֭7; `dZ0pڵ+RRLIY?g9ܜʲ,n\vdyU~=0C 088GH #`p$p 088dVdXd6e2|nWff222t5l69_V [GIo|(5_/1LX,X,wOOOWZZ}]hV P*88X~~|u PFFRRR$VQ*X~~~ u5Ovuedd,*b HAAA*[,_Q *[~l* ×m%Nhh|J0zxU*#J0: `^IVqV $p@ʰ nx(9H!(( (VIVQLs̑bQZ4j(M6MζOVzGuVjJl9jFܹbbb4n8}׮ԩVZvy(=L&|F!I:w#1Ld mոJk/j[PejҤI2͚={/^}Νڹsﯨ(M4Iw֥K Tfӕ+W$Iqqq1c,X]z5>Zj߾ +22R6lXә3g4j(m޼Yɒ 0 [ZjjԨkJdE{փ>ڵk+!!Aϟ~ͧ-ZHuq##G駟.'m:|A4VvgK/_~Ȑts7̘1xڵ+..+ǿn/m(*UH>`TZ[{v-ϛ7/[էz*[dѮykԺukK'p&Lf͚7ow['o߾뮻tG|recN֬YK,YG}TK,q}O}Z/k}jjڴiL-_\7nu=ܹsz7?{ ~_f͚|JLL5|1J=f_pmⱸb?VɓQÆ nY#mڴо}:tH:t(P ˗%''O?Հ]jҥ_$ ,z"b_-p21jժZ:p@s}5kKw}vڥ *W^QV\ۧL'|R?6nܨ-ZhnuѩS'=:rտ=Cy:bM4u{ t)ʹ>y%%%i*W=pnܸQtK>+((H͚5sm3Lڼysb,Hرd8zo޼=riZxuժUK'Os^^CjժN> 6bW^۷oՓx=p|ɓ[ի;wo%)[2$/_ -Z(ĸ&0.G}TN:ujØUN-\0۶ZJor-229&aEUR%IuRسgJCSBBkhK5yd=ڸqN=ڼy&N(۵kUرc+WeGVÆ ۲eK'O{U˂S^|Ys՘1c4tlwݸq  H4iYf< IEJ]effjȐ!NW\Q^/4}tI?_֨QCիWs!Pjjq׾UT|P^דx Tn]=3&pysbժU4hzUaaam6ʕ+kjܸoߞ{'Oj֭ٶ]xQ+WTϞ=ս{ŸP1:q5j =AUٲe%IOvlyI;9UVMTF I/pc291tsNYg?x()h<0/B]tQ܆I]'#=jӦҰaCVZ)99Y}QeٴtRՇ~I9OӾ}{%%%eƩSw^upcXTF uY[Zj{nudTEiwFlOTfM|6Ryp+ݮ;w 0@@ȉQyn^k֭ڽ{w[IƘƈg1B'OV6m\*99YǏw]ʻ Fms䴟sݶtRWL7zG='le^yK^M7o֣>ZNKKԩS5uT:g}ʼyiӦ믿*""B5kTRRݾdvmzw^=Cr8+?^+VP5o<}WPBBB4~xObb?|o͛7O]v-T9W%&&uw}r8Zjm˗/jժ~79mٳgwUFFyիWO)))^3w\%$$םwޙoAPK$c#`p$p 9p={n6I'@ e@CkR YgէFBҭV*Mx%D $B.L2$s?3's̜̼^ss~w~sG索*?~|zSSSk׮477= pFI&TWW6پ}{oB0B WxSΤI0 pF7m>TUU0pFrP`@Ǐ/w  @CHb8묳ru#M/~1?6~݆7IrG+_0V4SyI;̕^`ИN548c̙3s}{_lڴ)O>dlذ0*u:ՙg9U|Q&ԧ̙33s,X {oo&+SS (VSS믿>}{w,]4O'I>̟??^xa,X,^X0jpFO}Sy{ߛ^{-/΋/$9Ó$Wիs=W\qEn/tcqQj̙?ݻwfɒ%w[}͇?̜9}q`شiSmө?ul߾= .lo·mVH&?TVVfҥM[.˖-Keee;*Q_b!N?=SsϬY‘O0J}KG?kk;] }3s1Yvm^xᅼoc#`jkK/w;̝w޹_{V=St52տYwܸq7np5 pFIm\ Iө-Z5kd֬Y5kV֯_S*8T,H\WWZ诮S=={v,Y%KdYzu*l#0J=䓙9sfϟs555뮻3T`7-ܒe˖G?Q֯_$5kVϟ??555yꩧr-j`kjjŋsWp,X ׯ9wuWn455R'Qn߾}曳tҜwyyޗ#<2[=M6l__ `BPp`*NQE X Qh׮].5X!}inn.`P e qoߞa/e.khhHcccjkk3~TW͏466f׮]F@pFر#;v(w)1 8'(8@ p NPp!N:)UUUڛjժlݺL\F&Ir'C-Ce#ӧO'exӦ2'x8>}zN:TV5qO桇O<{f޽y'Co qtɓsO?=SN5;vȣ>ijj M;msL<}ʕ+S__5`G?}Cfԩ9ښCT/~=iq9NͿ7(u'I暬[Os1򗿜O?]@ر#+W̜9s:J[xm۶an(u'IÛ}M6$50m߾=+WqjTsssVZ%'0hoߞUVuⴴg֭[Pf pצ&7pCvQrnݚ.cT1` L]]]>H` y;ޑ/| #`Ha 1:*/rg׮]MRpƀ={dݺu7|t/.Se@_pFm۶eڴi9ruu:]`s '_ `zGr_b#`Ғ3<3rHy7#{R͹뮻r]wF8'(8@ p NPp8'(80d|{+w#^u FSN9% F8'(8@ p N L>m{}\`P7.'tRnn-'xbƍWF.0-Z5koo;/X%֭[YfM{ۋ/ _/ce#t[n%\UVeժU?o@u F7x# ,(w8`/tq7ȕNP83fh pƈ%KW^wܑ~` rQG+?,w9@ pƠu]K/4'O.w9@/8cTeeeϟo| RSSSnpƸ'xrtC@%ݰ {,[,<@K!ZZZCΝ;]soϯr` yWrw駟.w)@?pƈ `BPp8'(8@ p NPp8'(8@ p NPp8'(8@ p NPp\u `xw~w?3fHyCe߾}e` 6mZoMc9&sL~;7xcmV pFf͹;z$oocXw檫ʵ^k$5pFs9'3fȦMrO}}}bŊ\{yRWW>]r$w}wvܹ}IO?}XkF0ʵ{jժn;ꨣ&0ʵ$IZ[[$vX9$֭[믷k 8ڵk$'xbd˖-I t^k `O~$'>ڴf͚5YvmZ[[S[[I{r=XVZC=4]w]fϞ~nٹr衇g@A pF?SOC͕W^~+̡z*7|sZ8@X` hllM7ݔ~?~|,YM7$3`hmmr5koC򕯔`8cL Lc:NjJP2V tE0r)Ix \rIkZ[[t((UUUӧ9jw_LqQ1Z[[SQQa{ĉdɒ7x#_WQ"FRy7RYY>9裓$6m~b?ϓ$cǎ?c{~zXjN0ٷo_?~swc=k6ϻر#\jT V |EK_w1nћoُP={d֭yޗ=y;ޑ;vd۶m!sg%7tS6n8fڴiپ}{qHf$-%ϥ{\1y䑴䓟d͛ygΝq`GEƈŋ`8cĒ%K=pa/Q[n)S5@pƈ8Fac8gc1tɓ'8cD.Ta  /ts%@0F\wu. #p NPp8'(8@ p NPp8'(rPT&LS]+WSSSgϞr҉UUU2e2թS__r)T%7pΔ)S]0p:0aVՙ0aB N]0FӁ7@9FPp@]]]͛L81 y饗׿uhw 's 'ɓ'gΝYfM|] @eee>SO>eʔtI9餓?aZZZT%@RUU/8>mڴvi9Ӳ|,Y$eg›}Gʕ+S__SOgy楢"w_w~wr1׾~,_<_2/$Gz IE"MMMA-ٻwo.]{,[n?^xa=$w2W tGOuuuͭޚW^y֭[gݺuKsꩧgt>?:ٰaClrJLFN8=׾uֵۼys<쳹sfŊS@AYĸڦM=#›^~<#Usss6'F,]Sxѯ~,[,If84s$ʕ+{3si?JLu4gΜ̝;7I2k֬^:>h*++sꩧf֬YΆ bŊ۷=}9ó|r!'pBc=.(gĉ$=k;?iҤ~UUU;477V\:h)T~z&N{'9묳2o޼<}>?iVXFɓ''ykzgOηGOwɓ3u)2eJ{xߝwݝږ-[7փ:(z׻r=dϞ=I'|2{n'̚5k@ܹ3ӦMӳynr!bӆ rI'O?m9s$I^z~UbŊ)ԩSSQQmSYYNl Ӛ5krin~b?N:)gqF֭[_~y>3fg޿\|$4;|vi W~};I˗w@م~_OMMM.ҜuY9CRUUC9$g}v.TWWgy7ڵ+K]]ݰڵk|tA|$GqDsGd?:(;w̦M]2 #p?a***rꩧs9眳_L4)]vYnڵkhll]2{֦1MMMYreN=ܹ3j&M &_zYdI袋rEק>SLɟk_Zv1e==Qc|]]ݢEuǨ֬]6֭KMMM&Lڵ+k׮Ͳe}k?>?|Κ5+vٳgg˖-ٲeKso{֭[۷i?<կqƴSNɼy2k֬׷G{݂獍֬\2Vʸq2iҤtAٱcGV\o}[{3gΜܹs,]`l6mZo^25~lܸ5IKs飣FoAPo_.;Mۣ_u3<󱮶>z)&MK/4GqDlْ[o./@m۶ SL?̘1#7n̟ٟe۶mC~_裏]FNzIv$iN__txt sڎ8J M[5pPCCCo^ˡ $._z^y啼mo˕W^Y8C!zk_ſfV__??ˋ/h,(mU}}}/ 8'(8@ p:hjj*w gN.z#`Ϟ=%VMMMٳgO NS^ ח `.wEܜm۶e„ ?~|}EjjjJcc7@I'g\0frЫV?VEoЊrP6c6I8P%tPNkkkB Rm}#C~V0ZZZ ߠP5m /$@Gof!kΝٻwoREEEakjc24iR]ƈWWW^ze2eʔr(SWWL>}ɓ'+wî3@ p NPpCqkQoo _BZ[[su_ /0It.]MMM.̟??ӦM5۶ms뭷i+,!zB5Aџ檫Jeeec9&/NяfΜ9˺ q/^\tE9ꨣ77ٲeK}>'>+"<@Aہ`4;CMǾӧO`D)"2㔩_ޯ̝;xܹo1iҤr~MGw\>>mڴ~!k֬???{_q?~|.\~9òpn=( ΨtɟIG?`<˿eԩ|<裹馛r… s硇ߞ#<2\rI:ɟIxoO~;lR$>`>sP? r .;tIկ~;v'?'ܧ{Ϝ9}.nS' 6pL$~̈́ + /ٳʃ>E67xc.r-ٹsg/_7n\//ύ7ޘN8!-'>l޼9x;y|;ٳӟӺ-7rw3L͛o1w^SQQSO=5_~y;:׼?.r-?~|>^믿ީ믿'6vޟgRUU_ĉs܁8`ʔ)⋓߻OX"MMMYjU|<3ٵkW6mڔ?|%˗/϶m۲iӦs=S*++S]];.UUUyWc=63f}ݗ$ydz{NӚofƍ.&E{L ZZZZ****,\s59sGݴ߬5v[W۷o4Jdǎ;<wyimmӳ{$ի?~뮻ٷo~8#3nܸ|;io`۰aC|͌7.rK~Nm7oީˮ]ڿ_t\]]Oӹꪫca_EEEzZ˦Pk-ҐqWZK^7777WUU6>w:ޱcG֭[n-?^}5gΜ,Z(\rIvܙ38#]vY/w_fΜ??ϖ-[?I:m}y477K.I?ڳgO-[~=?S?;.ӧOo$7o^~3OL7m9眜|ygcMWRꫯ>UUUeϞ=;4;juWDžWK=<$\uug}6G2w̝;7guV-Z4dM֎H7n\jjjӹVjl>r>'xb{ueÆ >TTT䨣KtMJW֮]گ}\}ՙ4iRf̘Eeɒ%=ޯvJUTTSԠUUU璴M';,Gxs32/%IS}}555~/| ٰaGy$O>d}ݝ֓9rWdҥS__;I,]4zjZZZ}.zh.]}{ˇs444.~퍍;O~۵wڵ+{o/27|s~x,X >yA'X6[aƌ}|gd˖-oMMMnzGfFO#mj36{Wt9y+h^2IUGuyݝ䨎aBwڦ̝;i쨫K/vJ7mj0L>={lZ[[zܹsP?`5'O|b@~:޽_~Ivsۣ㈜Y:ݍ鸮NO#r IS5pz[-h>ͭ[|  oF{" Ғa֧k^{<}7.֭1ɛԨpToaKaS FTvq\QүFL3gΗ&O|ACCmu=Ve= PT1g8UTTdĉyW{'dO69?J蛮K YPEKuuqƕ+W~mݏM4Ӷ@UUUeĉyV<%iLGu4Pȗԩi\K=?ϯܹsI&eܸqP0X:7+V\ywē3th=C=d02\E}JV%oUzU͛W=6Tu3U:8y}$5I{챧M2ƍ{wUUՔʶ4̘1#/r($ PT3fݻ]~Zٳ7xk׮iZx_~ִ8M=6t=t Y4N_ׅ]U[&鼘qWϥ;_甴u۶xqtcS:eT]mltNM[WW_&8'`t5nZMi3b1j4MqQ5#oJ_it^C*|]CS攎)yS].gin89OoڂЧsk[K8]}jLoSzg!|+ݨwVUe:/NV)O=$U$GtT_Fr6EB lNwӪߌiӚS:;FiN6!MԫHRSIF(/qMWwuui@$-]. tJ׼_Ok 3tyӦŌ۴8 e~SUw>@+n›0,#v:*zm /t!tqT>-=F 6zZxiR9ݿ?o e8ÆFU-^S{o  e`ttpwӡ2Mm ?}*I&w7.JGtWKW)80tJ1.?Mw!ˁ;L dNFtޗE{] >tlmMooJBI9~,dzK`ptqig͈P%C$ڮFtwj7L}s MG$ptqwu@ÌFݔk@3sְ)W0أp:7]OOn[@אfDItw!N<]6颭/P7;(L Gv<O_m nӗs)ý U qʼn: ƲNI5.5ÛÁ8m9S_n`xuMW$鮭;c6I<)m? "|?0VtN+B@֧0/Kչ3 *J1X!Ns kKB)kx+t[S FF%@舞o-H=C17PU^o ]VE )Z`kǵ\; FӃ q:^b0FQk V2k$)Tx7I?) V2=!S@WFN= $##(j3;(I B V#3]Mf9 ƶjD!P0uհP>2\QMT g p)#2i3Z"~"CAIk2 ܈nڌc46k&h,c3X7*6c-kFQt4`$3M)Fg(1ؔX ; TM^{HIENDB`extension-manager-0.6.3/po/sv.po000066400000000000000000000525361477302130300165650ustar00rootroot00000000000000# LANGUAGE translations for extension-manager package. # Copyright (C) YEAR THE extension-manager'S COPYRIGHT HOLDER # This file is distributed under the same license as the extension-manager package. # bittin1ddc447d824349b2 , 2024, 2025. msgid "" msgstr "" "Project-Id-Version: extension-manager\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-03-06 16:36+0000\n" "PO-Revision-Date: 2025-03-12 08:01+0000\n" "Last-Translator: bittin1ddc447d824349b2 \n" "Language-Team: Swedish \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: Weblate 5.10.3-dev\n" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:2 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:6 #: src/exm-window.blp:7 msgid "Extension Manager" msgstr "Tilläggshanterare" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:11 msgid "Manage GNOME Shell Extensions" msgstr "Hantera GNOME-tillägg" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #. Make sure to leave the original strings and add your translations afterwards, so that users can search both in English and your language. #: data/com.mattjakeman.ExtensionManager.desktop.in.in:14 msgid "extension;manager;shell;" msgstr "Tilläggshanterare;skal;" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:7 msgid "Browse, install, and manage GNOME Shell Extensions" msgstr "Bläddra, installera och hantera GNOME-tillägg" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:13 msgid "A utility for browsing and installing GNOME Shell Extensions." msgstr "Ett verktyg för att hitta och installera GNOME-tillägg." #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:14 msgid "Features:" msgstr "Funktioner:" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:16 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:26 msgid "Browse extensions.gnome.org right inside the app" msgstr "Bläddra extensions.gnome.org direkt i appen" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:17 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:22 msgid "Manage the extensions you already have installed" msgstr "Hantera installerade tillägg" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:30 msgid "See all the details of your extensions" msgstr "Se alla detaljer om dina tillägg" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:34 msgid "Check your extensions compatibility with the next version of GNOME" msgstr "Kontrollera att tilläggen är kompatibla med nästa version av GNOME" #: src/exm-application.c:201 msgid "Browse, install, and manage GNOME Shell Extensions." msgstr "Bläddra, installera och hantera GNOME-tillägg." #. Translators: Use 'Name email@domain.com' or 'Name https://website.example' (without single quotes). Do not delete existing names, write yours on a new line. #: src/exm-application.c:204 msgid "translator-credits" msgstr "översättare" #: src/exm-browse-page.blp:16 msgid "Search for Extensions" msgstr "Sök efter tillägg" #: src/exm-browse-page.blp:17 msgid "" "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell Extensions" msgstr "" "Ange ett nyckelord för att söka på \"extensions.gnome.org\" efter GNOME-" "skaltillägg" #: src/exm-browse-page.blp:47 msgid "Relevance" msgstr "Relevans" #: src/exm-browse-page.blp:48 msgctxt "Sort search results" msgid "Downloads" msgstr "Hämtningar" #: src/exm-browse-page.blp:49 msgid "Recent" msgstr "Senaste" #: src/exm-browse-page.blp:50 src/exm-detail-view.blp:113 msgid "Name" msgstr "Namn" #: src/exm-browse-page.blp:57 msgid "Sort search results" msgstr "Sortering av sökresultat" #: src/exm-browse-page.blp:103 msgid "_Load More Results" msgstr "_Hämta fler resultat" #: src/exm-browse-page.blp:137 src/exm-installed-page.blp:123 msgid "No Results Found" msgstr "Hittade inga resultat" #: src/exm-browse-page.blp:144 msgid "Try a different search" msgstr "Prova en annan sökning" #: src/exm-browse-page.blp:178 src/exm-comment-dialog.blp:34 #: src/exm-detail-view.blp:49 src/exm-detail-view.blp:291 #: src/exm-upgrade-assistant.blp:100 msgid "Connection Error" msgstr "Anslutningsfel" #: src/exm-comment-dialog.blp:13 src/exm-detail-view.blp:248 msgid "Reviews and Comments" msgstr "Recensioner och kommentarer" #: src/exm-comment-dialog.blp:25 msgid "Loading" msgstr "Laddar" #: src/exm-comment-tile.blp:30 src/exm-detail-view.blp:127 msgid "Author" msgstr "Författare" #: src/exm-detail-view.blp:40 msgid "Loading Details" msgstr "Hämtar Detaljer" #: src/exm-detail-view.blp:59 src/exm-window.c:347 msgid "An Error Occurred" msgstr "Ett fel inträffade" #: src/exm-detail-view.blp:60 msgid "No extension details available" msgstr "Inge uppgifter om tillägg är tillgängligt" #: src/exm-detail-view.blp:154 msgid "Enlarge Image" msgstr "Förstora bild" #: src/exm-detail-view.blp:172 src/exm-extension-row.blp:89 msgid "Description" msgstr "Beskrivning" #: src/exm-detail-view.blp:195 msgid "Links" msgstr "Länkar" #: src/exm-detail-view.blp:203 msgid "Homepage" msgstr "Hemsida" #: src/exm-detail-view.blp:219 msgid "Donate" msgstr "Donera" #: src/exm-detail-view.blp:228 msgid "View on Extensions" msgstr "Se på Extensions" #: src/exm-detail-view.blp:271 msgid "Reviews and comments are disabled for this extension" msgstr "Recensioner och kommentarer är inaktiverade för detta tillägg" #: src/exm-detail-view.blp:314 msgid "There are no reviews or comments" msgstr "Det finns inga recensioner eller kommentarer" #: src/exm-detail-view.blp:343 msgid "_Show All" msgstr "_Visa alla" #. Translators: '%s' = extension name #: src/exm-detail-view.c:445 #, c-format msgid "%s Icon" msgstr "%s Ikon" #. Translators: '%s' = extension name #: src/exm-detail-view.c:478 #, c-format msgid "%s Screenshot" msgstr "%s Skärmbild" #: src/exm-error-dialog.blp:7 msgid "Error Report" msgstr "Fel rapport" #: src/exm-error-dialog.blp:22 msgid "An unexpected error occurred in Extension Manager" msgstr "Ett oväntat fel inträffade i tilläggshanterare" #: src/exm-error-dialog.blp:36 msgid "Copy to Clipboard" msgstr "Kopiera till urklipp" #: src/exm-error-dialog.blp:77 msgid "_New Issue" msgstr "_Nytt fel" #. Success indicator #: src/exm-error-dialog.c:125 src/exm-upgrade-assistant.c:347 msgid "Copied" msgstr "Kopierad" #: src/exm-error-dialog.c:173 msgid "Please open a new issue and attach the following information:" msgstr "Vänligen öppna ett nytt ärende och bifoga följande information:" #. Translators: '%s' = Name of Distributor (e.g. "Packager123") #: src/exm-error-dialog.c:177 #, c-format msgid "" "You are using a third-party build of Extension Manager. Please contact the package distributor (%s) first before " "filing an issue. Be sure to attach the following information:" msgstr "" "Du använder en tredjepartsversion av tilläggshanteraren. Vänligen kontakta paketdistributören (%s) först innan du " "lämnar in ett ärende. Var noga med att bifoga följande information:" #. Translators: Button's tooltip to open extension's preferences dialog #: src/exm-extension-row.blp:28 msgid "Open extension preferences" msgstr "Öppna tilläggsinställningar" #. Translators: Icon's tooltip when an extension has an error #: src/exm-extension-row.blp:46 msgid "An error occurred while loading this extension" msgstr "Ett fel inträffade vid laddning av tillägget" #. Translators: Icon's tooltip when an extension is incompatible #: src/exm-extension-row.blp:63 src/exm-install-button.c:117 msgid "This extension is incompatible with your current version of GNOME" msgstr "" "Det här tillägget är inte kompatibelt med din nuvarande version av GNOME" #. Translators: Icon's tooltip when an extension update is available #: src/exm-extension-row.blp:80 msgid "A newer version of this extension is available" msgstr "En nyare version av detta tillägg är tillgängligt" #: src/exm-extension-row.blp:98 src/exm-info-bar.blp:50 msgid "Version" msgstr "Version" #: src/exm-extension-row.blp:107 msgid "Session Modes" msgstr "Sessionslägen" #: src/exm-extension-row.blp:137 msgid "Error" msgstr "Fel" #: src/exm-extension-row.blp:158 msgid "See Details" msgstr "Se detaljer" #: src/exm-extension-row.blp:169 msgid "Remove…" msgstr "Ta bort…" #: src/exm-extension-row.c:175 msgid "Unlock Dialog" msgstr "Lås upp dialogruta" #. Translators: GNOME Display Manager #: src/exm-extension-row.c:181 msgid "GDM" msgstr "GDM" #. Translators: Label when an extension runs on both, login and lock screens #: src/exm-extension-row.c:189 msgid "" "This extension will run while the screen is locked and no user is logged in" msgstr "" "Det här tillägget körs medan skärmen är låst och ingen användare är inloggad" #. Translators: Label when an extension runs on the lock screen #: src/exm-extension-row.c:194 msgid "This extension will run while the screen is locked" msgstr "Det här tillägget körs medan skärmen är låst" #. Translators: Label when an extension runs on the login screen #: src/exm-extension-row.c:199 msgid "This extension will run while no user is logged in" msgstr "Detta tillägg kommer att köras medan ingen användare är inloggad" #: src/exm-help-overlay.blp:11 msgctxt "shortcut window" msgid "General" msgstr "Allmänt" #: src/exm-help-overlay.blp:14 msgctxt "shortcut window" msgid "Show Installed Page" msgstr "Visa installerat sida" #: src/exm-help-overlay.blp:19 msgctxt "shortcut window" msgid "Show Browse Page" msgstr "Visa bläddra sida" #: src/exm-help-overlay.blp:24 msgctxt "shortcut window" msgid "Toggle Search" msgstr "Växla sök" #: src/exm-help-overlay.blp:29 msgctxt "shortcut window" msgid "Show Keyboard Shortcuts" msgstr "Visa tangentbordsgenvägar" #: src/exm-help-overlay.blp:34 msgctxt "shortcut window" msgid "Close Window" msgstr "Stäng fönster" #: src/exm-help-overlay.blp:39 msgctxt "shortcut window" msgid "Quit" msgstr "Avsluta" #: src/exm-help-overlay.blp:45 msgctxt "shortcut window" msgid "Screenshot View" msgstr "Skärmbildsvy" #: src/exm-help-overlay.blp:48 src/exm-help-overlay.blp:63 msgctxt "shortcut window" msgid "Zoom In" msgstr "Zooma in" #: src/exm-help-overlay.blp:53 src/exm-help-overlay.blp:68 msgctxt "shortcut window" msgid "Zoom Out" msgstr "Zooma ut" #: src/exm-help-overlay.blp:58 msgctxt "shortcut window" msgid "Reset Zoom" msgstr "Återställ zoom" #: src/exm-info-bar.blp:28 msgctxt "Number of downloads" msgid "Downloads" msgstr "Hämtningar" #: src/exm-info-bar.c:107 msgid "Unsupported" msgstr "Stöds ej" #: src/exm-install-button.c:127 msgid "Install…" msgstr "Installera…" #: src/exm-install-button.c:132 msgid "Installing" msgstr "Installerar" #: src/exm-install-button.c:136 msgctxt "State" msgid "Installed" msgstr "Installerat" #: src/exm-install-button.c:140 msgid "Unsupported…" msgstr "Stöds ej…" #: src/exm-installed-page.blp:16 msgid "_Log Out…" msgstr "_Logga ut…" #: src/exm-installed-page.blp:28 msgid "Use Extensions" msgstr "Använd tillägg" #: src/exm-installed-page.blp:29 msgid "Extensions can cause performance and stability issues" msgstr "Tillägg kan orsaka prestanda och stabilitetsproblem" #: src/exm-installed-page.blp:34 src/exm-upgrade-assistant.blp:133 msgid "User-Installed Extensions" msgstr "Användarinstallerade tillägg" #: src/exm-installed-page.blp:51 src/exm-upgrade-assistant.blp:150 msgid "No User Extensions Installed" msgstr "Inga användartillägg installerade" #: src/exm-installed-page.blp:55 msgid "Browse" msgstr "Utforska" #: src/exm-installed-page.blp:69 src/exm-upgrade-assistant.blp:160 msgid "System Extensions" msgstr "Systemtillägg" #: src/exm-installed-page.blp:86 src/exm-upgrade-assistant.blp:177 msgid "No System Extensions Installed" msgstr "Inga systemtillägg installerade" #. Translators: Text announced by screen readers when interacting with the list of search results #: src/exm-installed-page.blp:111 msgid "Search Results" msgstr "Sökresultat" #: src/exm-installed-page.blp:124 msgid "Try a different search or search online" msgstr "Prova en annan sökning eller sök online" #: src/exm-installed-page.blp:131 msgid "_Search Online" msgstr "_Sök online" #. Translators: '%d' = number of extensions that will be updated #: src/exm-installed-page.c:298 #, c-format msgid "%d extension will be updated on next login" msgid_plural "%d extensions will be updated on next login" msgstr[0] "%d tillägg kommer uppdateras vid nästa inloggning" msgstr[1] "%d flera tillägg kommer uppdateras vid nästa inloggning" #: src/exm-rating.c:142 #, c-format msgid "%i Star" msgid_plural "%i Stars" msgstr[0] "%i Stjärna" msgstr[1] "%i Stjärnor" #. Translators: Button's tooltip to zoom out screenshots #: src/exm-screenshot-view.blp:37 msgid "Zoom Out" msgstr "Zooma ut" #. Translators: Button's tooltip to zoom in screenshots #: src/exm-screenshot-view.blp:51 msgid "Zoom In" msgstr "Zooma in" #: src/exm-upgrade-assistant.blp:11 msgid "Upgrade Assistant" msgstr "Uppgraderingsassistent" #: src/exm-upgrade-assistant.blp:66 msgid "_Check Compatibility" msgstr "_Kontrollera kompatibilitet" #: src/exm-upgrade-assistant.blp:189 msgid "_Copy to Clipboard" msgstr "_Kopiera till urklipp" #: src/exm-upgrade-assistant.c:188 #, c-format msgid "Checked %d/%d Extensions" msgstr "Kontrollerat %d/%d tillägg" #. Set percentage text #: src/exm-upgrade-assistant.c:207 #, c-format msgid "%d%% Compatible" msgstr "%d%% Kompatibla" #: src/exm-upgrade-assistant.c:223 #, c-format msgid "" "GNOME %s supports %d out of %d of the extensions currently " "installed on the system" msgstr "" "GNOME %s stöder %d av %d av de tillägg som för närvarande är " "installerade på systemet" #. Translators: Icon's tooltip when an extension is compatible #: src/exm-upgrade-assistant.c:503 msgid "A compatible version of the extension exists" msgstr "En kompatibel version av detta tillägg är tillgängligt" #. Translators: Icon's tooltip when an extension is not compatible #: src/exm-upgrade-assistant.c:510 msgid "No compatible version of the extension exists" msgstr "En nyare version av detta tillägg är tillgängligt" #. Translators: Icon's tooltip when an extension compatibility is unknown #: src/exm-upgrade-assistant.c:517 msgid "" "This extension is not hosted on extensions.gnome.org. Its compatibility " "cannot be determined." msgstr "" "Det här tillägget finns inte på extensions.gnome.org. Dess kompatibilitet " "kan inte fastställas." #: src/exm-upgrade-assistant.c:608 #, c-format msgid "" "You are currently running GNOME %s. Select a version of GNOME below " "and check whether your extensions will continue to be available." msgstr "" "Du kör för närvarande GNOME %s. Välj en version av GNOME nedan och " "kontrollera om dina tillägg kommer att fortsätta att vara tillgängliga." #. Translators: Tooltip of the search icon in the header bar #: src/exm-window.blp:39 msgid "Search Installed Extensions" msgstr "Sök bland installerade tillägg" #: src/exm-window.blp:48 msgid "Main Menu" msgstr "Huvudmenyn" #: src/exm-window.blp:59 msgid "Search for installed extensions" msgstr "Sök efter installerade tillägg" #: src/exm-window.blp:71 msgctxt "Navigation" msgid "_Installed" msgstr "_Installerade" #: src/exm-window.blp:80 msgctxt "Navigation" msgid "_Browse" msgstr "_Utforska" #. Translators: the character preceded by "_" should not be the same #. as others in the same menu #: src/exm-window.blp:108 msgid "Sort _Enabled First" msgstr "Visa_Aktiverade först" #: src/exm-window.blp:109 msgid "_Show Unsupported" msgstr "_Visa Ej Supporterade" #: src/exm-window.blp:113 msgid "_Upgrade Assistant" msgstr "_Uppgraderingsassistent" #: src/exm-window.blp:114 msgid "_Keyboard Shortcuts" msgstr "_Tangentbordsgenvägar" #: src/exm-window.blp:115 msgid "_About Extension Manager" msgstr "_Om Tilläggshanterare" #: src/exm-window.blp:120 msgid "Uninstall Extension?" msgstr "Avinstallera tillägg?" #: src/exm-window.blp:121 msgid "" "The extension's features and functionality will no longer be accessible. Are " "you sure you want to uninstall?" msgstr "" "Tilläggets egenskaper och funktionalitet kommer inte längre att vara " "tillgängliga. Är du säker på att du vill avinstallera?" #: src/exm-window.blp:126 msgid "_No" msgstr "_Nej" #: src/exm-window.blp:127 msgid "_Yes" msgstr "_Ja" #: src/exm-window.blp:132 msgid "Unsupported Extension" msgstr "Tillägget stöds inte" #: src/exm-window.blp:133 msgid "" "This extension does not support your GNOME Shell version. It may cause " "errors if installed." msgstr "" "Det här tillägget stöder inte din GNOME version. Det kan orsaka fel om det " "installeras." #: src/exm-window.blp:139 msgid "_Install Anyway" msgstr "_Installera ändå" #: src/exm-window.blp:140 msgid "_Go Back" msgstr "_Gå tillbaka" #: src/exm-window.c:348 msgid "_Details" msgstr "_Detaljer" #: src/web/exm-request-handler.c:99 msgid "" "Check GNOME infrastructure status " "and try again later" msgstr "" "Kontrollera GNOME-infrastrukturstatus och försök igen senare" #: src/web/exm-request-handler.c:100 msgid "Check your network status and try again" msgstr "Kontrollera din nätverksstatus och försök igen" #~ msgid "Comments" #~ msgstr "Kommentarer" #~ msgid "Loading Comments" #~ msgstr "Hämtar kommentarer" #~ msgid "User Reviews" #~ msgstr "Användarrecensioner" #~ msgid "No comments yet" #~ msgstr "Inga kommentarer än" #~ msgid "" #~ "This extension could be activated in session modes such as the login " #~ "screen or the lock screen" #~ msgstr "" #~ "Det här tillägget kan aktiveras i sessionslägen, som inloggningsskärmen " #~ "eller låsskärmen" #, c-format #~ msgid "%s by %s" #~ msgstr "%s av %s" #~ msgid "Updates Available" #~ msgstr "Uppdateringar tillgängliga" #~ msgid "Supported" #~ msgstr "Stöds" #~ msgid "Unknown" #~ msgstr "Okänd" #~ msgid "A utility for managing GNOME Shell Extensions" #~ msgstr "Ett verktyg för att hantera GNOME-tillägg" #, c-format #~ msgid "e.g. “%s”" #~ msgstr "t.ex. “%s”" #~ msgid "This extension is incompatible with your current version of GNOME." #~ msgstr "" #~ "Det här tillägget är inte kompatibelt med din nuvarande version av GNOME." #~ msgid "An error occurred." #~ msgstr "Ett fel inträffade." #~ msgid "@app_title@" #~ msgstr "Tillägshanterare" #~ msgid "The second feature update to extension-manager. Highlights include:" #~ msgstr "" #~ "Den andra funktionsuppdateringen till Tilläggshanterare. Höjdpunkter:" #~ msgid "View comments and reviews" #~ msgstr "Se kommentarer och recensioner" #~ msgid "Support for in-app updates" #~ msgstr "Stöd för uppdatering direkt i appen" #~ msgid "Better handling errors and out-of-date extensions" #~ msgstr "Bättre hantering av felmeddelanden och utdaterade tillägg" #~ msgid "Allow installing 'unsupported' extensions" #~ msgstr "Tillåtelse av tillägg 'utan stöd'" #~ msgid "Display release notes on first run" #~ msgstr "Visa app nyheter vid första uppstart" #~ msgid "New app icon" #~ msgstr "Ny app ikon" #~ msgid "Optionally sort extensions by enabled status" #~ msgstr "" #~ "Valfri funktion för att sortera enligt vilka tillägg som är aktiverade" #~ msgid "Translation updates" #~ msgstr "Uppdateringar till översättningar" #~ msgid "Fix special characters in search results" #~ msgstr "Fix för speciella bokstäver i sökresultat" #~ msgid "Fixes a crash that sometimes occurs while uninstalling an extension" #~ msgstr "Fix för en krasch som ibland händer vi avinstallation av tillägg" #~ msgid "The first feature update to extension-manager. Highlights include:" #~ msgstr "Första funktionsuppdatering för Tilläggshanterare. Höjdpunkter:" #~ msgid "Dark theme and support for overriding the system colour scheme" #~ msgstr "Mörkt tema och möjlighet att överskrida system tema" #~ msgid "Shows screenshots in extension listings" #~ msgstr "Visa skärmdumpar i tillägglistningar" #~ msgid "Shell version compatibility check" #~ msgstr "Check av kompatibilitet för skal-version" #~ msgid "Localised into seven languages" #~ msgstr "Översatt till sju olika språk" #~ msgid "Global extension on/off toggle" #~ msgstr "Av/på knapp för globala tillägg" #~ msgid "Extension Manager (Development)" #~ msgstr "Tilläggshanterare (Utveckling)" #~ msgid "" #~ "A very simple tool for browsing, downloading, and managing GNOME shell " #~ "extensions." #~ msgstr "" #~ "Ett väldigt enkelt verktyg för att hitta, installera och hantera GNOME-" #~ "tillägg." #~ msgid "e.g. \"Blur my Shell\"" #~ msgstr "t.e.x \"Blur my Shell\"" #~ msgid "Popularity" #~ msgstr "Populäritet" #~ msgid "Release Notes" #~ msgstr "App nyheter" #~ msgid "Theme" #~ msgstr "Tema" #~ msgid "Follow System" #~ msgstr "Följ systemet" #~ msgid "Light" #~ msgstr "Ljust" #~ msgid "Dark" #~ msgstr "Mörkt" #~ msgid "Are you sure you want to uninstall?" #~ msgstr "Är du säker på att du vill avinstallera?" #~ msgid "What's New" #~ msgstr "Nyheter" #~ msgid "View Release Notes" #~ msgstr "Se nyheter" #, c-format #~ msgid "" #~ "This is your first time using Extension Manager %s.\n" #~ "Would you like to see the release notes?" #~ msgstr "" #~ "Det här är första gången du använder Tilläggshanterare %s.\n" #~ "Vill du se vad som är nytt?" extension-manager-0.6.3/po/ta.po000066400000000000000000001035671477302130300165420ustar00rootroot00000000000000# Tamil translations for extension-manager package. # Copyright (C) 2023 THE extension-manager'S COPYRIGHT HOLDER # This file is distributed under the same license as the extension-manager package. # K.B.Dharun Krishna , 2022, 2023. # தமிழ்நேரம் , 2024. msgid "" msgstr "" "Project-Id-Version: extension-manager\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-03-06 16:36+0000\n" "PO-Revision-Date: 2024-12-26 10:00+0000\n" "Last-Translator: தமிழ்நேரம் \n" "Language-Team: Tamil \n" "Language: ta\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: Weblate 5.10-dev\n" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:2 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:6 #: src/exm-window.blp:7 msgid "Extension Manager" msgstr "நீட்டிப்பு மேலாளர்" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:11 msgid "Manage GNOME Shell Extensions" msgstr "க்னோம் செல் நீட்டிப்புகளை நிர்வகிக்கவும்" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #. Make sure to leave the original strings and add your translations afterwards, so that users can search both in English and your language. #: data/com.mattjakeman.ExtensionManager.desktop.in.in:14 msgid "extension;manager;shell;" msgstr "நீட்டிப்பு; மேலாளர்; செல்;" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:7 msgid "Browse, install, and manage GNOME Shell Extensions" msgstr "சினோம் செல் நீட்டிப்புகளை உலாவவும், நிறுவவும் மற்றும் நிர்வகிக்கவும்" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:13 msgid "A utility for browsing and installing GNOME Shell Extensions." msgstr "GNOME ஷெல் நீட்டிப்புகளை உலாவுவதற்கும் நிறுவுவதற்கும் ஒரு பயன்பாடு." #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:14 msgid "Features:" msgstr "அம்சங்கள்:" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:16 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:26 msgid "Browse extensions.gnome.org right inside the app" msgstr "பயன்பாட்டில் உள்ள extensions.gnome.org ஐ உலாவுங்கள்" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:17 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:22 msgid "Manage the extensions you already have installed" msgstr "நீங்கள் ஏற்கனவே நிறுவிய நீட்டிப்புகளை நிர்வகிக்கவும்" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:30 msgid "See all the details of your extensions" msgstr "உங்கள் நீட்டிப்புகளின் அனைத்து விவரங்களையும் காண்க" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:34 msgid "Check your extensions compatibility with the next version of GNOME" msgstr "க்னோமின் அடுத்த பதிப்போடு உங்கள் நீட்டிப்புகள் பொருந்தக்கூடிய தன்மையை சரிபார்க்கவும்" #: src/exm-application.c:201 msgid "Browse, install, and manage GNOME Shell Extensions." msgstr "GNOME ஷெல் நீட்டிப்புகளை நிர்வகிப்பதற்கான ஒரு பயன்பாடு." #. Translators: Use 'Name email@domain.com' or 'Name https://website.example' (without single quotes). Do not delete existing names, write yours on a new line. #: src/exm-application.c:204 msgid "translator-credits" msgstr "க.பா.தருண் கிருஷ்ணா " #: src/exm-browse-page.blp:16 msgid "Search for Extensions" msgstr "நீட்டிப்புகளைத் தேடுங்கள்" #: src/exm-browse-page.blp:17 msgid "" "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell Extensions" msgstr "" "க்னோம் செல் நீட்டிப்புகளுக்கு 'extensions.gnome.org' ஐத் தேட ஒரு முக்கிய சொல்லை " "உள்ளிடவும்" #: src/exm-browse-page.blp:47 msgid "Relevance" msgstr "பொருத்தமானது" #: src/exm-browse-page.blp:48 msgctxt "Sort search results" msgid "Downloads" msgstr "பதிவிறக்கங்கள்" #: src/exm-browse-page.blp:49 msgid "Recent" msgstr "சமீபத்திய" #: src/exm-browse-page.blp:50 src/exm-detail-view.blp:113 msgid "Name" msgstr "பெயர்" #: src/exm-browse-page.blp:57 msgid "Sort search results" msgstr "தேடல் முடிவுகளை வரிசைப்படுத்தவும்" #: src/exm-browse-page.blp:103 msgid "_Load More Results" msgstr "_ மேலும் முடிவுகளை ஏற்றவும்" #: src/exm-browse-page.blp:137 src/exm-installed-page.blp:123 msgid "No Results Found" msgstr "முடிவுகள் எதுவும் இல்லை" #: src/exm-browse-page.blp:144 msgid "Try a different search" msgstr "வேறு தேடலை முயற்சிக்கவும்" #: src/exm-browse-page.blp:178 src/exm-comment-dialog.blp:34 #: src/exm-detail-view.blp:49 src/exm-detail-view.blp:291 #: src/exm-upgrade-assistant.blp:100 msgid "Connection Error" msgstr "இணைப்பு பிழை" #: src/exm-comment-dialog.blp:13 src/exm-detail-view.blp:248 #, fuzzy #| msgid "Loading Comments" msgid "Reviews and Comments" msgstr "கருத்துகளை ஏற்றுகிறது" #: src/exm-comment-dialog.blp:25 #, fuzzy #| msgid "Loading…" msgid "Loading" msgstr "ஏற்றுகிறது…" #: src/exm-comment-tile.blp:30 src/exm-detail-view.blp:127 msgid "Author" msgstr "நூலாசிரியர்" #: src/exm-detail-view.blp:40 msgid "Loading Details" msgstr "விவரங்களை ஏற்றுகிறது" #: src/exm-detail-view.blp:59 src/exm-window.c:347 msgid "An Error Occurred" msgstr "ஒரு பிழை ஏற்பட்டது" #: src/exm-detail-view.blp:60 msgid "No extension details available" msgstr "நீட்டிப்பு விவரங்கள் எதுவும் கிடைக்கவில்லை" #: src/exm-detail-view.blp:154 msgid "Enlarge Image" msgstr "படத்தை பெரிதாக்குங்கள்" #: src/exm-detail-view.blp:172 src/exm-extension-row.blp:89 msgid "Description" msgstr "விளக்கம்" #: src/exm-detail-view.blp:195 msgid "Links" msgstr "இணைப்புகள்" #: src/exm-detail-view.blp:203 msgid "Homepage" msgstr "முகப்புப்பக்கம்" #: src/exm-detail-view.blp:219 msgid "Donate" msgstr "நன்கொடை" #: src/exm-detail-view.blp:228 msgid "View on Extensions" msgstr "நீட்டிப்புகளில் காண்க" #: src/exm-detail-view.blp:271 msgid "Reviews and comments are disabled for this extension" msgstr "" #: src/exm-detail-view.blp:314 msgid "There are no reviews or comments" msgstr "" #: src/exm-detail-view.blp:343 #, fuzzy #| msgid "_Show All Reviews" msgid "_Show All" msgstr "_ எல்லா மதிப்புரைகளையும் மாற்றவும்" #. Translators: '%s' = extension name #: src/exm-detail-view.c:445 #, c-format msgid "%s Icon" msgstr "%s படவுரு" #. Translators: '%s' = extension name #: src/exm-detail-view.c:478 #, c-format msgid "%s Screenshot" msgstr "%s திரை காட்சி" #: src/exm-error-dialog.blp:7 msgid "Error Report" msgstr "பிழை அறிக்கை" #: src/exm-error-dialog.blp:22 msgid "An unexpected error occurred in Extension Manager" msgstr "நீட்டிப்பு மேலாளரில் எதிர்பாராத பிழை ஏற்பட்டது" #: src/exm-error-dialog.blp:36 #, fuzzy #| msgid "_Copy to Clipboard" msgid "Copy to Clipboard" msgstr "இடைநிலைப்பலகைக்கு நகலெடுக்கவும்" #: src/exm-error-dialog.blp:77 msgid "_New Issue" msgstr "_ புதிய சிக்கல்" #. Success indicator #: src/exm-error-dialog.c:125 src/exm-upgrade-assistant.c:347 msgid "Copied" msgstr "நகலெடுக்கப்பட்டது" #: src/exm-error-dialog.c:173 msgid "Please open a new issue and attach the following information:" msgstr "தயவுசெய்து ஒரு புதிய சிக்கலைத் திறந்து பின்வரும் தகவல்களை இணைக்கவும்:" #. Translators: '%s' = Name of Distributor (e.g. "Packager123") #: src/exm-error-dialog.c:177 #, c-format msgid "" "You are using a third-party build of Extension Manager. Please contact the package distributor (%s) first before " "filing an issue. Be sure to attach the following information:" msgstr "" "நீட்டிப்பு மேலாளரின் மூன்றாம் தரப்பு கட்டமைப்பைப் பயன்படுத்துகிறீர்கள். தயவுசெய்து <ச்பான் எடை " "= \"தைரியமான\"> ஒரு சிக்கலைத் தாக்கல் செய்வதற்கு முன் தொகுப்பு விநியோகச்தரை (%s) " "முதலில் ஐ தொடர்பு கொள்ளவும். பின்வரும் தகவல்களை இணைக்க மறக்காதீர்கள்:" #. Translators: Button's tooltip to open extension's preferences dialog #: src/exm-extension-row.blp:28 msgid "Open extension preferences" msgstr "நீட்டிப்பு விருப்பத்தேர்வுகளைத் திறக்கவும்" #. Translators: Icon's tooltip when an extension has an error #: src/exm-extension-row.blp:46 msgid "An error occurred while loading this extension" msgstr "இந்த நீட்டிப்பை ஏற்றும்போது பிழை ஏற்பட்டது" #. Translators: Icon's tooltip when an extension is incompatible #: src/exm-extension-row.blp:63 src/exm-install-button.c:117 msgid "This extension is incompatible with your current version of GNOME" msgstr "இந்த நீட்டிப்பு உங்கள் தற்போதைய GNOME பதிப்போடு பொருந்தாது" #. Translators: Icon's tooltip when an extension update is available #: src/exm-extension-row.blp:80 msgid "A newer version of this extension is available" msgstr "இந்த நீட்டிப்பின் புதிய பதிப்பு கிடைக்கிறது" #: src/exm-extension-row.blp:98 src/exm-info-bar.blp:50 msgid "Version" msgstr "பதிப்பு" #: src/exm-extension-row.blp:107 msgid "Session Modes" msgstr "" #: src/exm-extension-row.blp:137 msgid "Error" msgstr "பிழை" #: src/exm-extension-row.blp:158 msgid "See Details" msgstr "விவரங்களைப் பார்க்கவும்" #: src/exm-extension-row.blp:169 msgid "Remove…" msgstr "அகற்று…" #: src/exm-extension-row.c:175 msgid "Unlock Dialog" msgstr "" #. Translators: GNOME Display Manager #: src/exm-extension-row.c:181 msgid "GDM" msgstr "" #. Translators: Label when an extension runs on both, login and lock screens #: src/exm-extension-row.c:189 msgid "" "This extension will run while the screen is locked and no user is logged in" msgstr "" #. Translators: Label when an extension runs on the lock screen #: src/exm-extension-row.c:194 msgid "This extension will run while the screen is locked" msgstr "" #. Translators: Label when an extension runs on the login screen #: src/exm-extension-row.c:199 #, fuzzy #| msgid "%d extension will be updated on next login" #| msgid_plural "%d extensions will be updated on next login" msgid "This extension will run while no user is logged in" msgstr "அடுத்த உள்நுழைவில் %d நீட்டிப்பு புதுப்பிக்கப்படும்" #: src/exm-help-overlay.blp:11 msgctxt "shortcut window" msgid "General" msgstr "பொது" #: src/exm-help-overlay.blp:14 msgctxt "shortcut window" msgid "Show Installed Page" msgstr "நிறுவப்பட்ட பக்கத்தைக் காட்டு" #: src/exm-help-overlay.blp:19 msgctxt "shortcut window" msgid "Show Browse Page" msgstr "உலாவு பக்கத்தைக் காட்டு" #: src/exm-help-overlay.blp:24 msgctxt "shortcut window" msgid "Toggle Search" msgstr "தேடலை மாற்றவும்" #: src/exm-help-overlay.blp:29 msgctxt "shortcut window" msgid "Show Keyboard Shortcuts" msgstr "விசைப்பலகை குறுக்குவழிகளைக் காட்டு" #: src/exm-help-overlay.blp:34 msgctxt "shortcut window" msgid "Close Window" msgstr "சாளரத்தை மூடு" #: src/exm-help-overlay.blp:39 msgctxt "shortcut window" msgid "Quit" msgstr "வெளியேறு" #: src/exm-help-overlay.blp:45 msgctxt "shortcut window" msgid "Screenshot View" msgstr "திரைக்காட்சி பார்வை" #: src/exm-help-overlay.blp:48 src/exm-help-overlay.blp:63 msgctxt "shortcut window" msgid "Zoom In" msgstr "பெரிதாக்கு" #: src/exm-help-overlay.blp:53 src/exm-help-overlay.blp:68 msgctxt "shortcut window" msgid "Zoom Out" msgstr "சிறிதாக்கு" #: src/exm-help-overlay.blp:58 msgctxt "shortcut window" msgid "Reset Zoom" msgstr "பெரிதாக்கு மீட்டமைக்கவும்" #: src/exm-info-bar.blp:28 msgctxt "Number of downloads" msgid "Downloads" msgstr "பதிவிறக்கங்கள்" #: src/exm-info-bar.c:107 msgid "Unsupported" msgstr "ஆதரவற்றது" #: src/exm-install-button.c:127 msgid "Install…" msgstr "நிறுவு…" #: src/exm-install-button.c:132 #, fuzzy #| msgctxt "State" #| msgid "Installed" msgid "Installing" msgstr "நிறுவப்பட்டுள்ளது" #: src/exm-install-button.c:136 msgctxt "State" msgid "Installed" msgstr "நிறுவப்பட்டுள்ளது" #: src/exm-install-button.c:140 msgid "Unsupported…" msgstr "ஆதரிக்கப்படாத…" #: src/exm-installed-page.blp:16 msgid "_Log Out…" msgstr "_ லாக் அவுட்…" #: src/exm-installed-page.blp:28 msgid "Use Extensions" msgstr "நீட்டிப்புகளைப் பயன்படுத்தவும்" #: src/exm-installed-page.blp:29 msgid "Extensions can cause performance and stability issues" msgstr "நீட்டிப்புகள் செயல்திறன் மற்றும் ச்திரத்தன்மை சிக்கல்களை ஏற்படுத்தும்" #: src/exm-installed-page.blp:34 src/exm-upgrade-assistant.blp:133 msgid "User-Installed Extensions" msgstr "பயனர் நிறுவிய நீட்டிப்புகள்" #: src/exm-installed-page.blp:51 src/exm-upgrade-assistant.blp:150 msgid "No User Extensions Installed" msgstr "பயனர் நீட்டிப்புகள் எதுவும் நிறுவப்படவில்லை" #: src/exm-installed-page.blp:55 msgid "Browse" msgstr "உலாவுக" #: src/exm-installed-page.blp:69 src/exm-upgrade-assistant.blp:160 msgid "System Extensions" msgstr "கணினி நீட்டிப்புகள்" #: src/exm-installed-page.blp:86 src/exm-upgrade-assistant.blp:177 msgid "No System Extensions Installed" msgstr "கணினி நீட்டிப்புகள் எதுவும் நிறுவப்படவில்லை" #. Translators: Text announced by screen readers when interacting with the list of search results #: src/exm-installed-page.blp:111 msgid "Search Results" msgstr "தேடல் முடிவுகள்" #: src/exm-installed-page.blp:124 msgid "Try a different search or search online" msgstr "வேறு தேடலை முயற்சிக்கவும் அல்லது ஆன்லைனில் தேடவும்" #: src/exm-installed-page.blp:131 msgid "_Search Online" msgstr "_ தேடல் ஆன்லைனில்" #. Translators: '%d' = number of extensions that will be updated #: src/exm-installed-page.c:298 #, c-format msgid "%d extension will be updated on next login" msgid_plural "%d extensions will be updated on next login" msgstr[0] "அடுத்த உள்நுழைவில் %d நீட்டிப்பு புதுப்பிக்கப்படும்" msgstr[1] "அடுத்த உள்நுழைவில் %d நீட்டிப்புகள் புதுப்பிக்கப்படும்" #: src/exm-rating.c:142 #, c-format msgid "%i Star" msgid_plural "%i Stars" msgstr[0] "%நான் விண்மீன்" msgstr[1] "%நான் நட்சத்திரங்கள்" #. Translators: Button's tooltip to zoom out screenshots #: src/exm-screenshot-view.blp:37 msgid "Zoom Out" msgstr "சிறிதாக்கு" #. Translators: Button's tooltip to zoom in screenshots #: src/exm-screenshot-view.blp:51 msgid "Zoom In" msgstr "பெரிதாக்கு" #: src/exm-upgrade-assistant.blp:11 msgid "Upgrade Assistant" msgstr "மேம்படுத்தல் உதவியாளர்" #: src/exm-upgrade-assistant.blp:66 msgid "_Check Compatibility" msgstr "_ இணக்கத்தன்மையை சரிபார்க்கவும்" #: src/exm-upgrade-assistant.blp:189 msgid "_Copy to Clipboard" msgstr "இடைநிலைப்பலகைக்கு நகலெடுக்கவும்" #: src/exm-upgrade-assistant.c:188 #, c-format msgid "Checked %d/%d Extensions" msgstr "சரிபார்க்கப்பட்ட %d/ %d நீட்டிப்புகள்" #. Set percentage text #: src/exm-upgrade-assistant.c:207 #, c-format msgid "%d%% Compatible" msgstr "%d %% இணக்கமானது" #: src/exm-upgrade-assistant.c:223 #, c-format msgid "" "GNOME %s supports %d out of %d of the extensions currently " "installed on the system" msgstr "" " க்னோம் %s தற்போது கணினியில் நிறுவப்பட்ட நீட்டிப்புகளில் %d இல் இருந்து " "%d" #. Translators: Icon's tooltip when an extension is compatible #: src/exm-upgrade-assistant.c:503 msgid "A compatible version of the extension exists" msgstr "நீட்டிப்பின் இணக்கமான பதிப்பு உள்ளது" #. Translators: Icon's tooltip when an extension is not compatible #: src/exm-upgrade-assistant.c:510 msgid "No compatible version of the extension exists" msgstr "நீட்டிப்பின் இணக்கமான பதிப்பு எதுவும் இல்லை" #. Translators: Icon's tooltip when an extension compatibility is unknown #: src/exm-upgrade-assistant.c:517 msgid "" "This extension is not hosted on extensions.gnome.org. Its compatibility " "cannot be determined." msgstr "" "இந்த நீட்டிப்பு extensions.gnome.org இல் ஹோஸ்ட் செய்யப்படவில்லை. அதன் பொருந்தக்கூடிய " "தன்மையை தீர்மானிக்க முடியாது." #: src/exm-upgrade-assistant.c:608 #, c-format msgid "" "You are currently running GNOME %s. Select a version of GNOME below " "and check whether your extensions will continue to be available." msgstr "" "நீங்கள் தற்போது GNOME %s ஐ இயக்குகிறீர்கள். கீழே உள்ள GNOME இன் பதிப்பைத் " "தேர்ந்தெடுத்து, உங்கள் நீட்டிப்புகள் தொடர்ந்து கிடைக்குமா என்பதைச் சரிபார்க்கவும்." #. Translators: Tooltip of the search icon in the header bar #: src/exm-window.blp:39 msgid "Search Installed Extensions" msgstr "நிறுவப்பட்ட நீட்டிப்புகளைத் தேடுங்கள்" #: src/exm-window.blp:48 msgid "Main Menu" msgstr "பட்டியல் விளையாடுங்கள்" #: src/exm-window.blp:59 msgid "Search for installed extensions" msgstr "நிறுவப்பட்ட நீட்டிப்புகளைத் தேடுங்கள்" #: src/exm-window.blp:71 msgctxt "Navigation" msgid "_Installed" msgstr "_ நிறுவப்பட்டது" #: src/exm-window.blp:80 msgctxt "Navigation" msgid "_Browse" msgstr "_ ப்ரோவ்ச்" #. Translators: the character preceded by "_" should not be the same #. as others in the same menu #: src/exm-window.blp:108 msgid "Sort _Enabled First" msgstr "முதலில் வரிசைப்படுத்தப்பட்டது" #: src/exm-window.blp:109 msgid "_Show Unsupported" msgstr "_ ஆதரிக்கப்படாதது" #: src/exm-window.blp:113 msgid "_Upgrade Assistant" msgstr "_அப்பிரேட் உதவியாளர்" #: src/exm-window.blp:114 msgid "_Keyboard Shortcuts" msgstr "விசைப்பலகை குறுக்குவழிகள்" #: src/exm-window.blp:115 msgid "_About Extension Manager" msgstr "நீட்டிப்பு மேலாளர்" #: src/exm-window.blp:120 msgid "Uninstall Extension?" msgstr "நீட்டிப்பு நிறுவல்?" #: src/exm-window.blp:121 msgid "" "The extension's features and functionality will no longer be accessible. Are " "you sure you want to uninstall?" msgstr "" "நீட்டிப்பின் நற்பொருத்தங்கள் மற்றும் செயல்பாடு இனி அணுக முடியாது. நீங்கள் நிச்சயமாக நிறுவல் " "நீக்க விரும்புகிறீர்களா?" #: src/exm-window.blp:126 msgid "_No" msgstr "_ இல்லை" #: src/exm-window.blp:127 msgid "_Yes" msgstr "_Yes" #: src/exm-window.blp:132 msgid "Unsupported Extension" msgstr "ஆதரிக்கப்படாத நீட்டிப்பு" #: src/exm-window.blp:133 msgid "" "This extension does not support your GNOME Shell version. It may cause " "errors if installed." msgstr "" "இந்த நீட்டிப்பு உங்கள் சினோம் செல் பதிப்பை ஆதரிக்காது. நிறுவப்பட்டால் அது பிழைகளை " "ஏற்படுத்தக்கூடும்." #: src/exm-window.blp:139 msgid "_Install Anyway" msgstr "_ எப்படியும் நிறுவவும்" #: src/exm-window.blp:140 msgid "_Go Back" msgstr "திரும்பிச் செல்லுங்கள்" #: src/exm-window.c:348 msgid "_Details" msgstr "_ டெயில்ச்" #: src/web/exm-request-handler.c:99 msgid "" "Check GNOME infrastructure status " "and try again later" msgstr "" " க்னோம் உள்கட்டமைப்பு நிலை ஐ " "சரிபார்த்து மீண்டும் முயற்சிக்கவும்" #: src/web/exm-request-handler.c:100 msgid "Check your network status and try again" msgstr "உங்கள் பிணைய நிலையை சரிபார்த்து மீண்டும் முயற்சிக்கவும்" #~ msgid "Comments" #~ msgstr "கருத்துகள்" #~ msgid "User Reviews" #~ msgstr "பயனர் மதிப்புரைகள்" #~ msgid "No comments yet" #~ msgstr "இன்னும் கருத்துகள் இல்லை" #~ msgid "" #~ "This extension could be activated in session modes such as the login " #~ "screen or the lock screen" #~ msgstr "" #~ "இந்த நீட்டிப்பு உள்நுழைவு திரை அல்லது பூட்டுத் திரை போன்ற அமர்வு முறைகளில் " #~ "செயல்படுத்தப்படலாம்" #, c-format #~ msgid "%s by %s" #~ msgstr "%s %s" #, fuzzy #~| msgid "Updates are available" #~ msgid "Updates Available" #~ msgstr "புதுப்பிப்புகள் கிடைக்கின்றன" #~ msgid "Supported" #~ msgstr "ஆதரிக்கப்பட்டது" #~ msgid "Unknown" #~ msgstr "தெரியாதது" #~ msgid "A utility for managing GNOME Shell Extensions" #~ msgstr "GNOME ஷெல் நீட்டிப்புகளை நிர்வகிப்பதற்கான ஒரு பயன்பாடு" #, c-format #~ msgid "e.g. “%s”" #~ msgstr "எ.கா. “%s“" #~ msgid "This extension is incompatible with your current version of GNOME." #~ msgstr "இந்த நீட்டிப்பு உங்கள் தற்போதைய க்னோம் பதிப்போடு பொருந்தாது." #~ msgid "An error occurred." #~ msgstr "ஒரு பிழை ஏற்பட்டது." #~ msgid "Return to view" #~ msgstr "பார்வைக்குத் திரும்பு" #~ msgid "@app_title@" #~ msgstr "@app_title@" #~ msgid "Fully adaptive mobile-friendly user interface" #~ msgstr "முற்றிலும் தழுவல் மொபைல் நட்பு பயனர் இடைமுகம்" #~ msgid "Paginated search results" #~ msgstr "பக்கத் தேடல் முடிவுகள்" #~ msgid "Upgrade Assistant for checking extension compatibility" #~ msgstr "நீட்டிப்பு இணக்கத்தன்மையை சரிபார்க்க உதவியாளரை மேம்படுத்தவும்" #~ msgid "Unsupported extensions are hidden by default" #~ msgstr "ஆதரிக்கப்படாத நீட்டிப்புகள் இயல்பாகவே மறைக்கப்படும்" #~ msgid "Overhauled error and crash reporting" #~ msgstr "மாற்றியமைக்கப்பட்ட பிழை மற்றும் செயலிழப்பு அறிக்கையிடுதல்" #~ msgid "Full-screen image viewer" #~ msgstr "முழுத்திரை படக் காட்சியாளர்" #~ msgid "Handles new gnome-extensions:// URI scheme" #~ msgstr "புதிய gnome-extensions:// URI திட்டத்தைக் கையாளுகிறது" #~ msgid "Randomised extension suggestions" #~ msgstr "சீரற்ற நீட்டிப்பு பரிந்துரைகள்" #~ msgid "Performance and stability" #~ msgstr "செயல்திறன் மற்றும் நிலைத்தன்மை" #~ msgid "Translation updates" #~ msgstr "மொழிபெயர்ப்பு புதுப்பிப்புகள்" #~ msgid "Various bug fixes" #~ msgstr "பல்வேறு பிழை திருத்தங்கள்" #~ msgid "Remove release notes dialog" #~ msgstr "வெளியீட்டு குறிப்புகள் உரையாடலை அகற்று" #~ msgid "Fix special characters in installed extension listings" #~ msgstr "நிறுவப்பட்ட நீட்டிப்பு பட்டியல்களில் சிறப்பு எழுத்துகளை சரிசெய்யவும்" #~ msgid "The second feature update to extension-manager. Highlights include:" #~ msgstr "நீட்டிப்பு மேலாளருக்கான இரண்டாவது அம்ச புதுப்பிப்பு. சிறப்பம்சங்கள் அடங்கும்:" #~ msgid "View comments and reviews" #~ msgstr "கருத்துகள் மற்றும் மதிப்புரைகளைக் காண்க" #~ msgid "Support for in-app updates" #~ msgstr "பயன்பாட்டில் உள்ள புதுப்பிப்புகளுக்கான ஆதரவு" #~ msgid "Better handling errors and out-of-date extensions" #~ msgstr "சிறந்த கையாளுதல் பிழைகள் மற்றும் காலாவதியான நீட்டிப்புகள்" #~ msgid "Allow installing 'unsupported' extensions" #~ msgstr "'ஆதரவற்ற' நீட்டிப்புகளை நிறுவ அனுமதிக்கவும்" #~ msgid "Display release notes on first run" #~ msgstr "முதல் ஓட்டத்தில் வெளியீட்டு குறிப்புகளைக் காண்பி" #~ msgid "New app icon" #~ msgstr "புதிய ஆப்ஸ் ஐகான்" #~ msgid "Optionally sort extensions by enabled status" #~ msgstr "இயக்கப்பட்ட நிலையின்படி நீட்டிப்புகளை விருப்பமாக வரிசைப்படுத்தவும்" #~ msgid "Fix special characters in search results" #~ msgstr "தேடல் முடிவுகளில் சிறப்பு எழுத்துக்களை சரிசெய்யவும்" #~ msgid "Fixes a crash that sometimes occurs while uninstalling an extension" #~ msgstr "நீட்டிப்பை நிறுவல் நீக்கும் போது சில நேரங்களில் ஏற்படும் செயலிழப்பை சரிசெய்கிறது" #~ msgid "The first feature update to extension-manager. Highlights include:" #~ msgstr "நீட்டிப்பு மேலாளருக்கான முதல் அம்ச புதுப்பிப்பு. சிறப்பம்சங்கள் அடங்கும்:" #~ msgid "Dark theme and support for overriding the system colour scheme" #~ msgstr "டார்க் தீம் மற்றும் கணினி வண்ணத் திட்டத்தை மேலெழுதுவதற்கான ஆதரவு" #~ msgid "Shows screenshots in extension listings" #~ msgstr "நீட்டிப்பு பட்டியல்களில் ஸ்கிரீன்ஷாட்களைக் காட்டுகிறது" #~ msgid "Shell version compatibility check" #~ msgstr "ஷெல் பதிப்பு இணக்கத்தன்மை சோதனை" #~ msgid "Localised into seven languages" #~ msgstr "ஏழு மொழிகளில் மொழிபெயர்க்கப்பட்டது" #~ msgid "Global extension on/off toggle" #~ msgstr "உலகளாவிய நீட்டிப்பு ஆன்/ஆஃப் நிலைமாற்றம்" #~ msgid "Displays user and system extensions separately" #~ msgstr "பயனர் மற்றும் கணினி நீட்டிப்புகளைத் தனித்தனியாகக் காட்டுகிறது" #~ msgid "Extension Manager (Development)" #~ msgstr "நீட்டிப்பு மேலாளர் (மேம்பாடு)" #~ msgid "Popularity" #~ msgstr "பிரபலம்" #~ msgid "Supported Versions" #~ msgstr "ஆதரிக்கப்படும் பதிப்புகள்" #~ msgctxt "Navigation" #~ msgid "Browse" #~ msgstr "உலாவுக" #~ msgid "Theme" #~ msgstr "தீம்" #~ msgid "Follow System" #~ msgstr "சிஸ்டத்தைப் பின்பற்றவும்" #~ msgid "Light" #~ msgstr "ஒளி" #~ msgid "Dark" #~ msgstr "இருட்டு" #~ msgid "Are you sure you want to uninstall?" #~ msgstr "நீங்கள் நிச்சயமாக நிறுவல் நீக்க விரும்புகிறீர்களா?" #~ msgid "" #~ "A very simple tool for browsing, downloading, and managing GNOME shell " #~ "extensions." #~ msgstr "" #~ "க்னோம் ஷெல் நீட்டிப்புகளை உலாவுதல், பதிவிறக்குதல் மற்றும் நிர்வகிப்பதற்கான மிக எளிய " #~ "கருவி." #~ msgid "e.g. \"Blur my Shell\"" #~ msgstr "எ.கா. \"Blur my Shell\"" #~ msgid "What's New" #~ msgstr "புதியது என்ன" #~ msgid "View Release Notes" #~ msgstr "வெளியீட்டு குறிப்புகளைப் பார்க்கவும்" #, c-format #~ msgid "" #~ "This is your first time using Extension Manager %s.\n" #~ "Would you like to see the release notes?" #~ msgstr "" #~ "நீங்கள் நீட்டிப்பு மேலாளர் %s ஐப் பயன்படுத்துவது இதுவே முதல் முறை.\n" #~ "வெளியீட்டு குறிப்புகளைப் பார்க்க விரும்புகிறீர்களா?" extension-manager-0.6.3/po/tr.po000066400000000000000000000565451477302130300165660ustar00rootroot00000000000000# translation of extension-manager to Turkish # Copyright (C) 2022 extension-manager's COPYRIGHT HOLDER # This file is distributed under the same license as the extension-manager package. # # Onur Ankut , 2022. # Sabri Ünal , 2022. # AlphaBeta1 , 2024. msgid "" msgstr "" "Project-Id-Version: extension-manager\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-03-06 16:36+0000\n" "PO-Revision-Date: 2024-11-05 12:14+0000\n" "Last-Translator: AlphaBeta1 \n" "Language-Team: Turkish \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: Weblate 5.8.2\n" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:2 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:6 #: src/exm-window.blp:7 msgid "Extension Manager" msgstr "Uzantı Yöneticisi" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:11 msgid "Manage GNOME Shell Extensions" msgstr "GNOME Shell Uzantılarını yönetin" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #. Make sure to leave the original strings and add your translations afterwards, so that users can search both in English and your language. #: data/com.mattjakeman.ExtensionManager.desktop.in.in:14 msgid "extension;manager;shell;" msgstr "extension;manager;shell;uzantı;yönetici;kabuk;" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:7 msgid "Browse, install, and manage GNOME Shell Extensions" msgstr "GNOME Shell Uzantılarını keşfedin, kurun ve yönetin" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:13 msgid "A utility for browsing and installing GNOME Shell Extensions." msgstr "" "GNOME Shell Uzantılarını keşfetmeniz ve kurmanız için yardımcı bir program." #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:14 msgid "Features:" msgstr "Özellikler:" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:16 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:26 msgid "Browse extensions.gnome.org right inside the app" msgstr "Doğrudan uygulamanın içinden extensions.gnome.org'a göz atın" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:17 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:22 msgid "Manage the extensions you already have installed" msgstr "Zaten kurmuş olduğunuz uzantıları yönetin" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:30 #, fuzzy #| msgid "Search for extensions" msgid "See all the details of your extensions" msgstr "Uzantı arayın" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:34 #, fuzzy #| msgid "This extension is incompatible with your current version of GNOME" msgid "Check your extensions compatibility with the next version of GNOME" msgstr "Bu uzantı şu anki GNOME sürümünüz ile uyumsuz" #: src/exm-application.c:201 msgid "Browse, install, and manage GNOME Shell Extensions." msgstr "GNOME Shell Uzantılarını keşfedin, kurun ve yönetin." #. Translators: Use 'Name email@domain.com' or 'Name https://website.example' (without single quotes). Do not delete existing names, write yours on a new line. #: src/exm-application.c:204 msgid "translator-credits" msgstr "" "Onur Ankut \n" "Sabri Ünal \n" "Oğuz Ersen " #: src/exm-browse-page.blp:16 #, fuzzy #| msgid "Search for extensions" msgid "Search for Extensions" msgstr "Uzantı arayın" #: src/exm-browse-page.blp:17 #, fuzzy #| msgid "" #| "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell " #| "Extensions." msgid "" "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell Extensions" msgstr "" "'extensions.gnome.org'da GNOME Shell uzantılarını aramak için bir sözcük " "girin." #: src/exm-browse-page.blp:47 msgid "Relevance" msgstr "İlgi" #: src/exm-browse-page.blp:48 msgctxt "Sort search results" msgid "Downloads" msgstr "İndirilenler" #: src/exm-browse-page.blp:49 msgid "Recent" msgstr "Yeni çıkanlar" #: src/exm-browse-page.blp:50 src/exm-detail-view.blp:113 msgid "Name" msgstr "Ada göre" #: src/exm-browse-page.blp:57 msgid "Sort search results" msgstr "Arama sonuçlarını sıralama" #: src/exm-browse-page.blp:103 msgid "_Load More Results" msgstr "Daha Fazla Sonuç _Yükle" #: src/exm-browse-page.blp:137 src/exm-installed-page.blp:123 msgid "No Results Found" msgstr "Sonuç Bulunamadı" #: src/exm-browse-page.blp:144 msgid "Try a different search" msgstr "" #: src/exm-browse-page.blp:178 src/exm-comment-dialog.blp:34 #: src/exm-detail-view.blp:49 src/exm-detail-view.blp:291 #: src/exm-upgrade-assistant.blp:100 msgid "Connection Error" msgstr "" #: src/exm-comment-dialog.blp:13 src/exm-detail-view.blp:248 #, fuzzy #| msgid "There are no comments." msgid "Reviews and Comments" msgstr "Yorum yok." #: src/exm-comment-dialog.blp:25 #, fuzzy #| msgid "Loading…" msgid "Loading" msgstr "Yükleniyor…" #: src/exm-comment-tile.blp:30 src/exm-detail-view.blp:127 msgid "Author" msgstr "Yazar" #: src/exm-detail-view.blp:40 msgid "Loading Details" msgstr "Ayrıntılar Yükleniyor" #: src/exm-detail-view.blp:59 src/exm-window.c:347 msgid "An Error Occurred" msgstr "Hata Oluştu" #: src/exm-detail-view.blp:60 #, fuzzy #| msgid "A newer version of this extension is available" msgid "No extension details available" msgstr "Uzantının yeni bir sürümü var" #: src/exm-detail-view.blp:154 #, fuzzy #| msgid "Enlarge image" msgid "Enlarge Image" msgstr "Resmi genişlet" #: src/exm-detail-view.blp:172 src/exm-extension-row.blp:89 msgid "Description" msgstr "Açıklama" #: src/exm-detail-view.blp:195 msgid "Links" msgstr "Bağlantılar" #: src/exm-detail-view.blp:203 msgid "Homepage" msgstr "Ana Sayfa" #: src/exm-detail-view.blp:219 msgid "Donate" msgstr "Bağış" #: src/exm-detail-view.blp:228 msgid "View on Extensions" msgstr "Uzantılar Sitesinde Görüntüle" #: src/exm-detail-view.blp:271 msgid "Reviews and comments are disabled for this extension" msgstr "" #: src/exm-detail-view.blp:314 #, fuzzy #| msgid "There are no comments." msgid "There are no reviews or comments" msgstr "Yorum yok." #: src/exm-detail-view.blp:343 #, fuzzy #| msgid "_Show All Reviews" msgid "_Show All" msgstr "Tüm Yorumları _Göster" #. Translators: '%s' = extension name #: src/exm-detail-view.c:445 #, c-format msgid "%s Icon" msgstr "" #. Translators: '%s' = extension name #: src/exm-detail-view.c:478 #, c-format msgid "%s Screenshot" msgstr "" #: src/exm-error-dialog.blp:7 msgid "Error Report" msgstr "Hata Raporla" #: src/exm-error-dialog.blp:22 msgid "An unexpected error occurred in Extension Manager" msgstr "Uzantı Yöneticisi'nde beklenmedik bir hata oluştu" #: src/exm-error-dialog.blp:36 #, fuzzy #| msgid "_Copy to Clipboard" msgid "Copy to Clipboard" msgstr "Panoya _Kopyala" #: src/exm-error-dialog.blp:77 msgid "_New Issue" msgstr "_Yeni Hata" #. Success indicator #: src/exm-error-dialog.c:125 src/exm-upgrade-assistant.c:347 msgid "Copied" msgstr "Kopyalandı" #: src/exm-error-dialog.c:173 msgid "Please open a new issue and attach the following information:" msgstr "Lütfen yeni bir konu açın ve aşağıdaki bilgileri ekleyin:" #. Translators: '%s' = Name of Distributor (e.g. "Packager123") #: src/exm-error-dialog.c:177 #, c-format msgid "" "You are using a third-party build of Extension Manager. Please contact the package distributor (%s) first before " "filing an issue. Be sure to attach the following information:" msgstr "" "Uzantı Yöneticisi'nin üçüncü tarafca yapılmış bir derlemesini " "kullanıyorsunuz. Lütfen sorun bildirmeden önce paket " "dağıtıcısı (%s) ile iletişime geçin. Aşağıdaki bilgileri " "eklediğinizden emin olun:" #. Translators: Button's tooltip to open extension's preferences dialog #: src/exm-extension-row.blp:28 msgid "Open extension preferences" msgstr "Uzantı tercihlerini aç" #. Translators: Icon's tooltip when an extension has an error #: src/exm-extension-row.blp:46 msgid "An error occurred while loading this extension" msgstr "Uzantı yüklenirken hata oluştu" #. Translators: Icon's tooltip when an extension is incompatible #: src/exm-extension-row.blp:63 src/exm-install-button.c:117 msgid "This extension is incompatible with your current version of GNOME" msgstr "Bu uzantı şu anki GNOME sürümünüz ile uyumsuz" #. Translators: Icon's tooltip when an extension update is available #: src/exm-extension-row.blp:80 msgid "A newer version of this extension is available" msgstr "Uzantının yeni bir sürümü var" #: src/exm-extension-row.blp:98 src/exm-info-bar.blp:50 msgid "Version" msgstr "Sürüm" #: src/exm-extension-row.blp:107 msgid "Session Modes" msgstr "" #: src/exm-extension-row.blp:137 msgid "Error" msgstr "Hata" #: src/exm-extension-row.blp:158 msgid "See Details" msgstr "Ayrıntıları Görüntüle" #: src/exm-extension-row.blp:169 msgid "Remove…" msgstr "Kaldır…" #: src/exm-extension-row.c:175 msgid "Unlock Dialog" msgstr "" #. Translators: GNOME Display Manager #: src/exm-extension-row.c:181 msgid "GDM" msgstr "" #. Translators: Label when an extension runs on both, login and lock screens #: src/exm-extension-row.c:189 msgid "" "This extension will run while the screen is locked and no user is logged in" msgstr "" #. Translators: Label when an extension runs on the lock screen #: src/exm-extension-row.c:194 msgid "This extension will run while the screen is locked" msgstr "" #. Translators: Label when an extension runs on the login screen #: src/exm-extension-row.c:199 #, fuzzy #| msgid "One extension will be updated on next login." #| msgid_plural "%d extensions will be updated on next login." msgid "This extension will run while no user is logged in" msgstr "%d uzantı sonraki girişte güncellenecek." #: src/exm-help-overlay.blp:11 msgctxt "shortcut window" msgid "General" msgstr "" #: src/exm-help-overlay.blp:14 #, fuzzy #| msgctxt "State" #| msgid "Installed" msgctxt "shortcut window" msgid "Show Installed Page" msgstr "Kurulu" #: src/exm-help-overlay.blp:19 msgctxt "shortcut window" msgid "Show Browse Page" msgstr "" #: src/exm-help-overlay.blp:24 msgctxt "shortcut window" msgid "Toggle Search" msgstr "" #: src/exm-help-overlay.blp:29 msgctxt "shortcut window" msgid "Show Keyboard Shortcuts" msgstr "" #: src/exm-help-overlay.blp:34 msgctxt "shortcut window" msgid "Close Window" msgstr "" #: src/exm-help-overlay.blp:39 msgctxt "shortcut window" msgid "Quit" msgstr "" #: src/exm-help-overlay.blp:45 msgctxt "shortcut window" msgid "Screenshot View" msgstr "" #: src/exm-help-overlay.blp:48 src/exm-help-overlay.blp:63 #, fuzzy #| msgid "Zoom In" msgctxt "shortcut window" msgid "Zoom In" msgstr "Yakınlaştır" #: src/exm-help-overlay.blp:53 src/exm-help-overlay.blp:68 #, fuzzy #| msgid "Zoom Out" msgctxt "shortcut window" msgid "Zoom Out" msgstr "Uzaklaştır" #: src/exm-help-overlay.blp:58 msgctxt "shortcut window" msgid "Reset Zoom" msgstr "" #: src/exm-info-bar.blp:28 msgctxt "Number of downloads" msgid "Downloads" msgstr "İndirilenler" #: src/exm-info-bar.c:107 msgid "Unsupported" msgstr "Desteklenmiyor" #: src/exm-install-button.c:127 msgid "Install…" msgstr "Kur…" #: src/exm-install-button.c:132 #, fuzzy #| msgctxt "State" #| msgid "Installed" msgid "Installing" msgstr "Kurulu" #: src/exm-install-button.c:136 msgctxt "State" msgid "Installed" msgstr "Kurulu" #: src/exm-install-button.c:140 #, fuzzy #| msgid "Unsupported" msgid "Unsupported…" msgstr "Desteklenmiyor" #: src/exm-installed-page.blp:16 #, fuzzy #| msgid "Log Out" msgid "_Log Out…" msgstr "Oturumu Kapat" #: src/exm-installed-page.blp:28 msgid "Use Extensions" msgstr "Uzantıları Kullan" #: src/exm-installed-page.blp:29 #, fuzzy #| msgid "Extensions can cause performance and stability issues." msgid "Extensions can cause performance and stability issues" msgstr "Uzantılar başarım ve kararlılık sorunlarına neden olabilir." #: src/exm-installed-page.blp:34 src/exm-upgrade-assistant.blp:133 msgid "User-Installed Extensions" msgstr "Kurulu Uzantılarınız" #: src/exm-installed-page.blp:51 src/exm-upgrade-assistant.blp:150 #, fuzzy #| msgid "There are no user extensions installed." msgid "No User Extensions Installed" msgstr "Kurulu kullanıcı uzantısı yok." #: src/exm-installed-page.blp:55 msgid "Browse" msgstr "Göz At" #: src/exm-installed-page.blp:69 src/exm-upgrade-assistant.blp:160 msgid "System Extensions" msgstr "Sistem Uzantıları" #: src/exm-installed-page.blp:86 src/exm-upgrade-assistant.blp:177 #, fuzzy #| msgid "There are no system extensions installed." msgid "No System Extensions Installed" msgstr "Kurulu sistem uzantısı yok." #. Translators: Text announced by screen readers when interacting with the list of search results #: src/exm-installed-page.blp:111 #, fuzzy #| msgid "Sort search results" msgid "Search Results" msgstr "Arama sonuçlarını sıralama" #: src/exm-installed-page.blp:124 msgid "Try a different search or search online" msgstr "" #: src/exm-installed-page.blp:131 msgid "_Search Online" msgstr "" #. Translators: '%d' = number of extensions that will be updated #: src/exm-installed-page.c:298 #, fuzzy, c-format #| msgid "One extension will be updated on next login." #| msgid_plural "%d extensions will be updated on next login." msgid "%d extension will be updated on next login" msgid_plural "%d extensions will be updated on next login" msgstr[0] "%d uzantı sonraki girişte güncellenecek." #: src/exm-rating.c:142 #, c-format msgid "%i Star" msgid_plural "%i Stars" msgstr[0] "" #. Translators: Button's tooltip to zoom out screenshots #: src/exm-screenshot-view.blp:37 msgid "Zoom Out" msgstr "Uzaklaştır" #. Translators: Button's tooltip to zoom in screenshots #: src/exm-screenshot-view.blp:51 msgid "Zoom In" msgstr "Yakınlaştır" #: src/exm-upgrade-assistant.blp:11 msgid "Upgrade Assistant" msgstr "Yükseltme Yardımcısı" #: src/exm-upgrade-assistant.blp:66 msgid "_Check Compatibility" msgstr "Uyumluluğu _Denetle" #: src/exm-upgrade-assistant.blp:189 msgid "_Copy to Clipboard" msgstr "Panoya _Kopyala" #: src/exm-upgrade-assistant.c:188 #, c-format msgid "Checked %d/%d Extensions" msgstr "%d/%d Uzantı Denetlendi" #. Set percentage text #: src/exm-upgrade-assistant.c:207 #, c-format msgid "%d%% Compatible" msgstr "%%%d Uyumlu" #: src/exm-upgrade-assistant.c:223 #, fuzzy, c-format #| msgid "" #| "GNOME %s supports %d out of %d of the extensions currently " #| "installed on the system." msgid "" "GNOME %s supports %d out of %d of the extensions currently " "installed on the system" msgstr "" "GNOME %s, sistemde kurulu olan %d / %d eklentiyi destekliyor." #. Translators: Icon's tooltip when an extension is compatible #: src/exm-upgrade-assistant.c:503 #, fuzzy #| msgid "A compatible version of the extension exists." msgid "A compatible version of the extension exists" msgstr "Uzantının uyumlu bir sürümü var." #. Translators: Icon's tooltip when an extension is not compatible #: src/exm-upgrade-assistant.c:510 #, fuzzy #| msgid "No compatible version of the extension exists." msgid "No compatible version of the extension exists" msgstr "Uzantının uyumlu bir sürümü yok." #. Translators: Icon's tooltip when an extension compatibility is unknown #: src/exm-upgrade-assistant.c:517 msgid "" "This extension is not hosted on extensions.gnome.org. Its compatibility " "cannot be determined." msgstr "" "Bu uzantı extensions.gnome.org sitesinde barındırılmıyor. Uyumluluğu " "belirlenemiyor." #: src/exm-upgrade-assistant.c:608 #, c-format msgid "" "You are currently running GNOME %s. Select a version of GNOME below " "and check whether your extensions will continue to be available." msgstr "" "GNOME %s kullanıyorsunuz. Aşağıdan bir GNOME sürümü seçin ve " "uzantılarınızın kullanılabilir olmaya devam edip etmeyeceğini denetleyin." #. Translators: Tooltip of the search icon in the header bar #: src/exm-window.blp:39 #, fuzzy #| msgid "User-Installed Extensions" msgid "Search Installed Extensions" msgstr "Kurulu Uzantılarınız" #: src/exm-window.blp:48 msgid "Main Menu" msgstr "Ana Menü" #: src/exm-window.blp:59 #, fuzzy #| msgid "Search for extensions" msgid "Search for installed extensions" msgstr "Uzantı arayın" #: src/exm-window.blp:71 msgctxt "Navigation" msgid "_Installed" msgstr "_Kurulu" #: src/exm-window.blp:80 msgctxt "Navigation" msgid "_Browse" msgstr "_Göz At" #. Translators: the character preceded by "_" should not be the same #. as others in the same menu #: src/exm-window.blp:108 msgid "Sort _Enabled First" msgstr "_Etkinleri Önce Sırala" #: src/exm-window.blp:109 msgid "_Show Unsupported" msgstr "Desteklenmeyenleri _Göster" #: src/exm-window.blp:113 msgid "_Upgrade Assistant" msgstr "_Yükseltme Yardımcısı" #: src/exm-window.blp:114 msgid "_Keyboard Shortcuts" msgstr "" #: src/exm-window.blp:115 msgid "_About Extension Manager" msgstr "Uzantı Yöneticisi _Hakkında" #: src/exm-window.blp:120 msgid "Uninstall Extension?" msgstr "Uzantı Kaldırılsın Mı?" #: src/exm-window.blp:121 msgid "" "The extension's features and functionality will no longer be accessible. Are " "you sure you want to uninstall?" msgstr "" "Uzantının özelliklerine ve işlevlerine artık erişilemeyecektir. Kaldırmak " "istediğinizden emin misiniz?" #: src/exm-window.blp:126 msgid "_No" msgstr "_Hayır" #: src/exm-window.blp:127 msgid "_Yes" msgstr "_Evet" #: src/exm-window.blp:132 msgid "Unsupported Extension" msgstr "Desteklenmeyen Uzantı" #: src/exm-window.blp:133 msgid "" "This extension does not support your GNOME Shell version. It may cause " "errors if installed." msgstr "" "Bu uzantı GNOME Shell sürümünüzü desteklemiyor. Kurulması hatalara denen " "olabilir." #: src/exm-window.blp:139 msgid "_Install Anyway" msgstr "Yine De _Kur" #: src/exm-window.blp:140 msgid "_Go Back" msgstr "Geri _Git" #: src/exm-window.c:348 #, fuzzy #| msgid "Details" msgid "_Details" msgstr "Ayrıntılar" #: src/web/exm-request-handler.c:99 msgid "" "Check GNOME infrastructure status " "and try again later" msgstr "" #: src/web/exm-request-handler.c:100 msgid "Check your network status and try again" msgstr "" #~ msgid "Comments" #~ msgstr "Yorumlar" #~ msgid "Loading Comments" #~ msgstr "Yorumlar Yükleniyor" #~ msgid "User Reviews" #~ msgstr "Kullanıcı Yorumları" #, fuzzy #~| msgid "Comments" #~ msgid "No comments yet" #~ msgstr "Yorumlar" #, fuzzy #~| msgid "Updates are available" #~ msgid "Updates Available" #~ msgstr "Güncellemeler var" #~ msgid "Supported" #~ msgstr "Destekleniyor" #~ msgid "Unknown" #~ msgstr "Bilinmeyen" #~ msgid "A utility for managing GNOME Shell Extensions" #~ msgstr "GNOME Shell Uzantılarını yönetmeniz için yardımcı bir program" #, c-format #~ msgid "e.g. “%s”" #~ msgstr "ör: “%s”" #~ msgid "This extension is incompatible with your current version of GNOME." #~ msgstr "Bu uzantı şu anki GNOME sürümünüz ile uyumsuz." #~ msgid "An error occurred." #~ msgstr "Hata oluştu." #~ msgid "Return to view" #~ msgstr "Görünüme geri dön" #~ msgid "@app_title@" #~ msgstr "@app_title@" #~ msgid "HOTFIX: Fix broken 'recent' and 'popularity' search filters" #~ msgstr "" #~ "HOTFIX: Bozuk 'Yeni çıkanlar' ve 'çok oylananlar' arama süzgeçleri " #~ "düzeltildi" #~ msgid "Various stability and correctness fixes" #~ msgstr "Çeşitli kararlılık ve doğruluk düzeltmeleri" #~ msgid "Translation updates" #~ msgstr "Çeviri güncellemeleri" #~ msgid "Upgrade Assistant scroll fix" #~ msgstr "Yükseltme yardımcısı kaydırması düzeltildi" #~ msgid "Pixel perfect app icon" #~ msgstr "Piksel mükemmelliğinde uygulama simgesi" #~ msgid "Official snap support" #~ msgstr "Snap desteği iyileştirildi" #~ msgid "Improved error log generation" #~ msgstr "Hata günlüğü oluşturma iyileştirildi" #~ msgid "Fully adaptive mobile-friendly user interface" #~ msgstr "Tamamen uyarlanabilir mobil dostu kullanıcı arayüzü" #~ msgid "Paginated search results" #~ msgstr "Sayfalanmış arama sonuçları" #~ msgid "Upgrade Assistant for checking extension compatibility" #~ msgstr "Uzantı uyumluluğunu denetlemek etmek için Yükseltme Yardımcısı" #~ msgid "Unsupported extensions are hidden by default" #~ msgstr "Desteklenmeyen uzantılar öntanımlı olarak gizlenir" #~ msgid "Overhauled error and crash reporting" #~ msgstr "Elden geçirilmiş hata ve çökme raporlaması" #~ msgid "Full-screen image viewer" #~ msgstr "Tam ekran görüntü gösterici" #~ msgid "Handles new gnome-extensions:// URI scheme" #~ msgstr "Yeni gnome-extensions:// URI şemalarını işleme" #~ msgid "Randomised extension suggestions" #~ msgstr "Rastgele uzantı önerimi" #~ msgid "Performance and stability" #~ msgstr "Performans ve kararlılık" #~ msgid "Various bug fixes" #~ msgstr "Çeşitli hata düzeltmeleri" #~ msgid "Remove release notes dialog" #~ msgstr "Sürüm notları iletişim kutusu kaldırıldı" #~ msgid "Fix special characters in installed extension listings" #~ msgstr "Kurulu eklentiler listesinde özel karakterleri düzelt" #~ msgid "The second feature update to extension-manager. Highlights include:" #~ msgstr "" #~ "Uzantı Yöneticisi'nin ikinci özellik güncellemesi. Öne çıkanlar arasında:" #~ msgid "View comments and reviews" #~ msgstr "Yorumları görüntüle" #~ msgid "Support for in-app updates" #~ msgstr "Uygulama içi güncelleme desteği" #~ msgid "Better handling errors and out-of-date extensions" #~ msgstr "Hataların ve tarihi geçmiş uzantıların daha iyi yönetimi" #~ msgid "Allow installing 'unsupported' extensions" #~ msgstr "'Desteklenmeyen' uzantıların kurulmasına izin ver" #~ msgid "Display release notes on first run" #~ msgstr "İlk çalıştırmada sürüm notlarını görüntüle" #~ msgid "New app icon" #~ msgstr "Yeni uygulama simgesi" #~ msgid "Optionally sort extensions by enabled status" #~ msgstr "İsteğe bağlı olarak uzantıları etkin duruma göre sırala" #~ msgid "Fix special characters in search results" #~ msgstr "Arama sonuçlarında özel karakterleri düzelt" #~ msgid "Fixes a crash that sometimes occurs while uninstalling an extension" #~ msgstr "Bir uzantıyı kaldırırken bazen ortaya çıkan çökme durumu düzeltildi" #~ msgid "The first feature update to extension-manager. Highlights include:" #~ msgstr "" #~ "Uzantı Yöneticisi'nin ilk özellik güncellemesi. Öne çıkanlar arasında:" #~ msgid "Dark theme and support for overriding the system colour scheme" #~ msgstr "Koyu tema ve sistem renk şemasını geçersiz kılma desteği" #~ msgid "Shows screenshots in extension listings" #~ msgstr "Uzantı listelerinde ekran görüntülerini gösterir" #~ msgid "Shell version compatibility check" #~ msgstr "Shell sürüm uyumluluğu denetimi" #~ msgid "Localised into seven languages" #~ msgstr "Yedi dilde yerelleştirildi" #~ msgid "Global extension on/off toggle" #~ msgstr "Evrensel uzantı açma/kapama ayarı" #~ msgid "Displays user and system extensions separately" #~ msgstr "Kullanıcı ve sistem uzantılarını ayrı ayrı görüntüler" #~ msgid "Extension Manager (Development)" #~ msgstr "Uzantı Yöneticisi (Geliştirme)" #~ msgid "Popularity" #~ msgstr "Çok oylananlar" #~ msgid "Supported Versions" #~ msgstr "Desteklenen Sürümler" extension-manager-0.6.3/po/uk.po000066400000000000000000000712311477302130300165450ustar00rootroot00000000000000# Ukrainian translation for extension-manager. # Copyright (C) 2023 THE extension-manager COPYRIGHT HOLDER # This file is distributed under the same license as the extension-manager package. # volkov , 2023. # Володимир Давибіда , 2024. # volkov , 2024. # Максим Горпиніч , 2025. # Volodymyr Davybida , 2025. msgid "" msgstr "" "Project-Id-Version: extension-manager\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-03-06 16:36+0000\n" "PO-Revision-Date: 2025-02-24 10:03+0000\n" "Last-Translator: Максим Горпиніч \n" "Language-Team: Ukrainian \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=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: Weblate 5.10.1-dev\n" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:2 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:6 #: src/exm-window.blp:7 msgid "Extension Manager" msgstr "Менеджер розширень" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:11 msgid "Manage GNOME Shell Extensions" msgstr "Керуйте розширеннями оболонки GNOME" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #. Make sure to leave the original strings and add your translations afterwards, so that users can search both in English and your language. #: data/com.mattjakeman.ExtensionManager.desktop.in.in:14 msgid "extension;manager;shell;" msgstr "" "extension;manager;shell;розширення;менеджер;гном;додатки;кастомізація;" "налаштування;оболонка;" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:7 msgid "Browse, install, and manage GNOME Shell Extensions" msgstr "Шукайте, встановлюйте та керуйте розширеннями оболонки GNOME" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:13 msgid "A utility for browsing and installing GNOME Shell Extensions." msgstr "Програма для пошуку та встановлення розширень оболонки GNOME." #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:14 msgid "Features:" msgstr "Функції:" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:16 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:26 msgid "Browse extensions.gnome.org right inside the app" msgstr "Шукайте розширення з extensions.gnome.org прямо у додатку" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:17 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:22 msgid "Manage the extensions you already have installed" msgstr "Керуйте уже встановленими розширеннями" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:30 msgid "See all the details of your extensions" msgstr "Детальна інформація щодо ваших розширень" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:34 msgid "Check your extensions compatibility with the next version of GNOME" msgstr "Перевірте сумісність ваших розширень із наступною версією GNOME" #: src/exm-application.c:201 msgid "Browse, install, and manage GNOME Shell Extensions." msgstr "Шукайте, встановлюйте та керуйте розширеннями оболонки GNOME." #. Translators: Use 'Name email@domain.com' or 'Name https://website.example' (without single quotes). Do not delete existing names, write yours on a new line. #: src/exm-application.c:204 msgid "translator-credits" msgstr "" "volkov \n" "Onatari " #: src/exm-browse-page.blp:16 msgid "Search for Extensions" msgstr "Пошук розширень" #: src/exm-browse-page.blp:17 msgid "" "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell Extensions" msgstr "" "Введіть ключове слово для пошуку розширень з 'extensions.gnome.org' для " "оболонки GNOME" #: src/exm-browse-page.blp:47 msgid "Relevance" msgstr "За актуальністю" #: src/exm-browse-page.blp:48 msgctxt "Sort search results" msgid "Downloads" msgstr "За кількістю завантажень" #: src/exm-browse-page.blp:49 msgid "Recent" msgstr "За датою оновлення" #: src/exm-browse-page.blp:50 src/exm-detail-view.blp:113 msgid "Name" msgstr "За назвою" #: src/exm-browse-page.blp:57 msgid "Sort search results" msgstr "Сортування результатів пошуку" #: src/exm-browse-page.blp:103 msgid "_Load More Results" msgstr "_Завантажити більше результатів" #: src/exm-browse-page.blp:137 src/exm-installed-page.blp:123 msgid "No Results Found" msgstr "Нічого не знайдено" #: src/exm-browse-page.blp:144 msgid "Try a different search" msgstr "Спробуйте інший пошуковий запит" #: src/exm-browse-page.blp:178 src/exm-comment-dialog.blp:34 #: src/exm-detail-view.blp:49 src/exm-detail-view.blp:291 #: src/exm-upgrade-assistant.blp:100 msgid "Connection Error" msgstr "Помилка підключення" #: src/exm-comment-dialog.blp:13 src/exm-detail-view.blp:248 msgid "Reviews and Comments" msgstr "Відгуки та коментарі" #: src/exm-comment-dialog.blp:25 msgid "Loading" msgstr "Завантаження" #: src/exm-comment-tile.blp:30 src/exm-detail-view.blp:127 msgid "Author" msgstr "Автор" #: src/exm-detail-view.blp:40 msgid "Loading Details" msgstr "Завантажуємо подробиці" #: src/exm-detail-view.blp:59 src/exm-window.c:347 msgid "An Error Occurred" msgstr "Сталася помилка" #: src/exm-detail-view.blp:60 msgid "No extension details available" msgstr "Дані щодо цього розширення відсутні" #: src/exm-detail-view.blp:154 msgid "Enlarge Image" msgstr "Збільшити зображення" #: src/exm-detail-view.blp:172 src/exm-extension-row.blp:89 msgid "Description" msgstr "Опис" #: src/exm-detail-view.blp:195 msgid "Links" msgstr "Посилання" #: src/exm-detail-view.blp:203 msgid "Homepage" msgstr "Домашня сторінка" #: src/exm-detail-view.blp:219 msgid "Donate" msgstr "Пожертвувати" #: src/exm-detail-view.blp:228 msgid "View on Extensions" msgstr "Переглянути на сайті Extensions" #: src/exm-detail-view.blp:271 msgid "Reviews and comments are disabled for this extension" msgstr "Відгуки та коментарі для цього розширення вимкнено" #: src/exm-detail-view.blp:314 msgid "There are no reviews or comments" msgstr "Відгуків і коментарів немає" #: src/exm-detail-view.blp:343 msgid "_Show All" msgstr "_Показати все" #. Translators: '%s' = extension name #: src/exm-detail-view.c:445 #, c-format msgid "%s Icon" msgstr "Піктограмма розширення %s" #. Translators: '%s' = extension name #: src/exm-detail-view.c:478 #, c-format msgid "%s Screenshot" msgstr "Скриншоти розширення %s" #: src/exm-error-dialog.blp:7 msgid "Error Report" msgstr "Звіт про помилку" #: src/exm-error-dialog.blp:22 msgid "An unexpected error occurred in Extension Manager" msgstr "Неочікувана помилка сталася у Менеджері розширень" #: src/exm-error-dialog.blp:36 msgid "Copy to Clipboard" msgstr "Копіювати в буфер обміну" #: src/exm-error-dialog.blp:77 msgid "_New Issue" msgstr "_Новий звіт" #. Success indicator #: src/exm-error-dialog.c:125 src/exm-upgrade-assistant.c:347 msgid "Copied" msgstr "Скопійовано" #: src/exm-error-dialog.c:173 msgid "Please open a new issue and attach the following information:" msgstr "" "Будь ласка, створіть новий звіт про помилку та додайте до нього наступну " "інформацію:" #. Translators: '%s' = Name of Distributor (e.g. "Packager123") #: src/exm-error-dialog.c:177 #, c-format msgid "" "You are using a third-party build of Extension Manager. Please contact the package distributor (%s) first before " "filing an issue. Be sure to attach the following information:" msgstr "" "Ви використовуєте сторонню збірку Менеджера розширень. Будь ласка, перед тим " "як звітувати, спочатку, зверніться до постачальника " "(%s) . Не забудьте додати наступну інформацію:" #. Translators: Button's tooltip to open extension's preferences dialog #: src/exm-extension-row.blp:28 msgid "Open extension preferences" msgstr "Відкрити налаштування розширення" #. Translators: Icon's tooltip when an extension has an error #: src/exm-extension-row.blp:46 msgid "An error occurred while loading this extension" msgstr "Сталася помилка при завантаженні цього розширення" #. Translators: Icon's tooltip when an extension is incompatible #: src/exm-extension-row.blp:63 src/exm-install-button.c:117 msgid "This extension is incompatible with your current version of GNOME" msgstr "Це розширення не сумісне з вашою поточною версією GNOME" #. Translators: Icon's tooltip when an extension update is available #: src/exm-extension-row.blp:80 msgid "A newer version of this extension is available" msgstr "Доступна нова версія цього розширення" #: src/exm-extension-row.blp:98 src/exm-info-bar.blp:50 msgid "Version" msgstr "Версія" #: src/exm-extension-row.blp:107 msgid "Session Modes" msgstr "Режими сесії" #: src/exm-extension-row.blp:137 msgid "Error" msgstr "Помилка" #: src/exm-extension-row.blp:158 msgid "See Details" msgstr "Подробиці" #: src/exm-extension-row.blp:169 msgid "Remove…" msgstr "Видалити…" #: src/exm-extension-row.c:175 msgid "Unlock Dialog" msgstr "Діалог розблокування" #. Translators: GNOME Display Manager #: src/exm-extension-row.c:181 msgid "GDM" msgstr "GDM" #. Translators: Label when an extension runs on both, login and lock screens #: src/exm-extension-row.c:189 msgid "" "This extension will run while the screen is locked and no user is logged in" msgstr "" "Це розширення працюватиме, коли екран заблоковано, а користувачі не ввійшли " "в систему" #. Translators: Label when an extension runs on the lock screen #: src/exm-extension-row.c:194 msgid "This extension will run while the screen is locked" msgstr "Це розширення працюватиме, коли екран заблоковано" #. Translators: Label when an extension runs on the login screen #: src/exm-extension-row.c:199 msgid "This extension will run while no user is logged in" msgstr "Це розширення працюватиме, поки жоден користувач не ввійшов у систему" #: src/exm-help-overlay.blp:11 msgctxt "shortcut window" msgid "General" msgstr "Загальні" #: src/exm-help-overlay.blp:14 msgctxt "shortcut window" msgid "Show Installed Page" msgstr "Показати сторінку 'Встановлені'" #: src/exm-help-overlay.blp:19 msgctxt "shortcut window" msgid "Show Browse Page" msgstr "Показати сторінку 'Пошук'" #: src/exm-help-overlay.blp:24 msgctxt "shortcut window" msgid "Toggle Search" msgstr "Перемкнути пошук" #: src/exm-help-overlay.blp:29 msgctxt "shortcut window" msgid "Show Keyboard Shortcuts" msgstr "Показати клавіатурні скорочення" #: src/exm-help-overlay.blp:34 msgctxt "shortcut window" msgid "Close Window" msgstr "Закрити вікно" #: src/exm-help-overlay.blp:39 msgctxt "shortcut window" msgid "Quit" msgstr "Вийти" #: src/exm-help-overlay.blp:45 msgctxt "shortcut window" msgid "Screenshot View" msgstr "Перегляд скриншотів" #: src/exm-help-overlay.blp:48 src/exm-help-overlay.blp:63 msgctxt "shortcut window" msgid "Zoom In" msgstr "Збільшити" #: src/exm-help-overlay.blp:53 src/exm-help-overlay.blp:68 msgctxt "shortcut window" msgid "Zoom Out" msgstr "Зменшити" #: src/exm-help-overlay.blp:58 msgctxt "shortcut window" msgid "Reset Zoom" msgstr "Скинути маштабування" #: src/exm-info-bar.blp:28 msgctxt "Number of downloads" msgid "Downloads" msgstr "Завантажень" #: src/exm-info-bar.c:107 msgid "Unsupported" msgstr "Не підтримується" #: src/exm-install-button.c:127 msgid "Install…" msgstr "Встановити…" #: src/exm-install-button.c:132 msgid "Installing" msgstr "Встановлення" #: src/exm-install-button.c:136 msgctxt "State" msgid "Installed" msgstr "Встановлено" #: src/exm-install-button.c:140 msgid "Unsupported…" msgstr "Не підтримується…" #: src/exm-installed-page.blp:16 msgid "_Log Out…" msgstr "_Вийти…" #: src/exm-installed-page.blp:28 msgid "Use Extensions" msgstr "Використовувати розширення" #: src/exm-installed-page.blp:29 msgid "Extensions can cause performance and stability issues" msgstr "Розширення можуть спричиняти проблеми з швидкодією і стабільністю" #: src/exm-installed-page.blp:34 src/exm-upgrade-assistant.blp:133 msgid "User-Installed Extensions" msgstr "Встановлені користувачем розширення" #: src/exm-installed-page.blp:51 src/exm-upgrade-assistant.blp:150 msgid "No User Extensions Installed" msgstr "Немає встановлених користувачем розширень" #: src/exm-installed-page.blp:55 msgid "Browse" msgstr "Пошук" #: src/exm-installed-page.blp:69 src/exm-upgrade-assistant.blp:160 msgid "System Extensions" msgstr "Системні розширення" #: src/exm-installed-page.blp:86 src/exm-upgrade-assistant.blp:177 msgid "No System Extensions Installed" msgstr "Немає встановлених системних розширень" #. Translators: Text announced by screen readers when interacting with the list of search results #: src/exm-installed-page.blp:111 msgid "Search Results" msgstr "Результати пошуку" #: src/exm-installed-page.blp:124 msgid "Try a different search or search online" msgstr "Спробуйте інший пошуковий запит або шукайте онлайн" #: src/exm-installed-page.blp:131 msgid "_Search Online" msgstr "_Онлайн пошук" #. Translators: '%d' = number of extensions that will be updated #: src/exm-installed-page.c:298 #, c-format msgid "%d extension will be updated on next login" msgid_plural "%d extensions will be updated on next login" msgstr[0] "%d розширення буде оновлено при наступному вході в систему" msgstr[1] "%d розширення будуть оновлені при наступному вході в систему" msgstr[2] "%d розширень буде оновлено при наступному вході в систему" #: src/exm-rating.c:142 #, c-format msgid "%i Star" msgid_plural "%i Stars" msgstr[0] "%i зірка" msgstr[1] "%i зірки" msgstr[2] "%i зірок" #. Translators: Button's tooltip to zoom out screenshots #: src/exm-screenshot-view.blp:37 msgid "Zoom Out" msgstr "Віддалити" #. Translators: Button's tooltip to zoom in screenshots #: src/exm-screenshot-view.blp:51 msgid "Zoom In" msgstr "Приблизити" #: src/exm-upgrade-assistant.blp:11 msgid "Upgrade Assistant" msgstr "Помічник з оновлення" #: src/exm-upgrade-assistant.blp:66 msgid "_Check Compatibility" msgstr "_Перевірити сумісність" #: src/exm-upgrade-assistant.blp:189 msgid "_Copy to Clipboard" msgstr "_Скопіювати у буфер обміну" #: src/exm-upgrade-assistant.c:188 #, c-format msgid "Checked %d/%d Extensions" msgstr "Перевірено %d із %d розширень" #. Set percentage text #: src/exm-upgrade-assistant.c:207 #, c-format msgid "%d%% Compatible" msgstr "%d%% сумісно" #: src/exm-upgrade-assistant.c:223 #, c-format msgid "" "GNOME %s supports %d out of %d of the extensions currently " "installed on the system" msgstr "" "GNOME %s підтримує %d із %d розширень які встановлено у вашій " "системі" #. Translators: Icon's tooltip when an extension is compatible #: src/exm-upgrade-assistant.c:503 msgid "A compatible version of the extension exists" msgstr "Сумісна версія цього розширення існує" #. Translators: Icon's tooltip when an extension is not compatible #: src/exm-upgrade-assistant.c:510 msgid "No compatible version of the extension exists" msgstr "Сумісної версії розширення не існує" #. Translators: Icon's tooltip when an extension compatibility is unknown #: src/exm-upgrade-assistant.c:517 msgid "" "This extension is not hosted on extensions.gnome.org. Its compatibility " "cannot be determined." msgstr "" "Це розширення не розміщено у extensions.gnome.org. Перевірити сумісність " "неможливо." #: src/exm-upgrade-assistant.c:608 #, c-format msgid "" "You are currently running GNOME %s. Select a version of GNOME below " "and check whether your extensions will continue to be available." msgstr "" "Зараз ви використовуєте GNOME %s. Оберіть версію GNOME та перевірте, " "чи будуть ваші розширення й надалі будуть доступними." #. Translators: Tooltip of the search icon in the header bar #: src/exm-window.blp:39 msgid "Search Installed Extensions" msgstr "Пошук серед встановлених розширень" #: src/exm-window.blp:48 msgid "Main Menu" msgstr "Головне меню" #: src/exm-window.blp:59 msgid "Search for installed extensions" msgstr "Пошук встановлених розширень" #: src/exm-window.blp:71 msgctxt "Navigation" msgid "_Installed" msgstr "_Встановлені" #: src/exm-window.blp:80 msgctxt "Navigation" msgid "_Browse" msgstr "_Пошук" #. Translators: the character preceded by "_" should not be the same #. as others in the same menu #: src/exm-window.blp:108 msgid "Sort _Enabled First" msgstr "Спочатку сортувати _увімкнені" #: src/exm-window.blp:109 msgid "_Show Unsupported" msgstr "_Показувати непідтримувані" #: src/exm-window.blp:113 msgid "_Upgrade Assistant" msgstr "_Помічник з оновлення" #: src/exm-window.blp:114 msgid "_Keyboard Shortcuts" msgstr "_Клавіатурні скорочення" #: src/exm-window.blp:115 msgid "_About Extension Manager" msgstr "_Про Менеджер розширень" #: src/exm-window.blp:120 msgid "Uninstall Extension?" msgstr "Видалити розширення?" #: src/exm-window.blp:121 msgid "" "The extension's features and functionality will no longer be accessible. Are " "you sure you want to uninstall?" msgstr "" "Функції та можливості розширення більше не будуть доступні. Ви впевнені, що " "хочете його видалити?" #: src/exm-window.blp:126 msgid "_No" msgstr "_Ні" #: src/exm-window.blp:127 msgid "_Yes" msgstr "_Так" #: src/exm-window.blp:132 msgid "Unsupported Extension" msgstr "Непідтримуване розширення" #: src/exm-window.blp:133 msgid "" "This extension does not support your GNOME Shell version. It may cause " "errors if installed." msgstr "" "Це розширення не підтримує вашу версію оболонки GNOME. Воно може викликати " "проблеми, якщо його встановити." #: src/exm-window.blp:139 msgid "_Install Anyway" msgstr "_Все одно встановити" #: src/exm-window.blp:140 msgid "_Go Back" msgstr "_Повернутися" #: src/exm-window.c:348 msgid "_Details" msgstr "_Подробиці" #: src/web/exm-request-handler.c:99 msgid "" "Check GNOME infrastructure status " "and try again later" msgstr "" "Перевірте Статус інфраструктури GNOME та спробуйте пізніше" #: src/web/exm-request-handler.c:100 msgid "Check your network status and try again" msgstr "Переконайтесь що з'єднання з мережею присутнє та спробуйте ще раз" #~ msgid "Comments" #~ msgstr "Коментарі" #~ msgid "Loading Comments" #~ msgstr "Завантажуємо коментарі" #~ msgid "User Reviews" #~ msgstr "Відгуки користувачів" #~ msgid "No comments yet" #~ msgstr "Коментарів поки що немає" #~ msgid "" #~ "This extension could be activated in session modes such as the login " #~ "screen or the lock screen" #~ msgstr "" #~ "Це розширення може бути активовано у таких режимах сессії, як екран входу " #~ "в систему або екран блокування" #, c-format #~ msgid "%s by %s" #~ msgstr "%s від %s" #~ msgid "Updates Available" #~ msgstr "Доступні оновлення" #~ msgid "Supported" #~ msgstr "Підтримується" #~ msgid "Unknown" #~ msgstr "Невідомо" #~ msgid "A utility for managing GNOME Shell Extensions" #~ msgstr "Програма для керуваннями розширеннями для стільниці GNOME" #, c-format #~ msgid "e.g. “%s”" #~ msgstr "наприклад: “%s”" #~ msgid "This extension is incompatible with your current version of GNOME." #~ msgstr "Це розширення не підтримується у вашій поточній версії GNOME." #~ msgid "An error occurred." #~ msgstr "Сталася помилка." #~ msgid "Return to view" #~ msgstr "Повернутися назад" #~ msgid "@app_title@" #~ msgstr "@app_title@" #~ msgid "HOTFIX: Fix broken 'recent' and 'popularity' search filters" #~ msgstr "" #~ "Виправлення: виправлено зламані 'За датою оновлення' та 'За популярністю' " #~ "фільтри пошуку" #~ msgid "Various stability and correctness fixes" #~ msgstr "Різні покращення та виправлення" #~ msgid "Translation updates" #~ msgstr "Оновлено переклади" #~ msgid "Upgrade Assistant scroll fix" #~ msgstr "Виправлення для прокрутки у Помічнику оновлень" #~ msgid "Pixel perfect app icon" #~ msgstr "Піксель-перфект піктограма для додатку" #~ msgid "Official snap support" #~ msgstr "Офіційна підтримка для snap пакунків" #~ msgid "Improved error log generation" #~ msgstr "Покращено генерацію журналу помилок" #~ msgid "Fully adaptive mobile-friendly user interface" #~ msgstr "Повністю адаптивний, сумісний з мобільними пристроями, інтерфейс" #~ msgid "Paginated search results" #~ msgstr "Результати пошуку у вигляді сторінок" #~ msgid "Upgrade Assistant for checking extension compatibility" #~ msgstr "Помічник оновлень, щоб перевіряти сумісність розширень" #~ msgid "Unsupported extensions are hidden by default" #~ msgstr "Не підтримувані розширення сховані за замовченням" #~ msgid "Overhauled error and crash reporting" #~ msgstr "Покращено вікно звітування про вади і збої" #~ msgid "Full-screen image viewer" #~ msgstr "Повноекранний перегляд зображень" #~ msgid "Handles new gnome-extensions:// URI scheme" #~ msgstr "Підтримує нову gnome-extensions:// URI схему" #~ msgid "Randomised extension suggestions" #~ msgstr "Випадкові пропозиції для розширень" #~ msgid "Performance and stability" #~ msgstr "Швидкодія та стабільність" #~ msgid "Various bug fixes" #~ msgstr "Невеликі виправлення помилок" #~ msgid "Remove release notes dialog" #~ msgstr "Видалено вікно з списком змін оновлень" #~ msgid "Fix special characters in installed extension listings" #~ msgstr "" #~ "Виправлено проблеми пов'язані з спеціальними символами у списках розширень" #~ msgid "The second feature update to extension-manager. Highlights include:" #~ msgstr "" #~ "Друге оновлення для Менеджера розширень, яке додає новий функціонал. Що " #~ "нового:" #~ msgid "View comments and reviews" #~ msgstr "Перегляд коментарів та відгуків" #~ msgid "Support for in-app updates" #~ msgstr "Підтримка оновлень всередині додатку" #~ msgid "Better handling errors and out-of-date extensions" #~ msgstr "Краще обробка помилок і застарілих розширень" #~ msgid "Allow installing 'unsupported' extensions" #~ msgstr "Дозволено встановлювати \"не підтримувані\" розширення" #~ msgid "Display release notes on first run" #~ msgstr "Показує список змін релізу при запускую" #~ msgid "New app icon" #~ msgstr "Нова піктограма додатку" #~ msgid "Optionally sort extensions by enabled status" #~ msgstr "Сортування розширень за статусом вімк/вимк" #~ msgid "Fix special characters in search results" #~ msgstr "" #~ "Виправлено проблеми пов'язані з особливими символами у результатах пошуку" #~ msgid "Fixes a crash that sometimes occurs while uninstalling an extension" #~ msgstr "Виправлено збій, який іноді стається при видаленні розширення" #~ msgid "The first feature update to extension-manager. Highlights include:" #~ msgstr "" #~ "Перше оновлення для Менеджера розширень, яке додає новий функціонал. Що " #~ "нового:" #~ msgid "Dark theme and support for overriding the system colour scheme" #~ msgstr "Темний стиль/тема та підтримка заміни системної схеми кольорів" #~ msgid "Shows screenshots in extension listings" #~ msgstr "Показує скриншоти у списку розширень" #~ msgid "Shell version compatibility check" #~ msgstr "Перевірка сумісності версій розширень з стільницею GNOME" #~ msgid "Localised into seven languages" #~ msgstr "Перекладено на декілька мов" #~ msgid "Global extension on/off toggle" #~ msgstr "Глобальне вимкнення/ввімкнення усіх розширень" #~ msgid "Displays user and system extensions separately" #~ msgstr "Показувати розширення користувача та системи окремо" #~ msgid "Extension Manager (Development)" #~ msgstr "Менеджер розширень (Розробка)" #~ msgid "Popularity" #~ msgstr "За популярністю" #~ msgid "Supported Versions" #~ msgstr "Підтримувані версії" #~ msgctxt "Navigation" #~ msgid "Browse" #~ msgstr "Шукати" #~ msgid "Are you sure you want to uninstall?" #~ msgstr "Ви впевнені, що бажаєте видалити це розширення?" #~ msgid "Theme" #~ msgstr "Стиль" #~ msgid "Follow System" #~ msgstr "Використовувати стиль системи" #~ msgid "Light" #~ msgstr "Світлий стиль" #~ msgid "Dark" #~ msgstr "Темний стиль" extension-manager-0.6.3/po/vi_VN.po000066400000000000000000000622721477302130300171540ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the extension-manager package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: extension-manager\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-03-06 16:36+0000\n" "PO-Revision-Date: 2023-11-09 22:59+0700\n" "Last-Translator: \n" "Language-Team: \n" "Language: vi_VN\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.4\n" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:2 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:6 #: src/exm-window.blp:7 msgid "Extension Manager" msgstr "Trình quản lý tiện ích mở rộng" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:11 msgid "Manage GNOME Shell Extensions" msgstr "Quản lý Tiện ích Mở rộng Gnome Shell" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #. Make sure to leave the original strings and add your translations afterwards, so that users can search both in English and your language. #: data/com.mattjakeman.ExtensionManager.desktop.in.in:14 #, fuzzy #| msgid "extension;manager;" msgid "extension;manager;shell;" msgstr "extension;manager;" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:7 msgid "Browse, install, and manage GNOME Shell Extensions" msgstr "Duyệt, Cài đặt và Quản lý Tiện ích Mở rộng Gnome Shell" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:13 msgid "A utility for browsing and installing GNOME Shell Extensions." msgstr "Một tiện ích để duyệt và cài đặt Tiện ích Mở rộng Gnome Shell." #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:14 msgid "Features:" msgstr "Tính năng:" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:16 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:26 msgid "Browse extensions.gnome.org right inside the app" msgstr "Duyệt extensions.gnome.org ngay bên trong ứng dụng" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:17 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:22 msgid "Manage the extensions you already have installed" msgstr "Quản lý các tiện ích mở rộng bạn đã cài đặt" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:30 #, fuzzy #| msgid "Search for extensions" msgid "See all the details of your extensions" msgstr "Tìm kiếm tiện ích mở rộng" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:34 #, fuzzy #| msgid "This extension is incompatible with your current version of GNOME" msgid "Check your extensions compatibility with the next version of GNOME" msgstr "" "Tiện ích mở rộng này không tương thích với phiên bản GNOME hiện tại của bạn" #: src/exm-application.c:201 msgid "Browse, install, and manage GNOME Shell Extensions." msgstr "Duyệt, Cài đặt và Quản lý Tiện ích Mở rộng Gnome Shell." #. Translators: Use 'Name email@domain.com' or 'Name https://website.example' (without single quotes). Do not delete existing names, write yours on a new line. #: src/exm-application.c:204 msgid "translator-credits" msgstr "dịch thuật-tín dụng" #: src/exm-browse-page.blp:16 #, fuzzy #| msgid "Search for extensions" msgid "Search for Extensions" msgstr "Tìm kiếm tiện ích mở rộng" #: src/exm-browse-page.blp:17 #, fuzzy #| msgid "" #| "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell " #| "Extensions." msgid "" "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell Extensions" msgstr "" "Nhập từ khóa để tìm kiếm 'extensions.gnome.org' cho Tiện ích mở rộng Gnome " "Shell." #: src/exm-browse-page.blp:47 msgid "Relevance" msgstr "Liên quan" #: src/exm-browse-page.blp:48 #, fuzzy #| msgid "Downloads" msgctxt "Sort search results" msgid "Downloads" msgstr "Tải xuống" #: src/exm-browse-page.blp:49 msgid "Recent" msgstr "Gần đây" #: src/exm-browse-page.blp:50 src/exm-detail-view.blp:113 msgid "Name" msgstr "Tên" #: src/exm-browse-page.blp:57 msgid "Sort search results" msgstr "Sắp xếp kết quả tìm kiếm" #: src/exm-browse-page.blp:103 msgid "_Load More Results" msgstr "_Tải thêm kết quả" #: src/exm-browse-page.blp:137 src/exm-installed-page.blp:123 msgid "No Results Found" msgstr "Không có kết quả nào được tìm thấy" #: src/exm-browse-page.blp:144 msgid "Try a different search" msgstr "" #: src/exm-browse-page.blp:178 src/exm-comment-dialog.blp:34 #: src/exm-detail-view.blp:49 src/exm-detail-view.blp:291 #: src/exm-upgrade-assistant.blp:100 msgid "Connection Error" msgstr "" #: src/exm-comment-dialog.blp:13 src/exm-detail-view.blp:248 #, fuzzy #| msgid "There are no comments." msgid "Reviews and Comments" msgstr "Không có bình luận nào." #: src/exm-comment-dialog.blp:25 #, fuzzy #| msgid "Loading…" msgid "Loading" msgstr "Đang tải…" #: src/exm-comment-tile.blp:30 src/exm-detail-view.blp:127 msgid "Author" msgstr "" #: src/exm-detail-view.blp:40 #, fuzzy #| msgid "Details" msgid "Loading Details" msgstr "Chi tiết" #: src/exm-detail-view.blp:59 src/exm-window.c:347 msgid "An Error Occurred" msgstr "Đã xảy ra lỗi" #: src/exm-detail-view.blp:60 #, fuzzy #| msgid "A newer version of this extension is available" msgid "No extension details available" msgstr "Đã có phiên bản mới hơn của tiện ích mở rộng này" #: src/exm-detail-view.blp:154 #, fuzzy #| msgid "Enlarge image" msgid "Enlarge Image" msgstr "Phóng to hình ảnh" #: src/exm-detail-view.blp:172 src/exm-extension-row.blp:89 msgid "Description" msgstr "Miêu tả" #: src/exm-detail-view.blp:195 msgid "Links" msgstr "" #: src/exm-detail-view.blp:203 msgid "Homepage" msgstr "" #: src/exm-detail-view.blp:219 msgid "Donate" msgstr "" #: src/exm-detail-view.blp:228 msgid "View on Extensions" msgstr "Xem trên Tiện ích mở rộng" #: src/exm-detail-view.blp:271 msgid "Reviews and comments are disabled for this extension" msgstr "" #: src/exm-detail-view.blp:314 #, fuzzy #| msgid "There are no comments." msgid "There are no reviews or comments" msgstr "Không có bình luận nào." #: src/exm-detail-view.blp:343 #, fuzzy #| msgid "_Show All Reviews" msgid "_Show All" msgstr "_Hiển thị tất cả đánh giá" #. Translators: '%s' = extension name #: src/exm-detail-view.c:445 #, c-format msgid "%s Icon" msgstr "" #. Translators: '%s' = extension name #: src/exm-detail-view.c:478 #, c-format msgid "%s Screenshot" msgstr "" #: src/exm-error-dialog.blp:7 msgid "Error Report" msgstr "Báo cáo lỗi" #: src/exm-error-dialog.blp:22 #, fuzzy #| msgid "An unexpected error occurred in Extension Manager." msgid "An unexpected error occurred in Extension Manager" msgstr "Đã xảy ra lỗi không mong muốn trong Trình quản lý tiện ích mở rộng." #: src/exm-error-dialog.blp:36 #, fuzzy #| msgid "_Copy to Clipboard" msgid "Copy to Clipboard" msgstr "_Sao chép vào clipboard" #: src/exm-error-dialog.blp:77 msgid "_New Issue" msgstr "_Vấn đề mới" #. Success indicator #: src/exm-error-dialog.c:125 src/exm-upgrade-assistant.c:347 msgid "Copied" msgstr "Đã sao chép" #: src/exm-error-dialog.c:173 msgid "Please open a new issue and attach the following information:" msgstr "Vui lòng mở một vấn đề mới và đính kèm các thông tin sau:" #. Translators: '%s' = Name of Distributor (e.g. "Packager123") #: src/exm-error-dialog.c:177 #, c-format msgid "" "You are using a third-party build of Extension Manager. Please contact the package distributor (%s) first before " "filing an issue. Be sure to attach the following information:" msgstr "" "Bạn đang sử dụng bản dựng Trình quản lý tiện ích mở rộng của bên thứ ba. Vui " "lòng liên hệ với nhà phân phối gói (%s) trước " "khi nộp đơn phát hành. Hãy chắc chắn đính kèm các thông tin sau:" #. Translators: Button's tooltip to open extension's preferences dialog #: src/exm-extension-row.blp:28 msgid "Open extension preferences" msgstr "Mở tùy chọn tiện ích mở rộng" #. Translators: Icon's tooltip when an extension has an error #: src/exm-extension-row.blp:46 msgid "An error occurred while loading this extension" msgstr "Đã xảy ra lỗi khi tải tiện ích mở rộng này" #. Translators: Icon's tooltip when an extension is incompatible #: src/exm-extension-row.blp:63 src/exm-install-button.c:117 msgid "This extension is incompatible with your current version of GNOME" msgstr "" "Tiện ích mở rộng này không tương thích với phiên bản GNOME hiện tại của bạn" #. Translators: Icon's tooltip when an extension update is available #: src/exm-extension-row.blp:80 msgid "A newer version of this extension is available" msgstr "Đã có phiên bản mới hơn của tiện ích mở rộng này" #: src/exm-extension-row.blp:98 src/exm-info-bar.blp:50 msgid "Version" msgstr "Phiên bản" #: src/exm-extension-row.blp:107 msgid "Session Modes" msgstr "" #: src/exm-extension-row.blp:137 msgid "Error" msgstr "Lỗi" #: src/exm-extension-row.blp:158 msgid "See Details" msgstr "Xem chi tiết" #: src/exm-extension-row.blp:169 #, fuzzy #| msgid "Remove" msgid "Remove…" msgstr "Gỡ bỏ" #: src/exm-extension-row.c:175 msgid "Unlock Dialog" msgstr "" #. Translators: GNOME Display Manager #: src/exm-extension-row.c:181 msgid "GDM" msgstr "" #. Translators: Label when an extension runs on both, login and lock screens #: src/exm-extension-row.c:189 msgid "" "This extension will run while the screen is locked and no user is logged in" msgstr "" #. Translators: Label when an extension runs on the lock screen #: src/exm-extension-row.c:194 msgid "This extension will run while the screen is locked" msgstr "" #. Translators: Label when an extension runs on the login screen #: src/exm-extension-row.c:199 #, fuzzy #| msgid "One extension will be updated on next login." #| msgid_plural "%d extensions will be updated on next login." msgid "This extension will run while no user is logged in" msgstr "Một tiện ích mở rộng sẽ được cập nhật vào lần đăng nhập tiếp theo." #: src/exm-help-overlay.blp:11 msgctxt "shortcut window" msgid "General" msgstr "" #: src/exm-help-overlay.blp:14 #, fuzzy #| msgctxt "State" #| msgid "Installed" msgctxt "shortcut window" msgid "Show Installed Page" msgstr "Đã cài đặt" #: src/exm-help-overlay.blp:19 msgctxt "shortcut window" msgid "Show Browse Page" msgstr "" #: src/exm-help-overlay.blp:24 msgctxt "shortcut window" msgid "Toggle Search" msgstr "" #: src/exm-help-overlay.blp:29 msgctxt "shortcut window" msgid "Show Keyboard Shortcuts" msgstr "" #: src/exm-help-overlay.blp:34 msgctxt "shortcut window" msgid "Close Window" msgstr "" #: src/exm-help-overlay.blp:39 msgctxt "shortcut window" msgid "Quit" msgstr "" #: src/exm-help-overlay.blp:45 msgctxt "shortcut window" msgid "Screenshot View" msgstr "" #: src/exm-help-overlay.blp:48 src/exm-help-overlay.blp:63 #, fuzzy #| msgid "Zoom In" msgctxt "shortcut window" msgid "Zoom In" msgstr "Phóng to" #: src/exm-help-overlay.blp:53 src/exm-help-overlay.blp:68 #, fuzzy #| msgid "Zoom Out" msgctxt "shortcut window" msgid "Zoom Out" msgstr "Thu nhỏ" #: src/exm-help-overlay.blp:58 msgctxt "shortcut window" msgid "Reset Zoom" msgstr "" #: src/exm-info-bar.blp:28 #, fuzzy #| msgid "Downloads" msgctxt "Number of downloads" msgid "Downloads" msgstr "Tải xuống" #: src/exm-info-bar.c:107 msgid "Unsupported" msgstr "Không được hỗ trợ" #: src/exm-install-button.c:127 #, fuzzy #| msgid "Install" msgid "Install…" msgstr "Cài đặt" #: src/exm-install-button.c:132 #, fuzzy #| msgctxt "State" #| msgid "Installed" msgid "Installing" msgstr "Đã cài đặt" #: src/exm-install-button.c:136 msgctxt "State" msgid "Installed" msgstr "Đã cài đặt" #: src/exm-install-button.c:140 #, fuzzy #| msgid "Unsupported" msgid "Unsupported…" msgstr "Không được hỗ trợ" #: src/exm-installed-page.blp:16 #, fuzzy #| msgid "Log Out" msgid "_Log Out…" msgstr "Đăng xuất" #: src/exm-installed-page.blp:28 msgid "Use Extensions" msgstr "Sử dụng tiện ích mở rộng" #: src/exm-installed-page.blp:29 #, fuzzy #| msgid "Extensions can cause performance and stability issues." msgid "Extensions can cause performance and stability issues" msgstr "Tiện ích mở rộng có thể gây ra vấn đề về hiệu suất và độ ổn định." #: src/exm-installed-page.blp:34 src/exm-upgrade-assistant.blp:133 msgid "User-Installed Extensions" msgstr "Tiện ích mở rộng do người dùng cài đặt" #: src/exm-installed-page.blp:51 src/exm-upgrade-assistant.blp:150 #, fuzzy #| msgid "There are no user extensions installed." msgid "No User Extensions Installed" msgstr "Không có tiện ích mở rộng người dùng nào được cài đặt." #: src/exm-installed-page.blp:55 msgid "Browse" msgstr "Duyệt qua" #: src/exm-installed-page.blp:69 src/exm-upgrade-assistant.blp:160 msgid "System Extensions" msgstr "Tiện ích mở rộng hệ thống" #: src/exm-installed-page.blp:86 src/exm-upgrade-assistant.blp:177 #, fuzzy #| msgid "There are no system extensions installed." msgid "No System Extensions Installed" msgstr "Không có phần mở rộng hệ thống nào được cài đặt." #. Translators: Text announced by screen readers when interacting with the list of search results #: src/exm-installed-page.blp:111 #, fuzzy #| msgid "Sort search results" msgid "Search Results" msgstr "Sắp xếp kết quả tìm kiếm" #: src/exm-installed-page.blp:124 msgid "Try a different search or search online" msgstr "" #: src/exm-installed-page.blp:131 msgid "_Search Online" msgstr "" #. Translators: '%d' = number of extensions that will be updated #: src/exm-installed-page.c:298 #, fuzzy, c-format #| msgid "One extension will be updated on next login." #| msgid_plural "%d extensions will be updated on next login." msgid "%d extension will be updated on next login" msgid_plural "%d extensions will be updated on next login" msgstr[0] "Một tiện ích mở rộng sẽ được cập nhật vào lần đăng nhập tiếp theo." msgstr[1] "%d tiện ích mở rộng sẽ được cập nhật vào lần đăng nhập tiếp theo." #: src/exm-rating.c:142 #, c-format msgid "%i Star" msgid_plural "%i Stars" msgstr[0] "" #. Translators: Button's tooltip to zoom out screenshots #: src/exm-screenshot-view.blp:37 msgid "Zoom Out" msgstr "Thu nhỏ" #. Translators: Button's tooltip to zoom in screenshots #: src/exm-screenshot-view.blp:51 msgid "Zoom In" msgstr "Phóng to" #: src/exm-upgrade-assistant.blp:11 msgid "Upgrade Assistant" msgstr "Trợ lý Nâng cấp" #: src/exm-upgrade-assistant.blp:66 msgid "_Check Compatibility" msgstr "_Kiểm tra tính tương thích" #: src/exm-upgrade-assistant.blp:189 msgid "_Copy to Clipboard" msgstr "_Sao chép vào clipboard" #: src/exm-upgrade-assistant.c:188 #, fuzzy, c-format #| msgid "Checked %d/%d extensions" msgid "Checked %d/%d Extensions" msgstr "Đã kiểm tra %d/%d tiện ích mở rộng" #. Set percentage text #: src/exm-upgrade-assistant.c:207 #, c-format msgid "%d%% Compatible" msgstr "%d%% Tương thích" #: src/exm-upgrade-assistant.c:223 #, fuzzy, c-format #| msgid "" #| "GNOME %s supports %d out of %d of the extensions currently " #| "installed on the system." msgid "" "GNOME %s supports %d out of %d of the extensions currently " "installed on the system" msgstr "" "GNOME %s hỗ trợ %d trong số %d tiện ích mở rộng hiện được cài " "đặt trên hệ thống." #. Translators: Icon's tooltip when an extension is compatible #: src/exm-upgrade-assistant.c:503 #, fuzzy #| msgid "A compatible version of the extension exists." msgid "A compatible version of the extension exists" msgstr "Đã tồn tại phiên bản tương thích của tiện ích mở rộng." #. Translators: Icon's tooltip when an extension is not compatible #: src/exm-upgrade-assistant.c:510 #, fuzzy #| msgid "No compatible version of the extension exists." msgid "No compatible version of the extension exists" msgstr "Không có phiên bản tương thích của tiện ích mở rộng tồn tại." #. Translators: Icon's tooltip when an extension compatibility is unknown #: src/exm-upgrade-assistant.c:517 msgid "" "This extension is not hosted on extensions.gnome.org. Its compatibility " "cannot be determined." msgstr "" "Tiện ích mở rộng này không được lưu trữ trên extensions.gnome.org. Khả năng " "tương thích của nó không thể được xác định." #: src/exm-upgrade-assistant.c:608 #, c-format msgid "" "You are currently running GNOME %s. Select a version of GNOME below " "and check whether your extensions will continue to be available." msgstr "" "Bạn hiện đang chạy GNOME %s. Chọn một phiên bản GNOME bên dưới và " "kiểm tra xem các tiện ích mở rộng của bạn có tiếp tục khả dụng hay không." #. Translators: Tooltip of the search icon in the header bar #: src/exm-window.blp:39 #, fuzzy #| msgid "User-Installed Extensions" msgid "Search Installed Extensions" msgstr "Tiện ích mở rộng do người dùng cài đặt" #: src/exm-window.blp:48 msgid "Main Menu" msgstr "Menu chính" #: src/exm-window.blp:59 #, fuzzy #| msgid "Search for extensions" msgid "Search for installed extensions" msgstr "Tìm kiếm tiện ích mở rộng" #: src/exm-window.blp:71 msgctxt "Navigation" msgid "_Installed" msgstr "_Đã Cài đặt" #: src/exm-window.blp:80 msgctxt "Navigation" msgid "_Browse" msgstr "_Duyệt" #. Translators: the character preceded by "_" should not be the same #. as others in the same menu #: src/exm-window.blp:108 #, fuzzy #| msgid "Sort Enabled First" msgid "Sort _Enabled First" msgstr "Sắp xếp Đã bật trước" #: src/exm-window.blp:109 #, fuzzy #| msgid "Show Unsupported" msgid "_Show Unsupported" msgstr "Hiển thị Không hỗ trợ" #: src/exm-window.blp:113 #, fuzzy #| msgid "Upgrade Assistant" msgid "_Upgrade Assistant" msgstr "Trợ lý Nâng cấp" #: src/exm-window.blp:114 msgid "_Keyboard Shortcuts" msgstr "" #: src/exm-window.blp:115 #, fuzzy #| msgid "About Extension Manager" msgid "_About Extension Manager" msgstr "Về Trình quản lý tiện ích mở rộng" #: src/exm-window.blp:120 msgid "Uninstall Extension?" msgstr "Gỡ cài đặt tiện ích mở rộng?" #: src/exm-window.blp:121 msgid "" "The extension's features and functionality will no longer be accessible. Are " "you sure you want to uninstall?" msgstr "" "Các tính năng và chức năng của tiện ích mở rộng sẽ không thể truy cập được " "nữa. Bạn có chắc chắn muốn gỡ cài đặt không?" #: src/exm-window.blp:126 msgid "_No" msgstr "_Không" #: src/exm-window.blp:127 msgid "_Yes" msgstr "_Có" #: src/exm-window.blp:132 msgid "Unsupported Extension" msgstr "Tiện ích mở rộng không được hỗ trợ" #: src/exm-window.blp:133 msgid "" "This extension does not support your GNOME Shell version. It may cause " "errors if installed." msgstr "" "Tiện ích mở rộng này không hỗ trợ phiên bản GNOME Shell của bạn. Nó có thể " "gây ra lỗi nếu cài đặt." #: src/exm-window.blp:139 msgid "_Install Anyway" msgstr "_Vẫn cài đặt" #: src/exm-window.blp:140 msgid "_Go Back" msgstr "_Quay lại" #: src/exm-window.c:348 #, fuzzy #| msgid "Details" msgid "_Details" msgstr "Chi tiết" #: src/web/exm-request-handler.c:99 msgid "" "Check GNOME infrastructure status " "and try again later" msgstr "" #: src/web/exm-request-handler.c:100 msgid "Check your network status and try again" msgstr "" #~ msgid "Comments" #~ msgstr "Bình luận" #, fuzzy #~| msgid "Comments" #~ msgid "Loading Comments" #~ msgstr "Bình luận" #~ msgid "User Reviews" #~ msgstr "Đánh giá của người dùng" #, fuzzy #~| msgid "Comments" #~ msgid "No comments yet" #~ msgstr "Bình luận" #, fuzzy #~| msgid "Updates are available" #~ msgid "Updates Available" #~ msgstr "Cập nhật có sẵn" #~ msgid "Supported" #~ msgstr "Được hỗ trợ" #~ msgid "Unknown" #~ msgstr "Không biết" #~ msgid "A utility for managing GNOME Shell Extensions" #~ msgstr "Một tiện ích để quản lý Tiện ích Mở rộng Gnome Shell" #, c-format #~ msgid "e.g. “%s”" #~ msgstr "ví dụ. \"%s\"" #~ msgid "This extension is incompatible with your current version of GNOME." #~ msgstr "" #~ "Tiện ích mở rộng này không tương thích với phiên bản Gnome hiện tại của " #~ "bạn." #~ msgid "An error occurred." #~ msgstr "Đã xảy ra lỗi." #~ msgid "Return to view" #~ msgstr "Quay lại xem" #~ msgid "@app_title@" #~ msgstr "@app_title@" #~ msgid "Translation updates" #~ msgstr "Cập nhật bản dịch" #~ msgid "Upgrade Assistant scroll fix" #~ msgstr "Sửa lỗi cuộn Trợ lý Nâng cấp" #~ msgid "Pixel perfect app icon" #~ msgstr "Biểu tượng ứng dụng hoàn hảo Pixel" #~ msgid "Official snap support" #~ msgstr "Hỗ trợ chụp nhanh chính thức" #~ msgid "Improved error log generation" #~ msgstr "Cải thiện việc tạo nhật ký lỗi" #~ msgid "Fully adaptive mobile-friendly user interface" #~ msgstr "" #~ "Giao diện người dùng thân thiện với thiết bị di động hoàn toàn thích ứng" #~ msgid "Paginated search results" #~ msgstr "Kết quả tìm kiếm được phân trang" #~ msgid "Upgrade Assistant for checking extension compatibility" #~ msgstr "" #~ "Trợ lý Nâng cấp để kiểm tra khả năng tương thích của tiện ích mở rộng" #~ msgid "Unsupported extensions are hidden by default" #~ msgstr "Các tiện ích mở rộng không được hỗ trợ sẽ bị ẩn theo mặc định" #~ msgid "Overhauled error and crash reporting" #~ msgstr "Báo cáo lỗi và sự cố đã được đại tu" #~ msgid "Full-screen image viewer" #~ msgstr "Trình xem ảnh toàn màn hình" #~ msgid "Handles new gnome-extensions:// URI scheme" #~ msgstr "Xử lý lược đồ URI gnome-extensions:// mới" #~ msgid "Randomised extension suggestions" #~ msgstr "Đề xuất tiện ích mở rộng ngẫu nhiên" #~ msgid "Performance and stability" #~ msgstr "Hiệu suất và sự ổn định" #~ msgid "Various bug fixes" #~ msgstr "Sửa lỗi khác nhau" #~ msgid "Remove release notes dialog" #~ msgstr "Hộp thoại Xóa ghi chú phát hành" #~ msgid "Fix special characters in installed extension listings" #~ msgstr "Sửa các ký tự đặc biệt trong danh sách tiện ích mở rộng đã cài đặt" #~ msgid "The second feature update to extension-manager. Highlights include:" #~ msgstr "" #~ "Bản cập nhật tính năng thứ hai cho trình quản lý tiện ích mở rộng. Những " #~ "điểm nổi bật bao gồm:" #~ msgid "View comments and reviews" #~ msgstr "Xem nhận xét và đánh giá" #~ msgid "Support for in-app updates" #~ msgstr "Hỗ trợ cập nhật trong ứng dụng" #~ msgid "Better handling errors and out-of-date extensions" #~ msgstr "Xử lý tốt hơn các lỗi và tiện ích mở rộng lỗi thời" #~ msgid "Allow installing 'unsupported' extensions" #~ msgstr "Cho phép cài đặt các tiện ích mở rộng 'không được hỗ trợ'" #~ msgid "Display release notes on first run" #~ msgstr "Hiển thị ghi chú phát hành trong lần chạy đầu tiên" #~ msgid "New app icon" #~ msgstr "Biểu tượng ứng dụng mới" #~ msgid "Optionally sort extensions by enabled status" #~ msgstr "Tùy chọn sắp xếp các tiện ích mở rộng theo trạng thái đã bật" #~ msgid "Fix special characters in search results" #~ msgstr "Sửa các ký tự đặc biệt trong kết quả tìm kiếm" #~ msgid "Fixes a crash that sometimes occurs while uninstalling an extension" #~ msgstr "Khắc phục sự cố đôi khi xảy ra khi gỡ cài đặt tiện ích mở rộng" #~ msgid "The first feature update to extension-manager. Highlights include:" #~ msgstr "" #~ "Bản cập nhật tính năng đầu tiên cho trình quản lý tiện ích mở rộng. Điểm " #~ "nổi bật bao gồm:" #~ msgid "Dark theme and support for overriding the system colour scheme" #~ msgstr "Chủ đề tối và hỗ trợ ghi đè bảng màu hệ thống" #~ msgid "Shows screenshots in extension listings" #~ msgstr "Hiển thị ảnh chụp màn hình trong danh sách tiện ích mở rộng" #~ msgid "Shell version compatibility check" #~ msgstr "Kiểm tra tính tương thích của phiên bản Shell" #~ msgid "Localised into seven languages" #~ msgstr "Bản địa hóa thành bảy ngôn ngữ" #~ msgid "Global extension on/off toggle" #~ msgstr "Bật/tắt tiện ích mở rộng toàn cầu" #~ msgid "Displays user and system extensions separately" #~ msgstr "Hiển thị riêng phần mở rộng của người dùng và hệ thống" #~ msgid "Popularity" #~ msgstr "Phổ biến" #~ msgid "Supported Versions" #~ msgstr "Phiên bản được hỗ trợ" #~ msgid "Extension Manager (Development)" #~ msgstr "Trình quản lý tiện ích mở rộng (Phát triển)" extension-manager-0.6.3/po/zh_CN.po000066400000000000000000000505441477302130300171330ustar00rootroot00000000000000# Chinese(China) translations for extension-manager package. # Copyright (C) 2022 extension-manager'S COPYRIGHT HOLDER # This file is distributed under the same license as the extension-manager package. # Luke Luo , 2022. # unsigned char , 2024, 2025. # taijuin Lee , 2025. msgid "" msgstr "" "Project-Id-Version: extension-manager\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-03-06 16:36+0000\n" "PO-Revision-Date: 2025-03-11 15:48+0000\n" "Last-Translator: taijuin Lee \n" "Language-Team: Chinese (Simplified Han script) \n" "Language: zh_CN\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: Weblate 5.10.3-dev\n" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:2 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:6 #: src/exm-window.blp:7 msgid "Extension Manager" msgstr "扩展管理器" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:11 msgid "Manage GNOME Shell Extensions" msgstr "管理 GNOME Shell 扩展" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #. Make sure to leave the original strings and add your translations afterwards, so that users can search both in English and your language. #: data/com.mattjakeman.ExtensionManager.desktop.in.in:14 msgid "extension;manager;shell;" msgstr "扩展;管理器;shell;" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:7 msgid "Browse, install, and manage GNOME Shell Extensions" msgstr "浏览、安装并管理 GNOME Shell 扩展" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:13 msgid "A utility for browsing and installing GNOME Shell Extensions." msgstr "一款浏览和安装 GNOME 扩展的实用程序。" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:14 msgid "Features:" msgstr "功能:" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:16 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:26 msgid "Browse extensions.gnome.org right inside the app" msgstr "在应用中浏览 extensions.gnome.org" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:17 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:22 msgid "Manage the extensions you already have installed" msgstr "管理您已经安装的扩展" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:30 msgid "See all the details of your extensions" msgstr "查看所有扩展的详细信息" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:34 msgid "Check your extensions compatibility with the next version of GNOME" msgstr "检查您的扩展与下一个版本的 GNOME 的兼容性" #: src/exm-application.c:201 msgid "Browse, install, and manage GNOME Shell Extensions." msgstr "浏览、安装和管理 GNOME Shell 扩展。" #. Translators: Use 'Name email@domain.com' or 'Name https://website.example' (without single quotes). Do not delete existing names, write yours on a new line. #: src/exm-application.c:204 msgid "translator-credits" msgstr "Luke Luo " #: src/exm-browse-page.blp:16 msgid "Search for Extensions" msgstr "搜索扩展" #: src/exm-browse-page.blp:17 msgid "" "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell Extensions" msgstr "请输入关键字,以便在 “extensions.gnome.org” 中搜索 GNOME 扩展" #: src/exm-browse-page.blp:47 msgid "Relevance" msgstr "相关性" #: src/exm-browse-page.blp:48 msgctxt "Sort search results" msgid "Downloads" msgstr "下载量" #: src/exm-browse-page.blp:49 msgid "Recent" msgstr "最近" #: src/exm-browse-page.blp:50 src/exm-detail-view.blp:113 msgid "Name" msgstr "名称" #: src/exm-browse-page.blp:57 msgid "Sort search results" msgstr "排序搜索结果" #: src/exm-browse-page.blp:103 msgid "_Load More Results" msgstr "载入更多结果 (_L)" #: src/exm-browse-page.blp:137 src/exm-installed-page.blp:123 msgid "No Results Found" msgstr "没有找到结果" #: src/exm-browse-page.blp:144 msgid "Try a different search" msgstr "请尝试更换搜索词" #: src/exm-browse-page.blp:178 src/exm-comment-dialog.blp:34 #: src/exm-detail-view.blp:49 src/exm-detail-view.blp:291 #: src/exm-upgrade-assistant.blp:100 msgid "Connection Error" msgstr "网络连接错误" #: src/exm-comment-dialog.blp:13 src/exm-detail-view.blp:248 msgid "Reviews and Comments" msgstr "评论" #: src/exm-comment-dialog.blp:25 msgid "Loading" msgstr "正在加载" #: src/exm-comment-tile.blp:30 src/exm-detail-view.blp:127 msgid "Author" msgstr "作者" #: src/exm-detail-view.blp:40 msgid "Loading Details" msgstr "加载详情中" #: src/exm-detail-view.blp:59 src/exm-window.c:347 msgid "An Error Occurred" msgstr "发生了一个错误" #: src/exm-detail-view.blp:60 msgid "No extension details available" msgstr "无扩展详细信息" #: src/exm-detail-view.blp:154 msgid "Enlarge Image" msgstr "放大图片" #: src/exm-detail-view.blp:172 src/exm-extension-row.blp:89 msgid "Description" msgstr "描述" #: src/exm-detail-view.blp:195 msgid "Links" msgstr "链接" #: src/exm-detail-view.blp:203 msgid "Homepage" msgstr "主页" #: src/exm-detail-view.blp:219 msgid "Donate" msgstr "捐赠" #: src/exm-detail-view.blp:228 msgid "View on Extensions" msgstr "在 Extensions 网站中查看" #: src/exm-detail-view.blp:271 msgid "Reviews and comments are disabled for this extension" msgstr "该扩展的评论已被禁用" #: src/exm-detail-view.blp:314 msgid "There are no reviews or comments" msgstr "没有评论" #: src/exm-detail-view.blp:343 msgid "_Show All" msgstr "显示所有 (_S)" #. Translators: '%s' = extension name #: src/exm-detail-view.c:445 #, c-format msgid "%s Icon" msgstr "%s 图标" #. Translators: '%s' = extension name #: src/exm-detail-view.c:478 #, c-format msgid "%s Screenshot" msgstr "%s 屏幕截图" #: src/exm-error-dialog.blp:7 msgid "Error Report" msgstr "错误报告" #: src/exm-error-dialog.blp:22 msgid "An unexpected error occurred in Extension Manager" msgstr "扩展管理器发生了意外错误" #: src/exm-error-dialog.blp:36 msgid "Copy to Clipboard" msgstr "复制到剪贴板" #: src/exm-error-dialog.blp:77 msgid "_New Issue" msgstr "新建 Issue (_N)" #. Success indicator #: src/exm-error-dialog.c:125 src/exm-upgrade-assistant.c:347 msgid "Copied" msgstr "已复制" #: src/exm-error-dialog.c:173 msgid "Please open a new issue and attach the following information:" msgstr "请开启一个新 Issue 并附加以下信息:" #. Translators: '%s' = Name of Distributor (e.g. "Packager123") #: src/exm-error-dialog.c:177 #, c-format msgid "" "You are using a third-party build of Extension Manager. Please contact the package distributor (%s) first before " "filing an issue. Be sure to attach the following information:" msgstr "" "您在使用扩展管理器的第三方版本。在发布 Issue 前,请先联" "系软件包分发者 (%s)。确保带有以下信息:" #. Translators: Button's tooltip to open extension's preferences dialog #: src/exm-extension-row.blp:28 msgid "Open extension preferences" msgstr "打开扩展属性" #. Translators: Icon's tooltip when an extension has an error #: src/exm-extension-row.blp:46 msgid "An error occurred while loading this extension" msgstr "加载此扩展时发生了一个错误" #. Translators: Icon's tooltip when an extension is incompatible #: src/exm-extension-row.blp:63 src/exm-install-button.c:117 msgid "This extension is incompatible with your current version of GNOME" msgstr "此扩展不兼容您目前的 GNOME 版本" #. Translators: Icon's tooltip when an extension update is available #: src/exm-extension-row.blp:80 msgid "A newer version of this extension is available" msgstr "此扩展有新版本可用" #: src/exm-extension-row.blp:98 src/exm-info-bar.blp:50 msgid "Version" msgstr "版本" #: src/exm-extension-row.blp:107 msgid "Session Modes" msgstr "会话模式" #: src/exm-extension-row.blp:137 msgid "Error" msgstr "错误" #: src/exm-extension-row.blp:158 msgid "See Details" msgstr "显示细节" #: src/exm-extension-row.blp:169 msgid "Remove…" msgstr "移除…" #: src/exm-extension-row.c:175 msgid "Unlock Dialog" msgstr "解锁对话框" #. Translators: GNOME Display Manager #: src/exm-extension-row.c:181 msgid "GDM" msgstr "GDM" #. Translators: Label when an extension runs on both, login and lock screens #: src/exm-extension-row.c:189 msgid "" "This extension will run while the screen is locked and no user is logged in" msgstr "此扩展将会在锁屏时和无用户登录时运行" #. Translators: Label when an extension runs on the lock screen #: src/exm-extension-row.c:194 msgid "This extension will run while the screen is locked" msgstr "此扩展将在锁屏时运行" #. Translators: Label when an extension runs on the login screen #: src/exm-extension-row.c:199 msgid "This extension will run while no user is logged in" msgstr "此扩展将在无用户登录时运行" #: src/exm-help-overlay.blp:11 msgctxt "shortcut window" msgid "General" msgstr "常规" #: src/exm-help-overlay.blp:14 msgctxt "shortcut window" msgid "Show Installed Page" msgstr "显示“已安装”页面" #: src/exm-help-overlay.blp:19 msgctxt "shortcut window" msgid "Show Browse Page" msgstr "显示“浏览”页面" #: src/exm-help-overlay.blp:24 msgctxt "shortcut window" msgid "Toggle Search" msgstr "打开搜索" #: src/exm-help-overlay.blp:29 msgctxt "shortcut window" msgid "Show Keyboard Shortcuts" msgstr "显示键盘快捷键" #: src/exm-help-overlay.blp:34 msgctxt "shortcut window" msgid "Close Window" msgstr "关闭窗口" #: src/exm-help-overlay.blp:39 msgctxt "shortcut window" msgid "Quit" msgstr "退出程序" #: src/exm-help-overlay.blp:45 msgctxt "shortcut window" msgid "Screenshot View" msgstr "屏幕截图查看" #: src/exm-help-overlay.blp:48 src/exm-help-overlay.blp:63 msgctxt "shortcut window" msgid "Zoom In" msgstr "放大" #: src/exm-help-overlay.blp:53 src/exm-help-overlay.blp:68 msgctxt "shortcut window" msgid "Zoom Out" msgstr "缩小" #: src/exm-help-overlay.blp:58 msgctxt "shortcut window" msgid "Reset Zoom" msgstr "重设缩放比例" #: src/exm-info-bar.blp:28 msgctxt "Number of downloads" msgid "Downloads" msgstr "下载量" #: src/exm-info-bar.c:107 msgid "Unsupported" msgstr "不受支持" #: src/exm-install-button.c:127 msgid "Install…" msgstr "安装…" #: src/exm-install-button.c:132 msgid "Installing" msgstr "安装中" #: src/exm-install-button.c:136 msgctxt "State" msgid "Installed" msgstr "已安装" #: src/exm-install-button.c:140 msgid "Unsupported…" msgstr "不受支持…" #: src/exm-installed-page.blp:16 msgid "_Log Out…" msgstr "_注销…" #: src/exm-installed-page.blp:28 msgid "Use Extensions" msgstr "使用扩展" #: src/exm-installed-page.blp:29 msgid "Extensions can cause performance and stability issues" msgstr "扩展可能会导致出现性能和稳定性问题" #: src/exm-installed-page.blp:34 src/exm-upgrade-assistant.blp:133 msgid "User-Installed Extensions" msgstr "用户安装的扩展" #: src/exm-installed-page.blp:51 src/exm-upgrade-assistant.blp:150 msgid "No User Extensions Installed" msgstr "没有已安装的用户扩展" #: src/exm-installed-page.blp:55 msgid "Browse" msgstr "浏览" #: src/exm-installed-page.blp:69 src/exm-upgrade-assistant.blp:160 msgid "System Extensions" msgstr "系统扩展" #: src/exm-installed-page.blp:86 src/exm-upgrade-assistant.blp:177 msgid "No System Extensions Installed" msgstr "没有已安装的系统扩展" #. Translators: Text announced by screen readers when interacting with the list of search results #: src/exm-installed-page.blp:111 msgid "Search Results" msgstr "排序搜索结果" #: src/exm-installed-page.blp:124 msgid "Try a different search or search online" msgstr "尝试更换搜索词或在线搜索" #: src/exm-installed-page.blp:131 msgid "_Search Online" msgstr "在线搜索 (_S)" #. Translators: '%d' = number of extensions that will be updated #: src/exm-installed-page.c:298 #, c-format msgid "%d extension will be updated on next login" msgid_plural "%d extensions will be updated on next login" msgstr[0] "%d 个扩展将在下次登录时更新" #: src/exm-rating.c:142 #, c-format msgid "%i Star" msgid_plural "%i Stars" msgstr[0] "%i 颗星星" #. Translators: Button's tooltip to zoom out screenshots #: src/exm-screenshot-view.blp:37 msgid "Zoom Out" msgstr "缩小" #. Translators: Button's tooltip to zoom in screenshots #: src/exm-screenshot-view.blp:51 msgid "Zoom In" msgstr "放大" #: src/exm-upgrade-assistant.blp:11 msgid "Upgrade Assistant" msgstr "更新助理" #: src/exm-upgrade-assistant.blp:66 msgid "_Check Compatibility" msgstr "检查兼容性 (_C)" #: src/exm-upgrade-assistant.blp:189 msgid "_Copy to Clipboard" msgstr "复制到剪贴板 (_C)" #: src/exm-upgrade-assistant.c:188 #, c-format msgid "Checked %d/%d Extensions" msgstr "已检查 %d/%d 扩展" #. Set percentage text #: src/exm-upgrade-assistant.c:207 #, c-format msgid "%d%% Compatible" msgstr "%d%% 兼容" #: src/exm-upgrade-assistant.c:223 #, c-format msgid "" "GNOME %s supports %d out of %d of the extensions currently " "installed on the system" msgstr "GNOME %s 支持的本机扩展数量:%d,一共为 %d 个" #. Translators: Icon's tooltip when an extension is compatible #: src/exm-upgrade-assistant.c:503 msgid "A compatible version of the extension exists" msgstr "此扩展现存的兼容版本" #. Translators: Icon's tooltip when an extension is not compatible #: src/exm-upgrade-assistant.c:510 msgid "No compatible version of the extension exists" msgstr "此扩展没有现存的兼容版本" #. Translators: Icon's tooltip when an extension compatibility is unknown #: src/exm-upgrade-assistant.c:517 msgid "" "This extension is not hosted on extensions.gnome.org. Its compatibility " "cannot be determined." msgstr "此扩展没有在 extensions.gnome.org 上托管,因此无法确定其兼容性。" #: src/exm-upgrade-assistant.c:608 #, c-format msgid "" "You are currently running GNOME %s. Select a version of GNOME below " "and check whether your extensions will continue to be available." msgstr "" "您正在运行GNOME %s。请在下面选择一个 GNOME 版本,并检查您的扩展是否将" "继续可用。" #. Translators: Tooltip of the search icon in the header bar #: src/exm-window.blp:39 msgid "Search Installed Extensions" msgstr "搜索已安装的扩展" #: src/exm-window.blp:48 msgid "Main Menu" msgstr "主菜单" #: src/exm-window.blp:59 msgid "Search for installed extensions" msgstr "搜索已安装的扩展" #: src/exm-window.blp:71 msgctxt "Navigation" msgid "_Installed" msgstr "已安装 (_I)" #: src/exm-window.blp:80 msgctxt "Navigation" msgid "_Browse" msgstr "浏览 (_B)" #. Translators: the character preceded by "_" should not be the same #. as others in the same menu #: src/exm-window.blp:108 msgid "Sort _Enabled First" msgstr "优先显示已启用扩展 (_E)" #: src/exm-window.blp:109 msgid "_Show Unsupported" msgstr "显示不支持的扩展 (_S)" #: src/exm-window.blp:113 msgid "_Upgrade Assistant" msgstr "更新助理 (_U)" #: src/exm-window.blp:114 msgid "_Keyboard Shortcuts" msgstr "键盘快捷键 (_K)" #: src/exm-window.blp:115 msgid "_About Extension Manager" msgstr "关于扩展管理器 (_A)" #: src/exm-window.blp:120 msgid "Uninstall Extension?" msgstr "卸载扩展吗?" #: src/exm-window.blp:121 msgid "" "The extension's features and functionality will no longer be accessible. Are " "you sure you want to uninstall?" msgstr "您将无法再使用此扩展的特性与功能。确定要卸载吗?" #: src/exm-window.blp:126 msgid "_No" msgstr "否 (_N)" #: src/exm-window.blp:127 msgid "_Yes" msgstr "是 (_Y)" #: src/exm-window.blp:132 msgid "Unsupported Extension" msgstr "不受支持的扩展" #: src/exm-window.blp:133 msgid "" "This extension does not support your GNOME Shell version. It may cause " "errors if installed." msgstr "此扩展不支持您目前的 GNOME Shell 版本。安装后可能导致错误。" #: src/exm-window.blp:139 msgid "_Install Anyway" msgstr "依然安装 (_I)" #: src/exm-window.blp:140 msgid "_Go Back" msgstr "返回 (_G)" #: src/exm-window.c:348 msgid "_Details" msgstr "细节 (_D)" #: src/web/exm-request-handler.c:99 msgid "" "Check GNOME infrastructure status " "and try again later" msgstr "" "请检查GNOME基础设施状态并稍后再试" #: src/web/exm-request-handler.c:100 msgid "Check your network status and try again" msgstr "请检查您的网络状况并重试" #~ msgid "Comments" #~ msgstr "留言" #~ msgid "Loading Comments" #~ msgstr "加载评论中" #~ msgid "User Reviews" #~ msgstr "用户评论" #~ msgid "No comments yet" #~ msgstr "暂无留言" #~ msgid "" #~ "This extension could be activated in session modes such as the login " #~ "screen or the lock screen" #~ msgstr "此扩展可用在登录屏幕或锁定屏幕等会话模式中启用" #, c-format #~ msgid "%s by %s" #~ msgstr "%s 由 %s 提供" #, fuzzy #~| msgid "Updates are available" #~ msgid "Updates Available" #~ msgstr "有可用更新" #~ msgid "Supported" #~ msgstr "已支持" #~ msgid "Unknown" #~ msgstr "未知" #~ msgid "A utility for managing GNOME Shell Extensions" #~ msgstr "一款管理 GNOME Shell 扩展的使用程序" #, c-format #~ msgid "e.g. “%s”" #~ msgstr "例如,“%s”" #~ msgid "This extension is incompatible with your current version of GNOME." #~ msgstr "此扩展不兼容您当前 GNOME 版本。" #~ msgid "An error occurred." #~ msgstr "发生了一个错误。" #~ msgid "Return to view" #~ msgstr "返回查看" #~ msgid "@app_title@" #~ msgstr "@app_title@" #~ msgid "Translation updates" #~ msgstr "翻译更新" #~ msgid "Various bug fixes" #~ msgstr "各种错误修复" #~ msgid "Performance and stability" #~ msgstr "性能和稳定性" #~ msgid "Remove release notes dialog" #~ msgstr "移除发行说明对话框" #~ msgid "Fix special characters in installed extension listings" #~ msgstr "修复已安装扩展列表中的特殊字符" #~ msgid "The second feature update to extension-manager. Highlights include:" #~ msgstr "扩展管理器的第二次功能更新。包括以下亮点:" #~ msgid "View comments and reviews" #~ msgstr "显示留言和评论" #~ msgid "Support for in-app updates" #~ msgstr "支持应用内更新" #~ msgid "Better handling errors and out-of-date extensions" #~ msgstr "更好的处理错误和过时扩展" #~ msgid "Allow installing 'unsupported' extensions" #~ msgstr "允许安装“不支持”的扩展" #~ msgid "Display release notes on first run" #~ msgstr "第一次运行时显示发行说明" #~ msgid "New app icon" #~ msgstr "新的应用图标" #~ msgid "Optionally sort extensions by enabled status" #~ msgstr "根据扩展的启用状态进行排序" #~ msgid "Fix special characters in search results" #~ msgstr "修复搜索结果中的特殊字符" #~ msgid "Fixes a crash that sometimes occurs while uninstalling an extension" #~ msgstr "修复了卸载扩展程序时有时发生的崩溃" #~ msgid "The first feature update to extension-manager. Highlights include:" #~ msgstr "扩展管理器的第一次功能更新。包括以下亮点:" #~ msgid "Dark theme and support for overriding the system colour scheme" #~ msgstr "深色主题和支持覆盖系统配色方案" #~ msgid "Shows screenshots in extension listings" #~ msgstr "显示扩展列表中的屏幕截图" #~ msgid "Shell version compatibility check" #~ msgstr "Shell 版本兼容性检查" #~ msgid "Localised into seven languages" #~ msgstr "翻译成七种语言" #~ msgid "Global extension on/off toggle" #~ msgstr "全局扩展开关" #~ msgid "Displays user and system extensions separately" #~ msgstr "分别显示用户和系统扩展" #~ msgid "Extension Manager (Development)" #~ msgstr "扩展管理器(开发)" #~ msgid "Popularity" #~ msgstr "热度" #~ msgid "Supported Versions" #~ msgstr "支持的版本" #~ msgctxt "Navigation" #~ msgid "Browse" #~ msgstr "浏览" #~ msgid "Theme" #~ msgstr "主题" #~ msgid "Follow System" #~ msgstr "跟随系统" #~ msgid "Light" #~ msgstr "浅色" #~ msgid "Dark" #~ msgstr "深色" #~ msgid "Are you sure you want to uninstall?" #~ msgstr "您确定要卸载吗?" extension-manager-0.6.3/po/zh_TW.po000066400000000000000000000530221477302130300171570ustar00rootroot00000000000000# Chinese(Taiwan) translations for extension-manager package. # Copyright (C) 2022 extension-manager'S COPYRIGHT HOLDER # This file is distributed under the same license as the extension-manager package. # Oliver Tzeng(曾嘉禾), 2022. # Peter Dave Hello , 2024. # hugoalh , 2024. # pan93412 , 2025. # taijuin Lee , 2025. msgid "" msgstr "" "Project-Id-Version: extension-manager\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-03-06 16:36+0000\n" "PO-Revision-Date: 2025-03-12 07:04+0000\n" "Last-Translator: taijuin Lee \n" "Language-Team: Chinese (Traditional Han script) \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: Weblate 5.10.3-dev\n" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:2 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:6 #: src/exm-window.blp:7 msgid "Extension Manager" msgstr "擴充功能管理員" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:11 msgid "Manage GNOME Shell Extensions" msgstr "管理 GNOME Shell 擴充功能" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #. Make sure to leave the original strings and add your translations afterwards, so that users can search both in English and your language. #: data/com.mattjakeman.ExtensionManager.desktop.in.in:14 msgid "extension;manager;shell;" msgstr "extension;manager;shell;擴充功能;管理員;管理器;殼層;" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:7 msgid "Browse, install, and manage GNOME Shell Extensions" msgstr "瀏覽、安裝和管理 GNOME Shell 擴充功能" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:13 msgid "A utility for browsing and installing GNOME Shell Extensions." msgstr "用於瀏覽和安裝 GNOME Shell 擴充功能的工具程式。" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:14 msgid "Features:" msgstr "功能:" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:16 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:26 msgid "Browse extensions.gnome.org right inside the app" msgstr "在應用程式內瀏覽 extensions.gnome.org" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:17 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:22 msgid "Manage the extensions you already have installed" msgstr "管理已安裝的擴充功能" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:30 msgid "See all the details of your extensions" msgstr "查看所有擴充功能的詳細資訊" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:34 msgid "Check your extensions compatibility with the next version of GNOME" msgstr "檢查您的擴充功能與下一版本 GNOME 的相容性" #: src/exm-application.c:201 msgid "Browse, install, and manage GNOME Shell Extensions." msgstr "瀏覽、安裝和管理 GNOME Shell 擴充功能。" #. Translators: Use 'Name email@domain.com' or 'Name https://website.example' (without single quotes). Do not delete existing names, write yours on a new line. #: src/exm-application.c:204 msgid "translator-credits" msgstr "" "Sean Wang \n" "Oliver Tzeng(曾嘉禾) \n" "taijuin " #: src/exm-browse-page.blp:16 msgid "Search for Extensions" msgstr "搜尋擴充功能" #: src/exm-browse-page.blp:17 msgid "" "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell Extensions" msgstr "輸入關鍵字以在 extensions.gnome.org 搜尋 GNOME Shell 擴充功能" #: src/exm-browse-page.blp:47 msgid "Relevance" msgstr "相關性" #: src/exm-browse-page.blp:48 msgctxt "Sort search results" msgid "Downloads" msgstr "下載次數" #: src/exm-browse-page.blp:49 msgid "Recent" msgstr "最近" #: src/exm-browse-page.blp:50 src/exm-detail-view.blp:113 msgid "Name" msgstr "名稱" #: src/exm-browse-page.blp:57 msgid "Sort search results" msgstr "排序搜尋結果" #: src/exm-browse-page.blp:103 msgid "_Load More Results" msgstr "載入更多結果(_L)" #: src/exm-browse-page.blp:137 src/exm-installed-page.blp:123 msgid "No Results Found" msgstr "無搜尋結果" #: src/exm-browse-page.blp:144 msgid "Try a different search" msgstr "試試不同的搜尋方式" #: src/exm-browse-page.blp:178 src/exm-comment-dialog.blp:34 #: src/exm-detail-view.blp:49 src/exm-detail-view.blp:291 #: src/exm-upgrade-assistant.blp:100 msgid "Connection Error" msgstr "連線錯誤" #: src/exm-comment-dialog.blp:13 src/exm-detail-view.blp:248 msgid "Reviews and Comments" msgstr "評論" #: src/exm-comment-dialog.blp:25 msgid "Loading" msgstr "正在載入" #: src/exm-comment-tile.blp:30 src/exm-detail-view.blp:127 msgid "Author" msgstr "作者" #: src/exm-detail-view.blp:40 msgid "Loading Details" msgstr "正在載入詳細資訊" #: src/exm-detail-view.blp:59 src/exm-window.c:347 msgid "An Error Occurred" msgstr "發生錯誤" #: src/exm-detail-view.blp:60 msgid "No extension details available" msgstr "無擴充功能詳細資訊" #: src/exm-detail-view.blp:154 msgid "Enlarge Image" msgstr "放大圖片" #: src/exm-detail-view.blp:172 src/exm-extension-row.blp:89 msgid "Description" msgstr "描述" #: src/exm-detail-view.blp:195 msgid "Links" msgstr "連結" #: src/exm-detail-view.blp:203 msgid "Homepage" msgstr "首頁" #: src/exm-detail-view.blp:219 msgid "Donate" msgstr "贊助" #: src/exm-detail-view.blp:228 msgid "View on Extensions" msgstr "在 Extensions 網站上查看" #: src/exm-detail-view.blp:271 msgid "Reviews and comments are disabled for this extension" msgstr "此擴充功能的評論已停用" #: src/exm-detail-view.blp:314 msgid "There are no reviews or comments" msgstr "沒有評論" #: src/exm-detail-view.blp:343 msgid "_Show All" msgstr "顯示全部(_S)" #. Translators: '%s' = extension name #: src/exm-detail-view.c:445 #, c-format msgid "%s Icon" msgstr "%s 圖示" #. Translators: '%s' = extension name #: src/exm-detail-view.c:478 #, c-format msgid "%s Screenshot" msgstr "%s 螢幕快照" #: src/exm-error-dialog.blp:7 msgid "Error Report" msgstr "錯誤報告" #: src/exm-error-dialog.blp:22 msgid "An unexpected error occurred in Extension Manager" msgstr "擴充功能管理員發生意外錯誤" #: src/exm-error-dialog.blp:36 msgid "Copy to Clipboard" msgstr "複製到剪貼簿" #: src/exm-error-dialog.blp:77 msgid "_New Issue" msgstr "新問題(_N)" #. Success indicator #: src/exm-error-dialog.c:125 src/exm-upgrade-assistant.c:347 msgid "Copied" msgstr "已複製" #: src/exm-error-dialog.c:173 msgid "Please open a new issue and attach the following information:" msgstr "請開啟一個新問題並附上以下資訊:" #. Translators: '%s' = Name of Distributor (e.g. "Packager123") #: src/exm-error-dialog.c:177 #, c-format msgid "" "You are using a third-party build of Extension Manager. Please contact the package distributor (%s) first before " "filing an issue. Be sure to attach the following information:" msgstr "" "您正在使用第三方版本的擴充功能管理員。在提交問題之前,請先聯絡軟體包分發者(%s)。請務必附上以下資訊:" #. Translators: Button's tooltip to open extension's preferences dialog #: src/exm-extension-row.blp:28 msgid "Open extension preferences" msgstr "開啟擴充功能偏好設定" #. Translators: Icon's tooltip when an extension has an error #: src/exm-extension-row.blp:46 msgid "An error occurred while loading this extension" msgstr "載入此擴充功能時發生錯誤" #. Translators: Icon's tooltip when an extension is incompatible #: src/exm-extension-row.blp:63 src/exm-install-button.c:117 msgid "This extension is incompatible with your current version of GNOME" msgstr "此擴充功能與您目前的 GNOME 版本不相容" #. Translators: Icon's tooltip when an extension update is available #: src/exm-extension-row.blp:80 msgid "A newer version of this extension is available" msgstr "此擴充功能有可用的新版本" #: src/exm-extension-row.blp:98 src/exm-info-bar.blp:50 msgid "Version" msgstr "版本" #: src/exm-extension-row.blp:107 msgid "Session Modes" msgstr "工作階段模式" #: src/exm-extension-row.blp:137 msgid "Error" msgstr "錯誤" #: src/exm-extension-row.blp:158 msgid "See Details" msgstr "查看詳細資訊" #: src/exm-extension-row.blp:169 msgid "Remove…" msgstr "移除…" #: src/exm-extension-row.c:175 msgid "Unlock Dialog" msgstr "解鎖對話框" #. Translators: GNOME Display Manager #: src/exm-extension-row.c:181 msgid "GDM" msgstr "GDM" #. Translators: Label when an extension runs on both, login and lock screens #: src/exm-extension-row.c:189 msgid "" "This extension will run while the screen is locked and no user is logged in" msgstr "此擴充功能會在螢幕鎖定且無使用者登入時執行" #. Translators: Label when an extension runs on the lock screen #: src/exm-extension-row.c:194 msgid "This extension will run while the screen is locked" msgstr "此擴充功能會在螢幕鎖定時執行" #. Translators: Label when an extension runs on the login screen #: src/exm-extension-row.c:199 msgid "This extension will run while no user is logged in" msgstr "此擴充功能會在沒有使用者登入時執行" #: src/exm-help-overlay.blp:11 msgctxt "shortcut window" msgid "General" msgstr "一般" #: src/exm-help-overlay.blp:14 msgctxt "shortcut window" msgid "Show Installed Page" msgstr "顯示已安裝頁面" #: src/exm-help-overlay.blp:19 msgctxt "shortcut window" msgid "Show Browse Page" msgstr "顯示瀏覽頁面" #: src/exm-help-overlay.blp:24 msgctxt "shortcut window" msgid "Toggle Search" msgstr "切換搜尋" #: src/exm-help-overlay.blp:29 msgctxt "shortcut window" msgid "Show Keyboard Shortcuts" msgstr "顯示鍵盤快捷鍵" #: src/exm-help-overlay.blp:34 msgctxt "shortcut window" msgid "Close Window" msgstr "關閉視窗" #: src/exm-help-overlay.blp:39 msgctxt "shortcut window" msgid "Quit" msgstr "結束" #: src/exm-help-overlay.blp:45 msgctxt "shortcut window" msgid "Screenshot View" msgstr "螢幕快照檢視" #: src/exm-help-overlay.blp:48 src/exm-help-overlay.blp:63 msgctxt "shortcut window" msgid "Zoom In" msgstr "放大" #: src/exm-help-overlay.blp:53 src/exm-help-overlay.blp:68 msgctxt "shortcut window" msgid "Zoom Out" msgstr "縮小" #: src/exm-help-overlay.blp:58 msgctxt "shortcut window" msgid "Reset Zoom" msgstr "重設縮放比例" #: src/exm-info-bar.blp:28 msgctxt "Number of downloads" msgid "Downloads" msgstr "下載次數" #: src/exm-info-bar.c:107 msgid "Unsupported" msgstr "不支援" #: src/exm-install-button.c:127 msgid "Install…" msgstr "安裝…" #: src/exm-install-button.c:132 msgid "Installing" msgstr "正在安裝" #: src/exm-install-button.c:136 msgctxt "State" msgid "Installed" msgstr "已安裝" #: src/exm-install-button.c:140 msgid "Unsupported…" msgstr "不支援…" #: src/exm-installed-page.blp:16 msgid "_Log Out…" msgstr "登出(_L)…" #: src/exm-installed-page.blp:28 msgid "Use Extensions" msgstr "使用擴充功能" #: src/exm-installed-page.blp:29 msgid "Extensions can cause performance and stability issues" msgstr "擴充功能可能造成效能和穩定性問題" #: src/exm-installed-page.blp:34 src/exm-upgrade-assistant.blp:133 msgid "User-Installed Extensions" msgstr "使用者安裝的擴充功能" #: src/exm-installed-page.blp:51 src/exm-upgrade-assistant.blp:150 msgid "No User Extensions Installed" msgstr "沒有已安裝的使用者擴充功能" #: src/exm-installed-page.blp:55 msgid "Browse" msgstr "瀏覽" #: src/exm-installed-page.blp:69 src/exm-upgrade-assistant.blp:160 msgid "System Extensions" msgstr "系統擴充功能" #: src/exm-installed-page.blp:86 src/exm-upgrade-assistant.blp:177 msgid "No System Extensions Installed" msgstr "沒有已安裝的系統擴充功能" #. Translators: Text announced by screen readers when interacting with the list of search results #: src/exm-installed-page.blp:111 msgid "Search Results" msgstr "搜尋結果" #: src/exm-installed-page.blp:124 msgid "Try a different search or search online" msgstr "嘗試不同的搜尋或線上搜尋" #: src/exm-installed-page.blp:131 msgid "_Search Online" msgstr "線上搜尋(_S)" #. Translators: '%d' = number of extensions that will be updated #: src/exm-installed-page.c:298 #, c-format msgid "%d extension will be updated on next login" msgid_plural "%d extensions will be updated on next login" msgstr[0] "%d 個擴充功能將會在下次登入時更新" #: src/exm-rating.c:142 #, c-format msgid "%i Star" msgid_plural "%i Stars" msgstr[0] "%i 顆星星" #. Translators: Button's tooltip to zoom out screenshots #: src/exm-screenshot-view.blp:37 msgid "Zoom Out" msgstr "縮小" #. Translators: Button's tooltip to zoom in screenshots #: src/exm-screenshot-view.blp:51 msgid "Zoom In" msgstr "放大" #: src/exm-upgrade-assistant.blp:11 msgid "Upgrade Assistant" msgstr "升級助理" #: src/exm-upgrade-assistant.blp:66 msgid "_Check Compatibility" msgstr "檢查相容性(_C)" #: src/exm-upgrade-assistant.blp:189 msgid "_Copy to Clipboard" msgstr "複製到剪貼簿(_C)" #: src/exm-upgrade-assistant.c:188 #, c-format msgid "Checked %d/%d Extensions" msgstr "已檢查 %d/%d 個擴充功能" #. Set percentage text #: src/exm-upgrade-assistant.c:207 #, c-format msgid "%d%% Compatible" msgstr "%d%% 相容" #: src/exm-upgrade-assistant.c:223 #, c-format msgid "" "GNOME %s supports %d out of %d of the extensions currently " "installed on the system" msgstr "GNOME %s 支援目前安裝在系統上的 %d/%d 個擴充功能" #. Translators: Icon's tooltip when an extension is compatible #: src/exm-upgrade-assistant.c:503 msgid "A compatible version of the extension exists" msgstr "此擴充功能有相容的版本" #. Translators: Icon's tooltip when an extension is not compatible #: src/exm-upgrade-assistant.c:510 msgid "No compatible version of the extension exists" msgstr "此擴充功能無相容的版本" #. Translators: Icon's tooltip when an extension compatibility is unknown #: src/exm-upgrade-assistant.c:517 msgid "" "This extension is not hosted on extensions.gnome.org. Its compatibility " "cannot be determined." msgstr "此擴充功能並非來自 extensions.gnome.org。無法確認相容性。" #: src/exm-upgrade-assistant.c:608 #, c-format msgid "" "You are currently running GNOME %s. Select a version of GNOME below " "and check whether your extensions will continue to be available." msgstr "您正在執行 GNOME %s。請在下方選擇一個 GNOME " "版本,並檢查您的擴充功能是否可以繼續使用。" #. Translators: Tooltip of the search icon in the header bar #: src/exm-window.blp:39 msgid "Search Installed Extensions" msgstr "搜尋已安裝的擴充功能" #: src/exm-window.blp:48 msgid "Main Menu" msgstr "主選單" #: src/exm-window.blp:59 msgid "Search for installed extensions" msgstr "搜尋已安裝的擴充功能" #: src/exm-window.blp:71 msgctxt "Navigation" msgid "_Installed" msgstr "已安裝(_I)" #: src/exm-window.blp:80 msgctxt "Navigation" msgid "_Browse" msgstr "瀏覽(_B)" #. Translators: the character preceded by "_" should not be the same #. as others in the same menu #: src/exm-window.blp:108 msgid "Sort _Enabled First" msgstr "已啟用的優先(_E)" #: src/exm-window.blp:109 msgid "_Show Unsupported" msgstr "顯示不支援的(_S)" #: src/exm-window.blp:113 msgid "_Upgrade Assistant" msgstr "升級助理(_U)" #: src/exm-window.blp:114 msgid "_Keyboard Shortcuts" msgstr "鍵盤快捷鍵(_K)" #: src/exm-window.blp:115 msgid "_About Extension Manager" msgstr "關於擴充功能管理員(_A)" #: src/exm-window.blp:120 msgid "Uninstall Extension?" msgstr "解除安裝擴充功能?" #: src/exm-window.blp:121 msgid "" "The extension's features and functionality will no longer be accessible. Are " "you sure you want to uninstall?" msgstr "此擴充功能的特性和功能將不再可用。您確定要解除安裝嗎?" #: src/exm-window.blp:126 msgid "_No" msgstr "否(_N)" #: src/exm-window.blp:127 msgid "_Yes" msgstr "是(_Y)" #: src/exm-window.blp:132 msgid "Unsupported Extension" msgstr "不支援的擴充功能" #: src/exm-window.blp:133 msgid "" "This extension does not support your GNOME Shell version. It may cause " "errors if installed." msgstr "此擴充功能不支援您的 GNOME Shell 版本。如果安裝的話可能會導致錯誤。" #: src/exm-window.blp:139 msgid "_Install Anyway" msgstr "仍要安裝(_I)" #: src/exm-window.blp:140 msgid "_Go Back" msgstr "返回(_G)" #: src/exm-window.c:348 msgid "_Details" msgstr "詳細資訊(_D)" #: src/web/exm-request-handler.c:99 msgid "" "Check GNOME infrastructure status " "and try again later" msgstr "" "請檢查GNOME 基礎設施狀態並稍後再試" #: src/web/exm-request-handler.c:100 msgid "Check your network status and try again" msgstr "請檢查您的網路狀態然後再試一次" #~ msgid "Comments" #~ msgstr "評論" #~ msgid "Loading Comments" #~ msgstr "正在載入評論" #~ msgid "User Reviews" #~ msgstr "使用者評論" #~ msgid "No comments yet" #~ msgstr "暫無評論" #~ msgid "" #~ "This extension could be activated in session modes such as the login " #~ "screen or the lock screen" #~ msgstr "此擴充功能可以在登入畫面或鎖定畫面等工作階段模式中啟用" #, c-format #~ msgid "%s by %s" #~ msgstr "%s 由 %s 提供" #~ msgid "Updates Available" #~ msgstr "有可用的更新" #~ msgid "Supported" #~ msgstr "支援" #~ msgid "Unknown" #~ msgstr "未知" #~ msgid "A utility for managing GNOME Shell Extensions" #~ msgstr "一個用來管理 GNOME Shell 擴充功能的工具程式" #, c-format #~ msgid "e.g. “%s”" #~ msgstr "例如「%s」" #~ msgid "This extension is incompatible with your current version of GNOME." #~ msgstr "此擴充功能不支援你目前使用的 GNOME 版本。" #~ msgid "An error occurred." #~ msgstr "發生錯誤。" #~ msgid "Return to view" #~ msgstr "返回至檢視畫面" #~ msgid "@app_title@" #~ msgstr "@app_title@" #~ msgid "Translation updates" #~ msgstr "翻譯更新" #~ msgid "Various bug fixes" #~ msgstr "錯誤修正" #~ msgid "Performance and stability" #~ msgstr "效能和穩定性" #~ msgid "Remove release notes dialog" #~ msgstr "移除更新日誌彈出視窗" #~ msgid "Fix special characters in installed extension listings" #~ msgstr "修正已安裝擴充套件列表中的特殊字元" #~ msgid "The second feature update to extension-manager. Highlights include:" #~ msgstr "第二個擴充套件管理員更新。值得注意的項目:" #~ msgid "View comments and reviews" #~ msgstr "檢視留言和評論" #~ msgid "Support for in-app updates" #~ msgstr "支援在應用程式內更新擴充套件" #~ msgid "Better handling errors and out-of-date extensions" #~ msgstr "更好地處理錯誤和老舊的擴充套件" #~ msgid "Allow installing 'unsupported' extensions" #~ msgstr "允許安裝不支援的擴充套件" #~ msgid "Display release notes on first run" #~ msgstr "首次開啟應用程式時顯示更新日誌" #~ msgid "New app icon" #~ msgstr "新的應用程式圖示" #~ msgid "Optionally sort extensions by enabled status" #~ msgstr "根據擴充套件的啟用狀態進行排序" #~ msgid "Fix special characters in search results" #~ msgstr "修正搜尋結果中的特殊字元" #~ msgid "Fixes a crash that sometimes occurs while uninstalling an extension" #~ msgstr "修正在解除安裝擴充套件時偶爾會發生的無預警關閉" #~ msgid "The first feature update to extension-manager. Highlights include:" #~ msgstr "第一個擴充套件管理員更新,值得注意的項目:" #~ msgid "Dark theme and support for overriding the system colour scheme" #~ msgstr "支援深色主題和強制覆寫系統配色" #~ msgid "Shows screenshots in extension listings" #~ msgstr "在擴充套件清單中顯示螢幕擷圖" #~ msgid "Shell version compatibility check" #~ msgstr "Shell 版本支援檢測" #~ msgid "Localised into seven languages" #~ msgstr "翻譯成 7 種語言" #~ msgid "Global extension on/off toggle" #~ msgstr "全域擴充套件開關" #~ msgid "Displays user and system extensions separately" #~ msgstr "分開顯示使用者和系統擴充套件" #~ msgid "Extension Manager (Development)" #~ msgstr "擴充套件管理員 (開發版)" #~ msgid "Popularity" #~ msgstr "熱門" #~ msgid "Supported Versions" #~ msgstr "支援版本" #~ msgctxt "Navigation" #~ msgid "Browse" #~ msgstr "瀏覽" #~ msgid "Theme" #~ msgstr "主題" #~ msgid "Follow System" #~ msgstr "系統" #~ msgid "Light" #~ msgstr "淺色" #~ msgid "Dark" #~ msgstr "深色" #~ msgid "Are you sure you want to uninstall?" #~ msgstr "您確定要解除安裝此擴充套件?" #~ msgid "" #~ "A very simple tool for browsing, downloading, and managing GNOME shell " #~ "extensions." #~ msgstr "一個可以瀏覽、下載和管理擴充套件的簡單應用程式。" #~ msgid "e.g. \"Blur my Shell\"" #~ msgstr "例如 \"Blur my Shell\"" #~ msgid "What's New" #~ msgstr "新功能" #~ msgid "View Release Notes" #~ msgstr "顯示更新日誌" #, c-format #~ msgid "" #~ "This is your first time using Extension Manager %s.\n" #~ "Would you like to see the release notes?" #~ msgstr "" #~ "這是您第一次使用 擴充套件管理員 %s。\n" #~ "是否顯示更新日誌?" extension-manager-0.6.3/src/000077500000000000000000000000001477302130300157335ustar00rootroot00000000000000extension-manager-0.6.3/src/exm-application.c000066400000000000000000000216041477302130300211740ustar00rootroot00000000000000/* * exm-application.c * * Copyright 2022-2025 Matthew Jakeman * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General 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 "exm-config.h" #include "exm-application.h" #include "exm-window.h" #include "exm-utils.h" #include struct _ExmApplication { AdwApplication parent_instance; }; G_DEFINE_TYPE (ExmApplication, exm_application, ADW_TYPE_APPLICATION) ExmApplication * exm_application_new (gchar *application_id, GApplicationFlags flags) { return g_object_new (EXM_TYPE_APPLICATION, "application-id", application_id, "flags", flags, NULL); } static ExmWindow * get_current_window (GApplication *app) { GtkWindow *window; GSettings *settings; /* Get the current window or create one if necessary. */ window = gtk_application_get_active_window (GTK_APPLICATION (app)); if (window == NULL) window = g_object_new (EXM_TYPE_WINDOW, "application", app, NULL); settings = g_settings_new (APP_ID); g_settings_bind (settings, "width", window, "default-width", G_SETTINGS_BIND_DEFAULT); g_settings_bind (settings, "height", window, "default-height", G_SETTINGS_BIND_DEFAULT); g_settings_bind (settings, "is-maximized", window, "maximized", G_SETTINGS_BIND_DEFAULT); g_object_unref (settings); return EXM_WINDOW (window); } static void exm_application_activate (GApplication *app) { GtkWindow *window; /* It's good practice to check your parameters at the beginning of the * function. It helps catch errors early and in development instead of * by your users. */ g_assert (GTK_IS_APPLICATION (app)); window = GTK_WINDOW (get_current_window (app)); /* Ask the window manager/compositor to present the window. */ gtk_window_present (window); } static void exm_application_open (GApplication *app, GFile **files, gint n_files, const gchar *hint G_GNUC_UNUSED) { ExmWindow *window; GUri *uri; GError *error = NULL; const char *scheme; AdwDialog *dialog; const char *uuid; // Activate the application first exm_application_activate (app); // Now open the provided extension window = get_current_window (app); if (n_files <= 0) return; uri = g_uri_parse (g_file_get_uri (files[0]), G_URI_FLAGS_NONE, &error); if (error) { g_critical ("Error parsing URI: %s\n", error->message); return; } scheme = g_uri_get_scheme (uri); if (g_strcmp0 (scheme, "gnome-extensions") != 0) { g_critical ("Invalid URI scheme: '%s'\n", scheme); return; } dialog = adw_application_window_get_visible_dialog (ADW_APPLICATION_WINDOW (window)); if (dialog) adw_dialog_close (dialog); uuid = g_uri_get_host (uri); g_info ("Opening extension with UUID: '%s'\n", uuid); gtk_widget_activate_action (GTK_WIDGET (window), "win.show-detail", "s", uuid); } static void exm_application_class_init (ExmApplicationClass *klass) { GApplicationClass *app_class = G_APPLICATION_CLASS (klass); /* * We connect to the activate callback to create a window when the application * has been launched. Additionally, this callback notifies us when the user * tries to launch a "second instance" of the application. When they try * to do that, we'll just present any existing window. */ app_class->activate = exm_application_activate; app_class->open = exm_application_open; } static void exm_application_show_about (GSimpleAction *action G_GNUC_UNUSED, GVariant *parameter G_GNUC_UNUSED, gpointer user_data) { ExmApplication *self = EXM_APPLICATION (user_data); GtkWindow *window = NULL; const gchar *authors[] = {"Matthew Jakeman", NULL}; AdwDialog *about_dialog; g_return_if_fail (EXM_IS_APPLICATION (self)); window = gtk_application_get_active_window (GTK_APPLICATION (self)); about_dialog = adw_about_dialog_new_from_appdata (g_strdup_printf ("%s/com.mattjakeman.ExtensionManager.metainfo.xml", RESOURCE_PATH), strstr (APP_ID, ".Devel") == NULL ? APP_VERSION : NULL); adw_about_dialog_set_version (ADW_ABOUT_DIALOG (about_dialog), APP_VERSION); adw_about_dialog_set_comments (ADW_ABOUT_DIALOG (about_dialog), _("Browse, install, and manage GNOME Shell Extensions.")); adw_about_dialog_set_developers (ADW_ABOUT_DIALOG (about_dialog), authors); // Translators: Use 'Name email@domain.com' or 'Name https://website.example' (without single quotes). Do not delete existing names, write yours on a new line. adw_about_dialog_set_translator_credits (ADW_ABOUT_DIALOG (about_dialog), _("translator-credits")); adw_about_dialog_set_copyright (ADW_ABOUT_DIALOG (about_dialog), "© 2022-2025 Matthew Jakeman"); #if WITH_BACKTRACE adw_about_dialog_add_legal_section (ADW_ABOUT_DIALOG (about_dialog), "libbacktrace", "© 2012-2016 Free Software Foundation, Inc.", GTK_LICENSE_BSD_3, NULL); #endif adw_about_dialog_add_legal_section (ADW_ABOUT_DIALOG (about_dialog), "blueprint", "© 2021 James Westman", GTK_LICENSE_LGPL_3_0, NULL); adw_dialog_present (about_dialog, GTK_WIDGET (window)); } static void request_logout (ExmApplication *self) { // Request the GNOME Session Manager to log out GDBusConnection *conn; conn = g_application_get_dbus_connection (G_APPLICATION (self)); if (conn) { GError *error = NULL; g_dbus_connection_call_sync (conn, "org.gnome.SessionManager", "/org/gnome/SessionManager", "org.gnome.SessionManager", "Logout", g_variant_new ("(u)", 0), NULL, G_DBUS_CALL_FLAGS_NONE, -1, NULL, &error); if (error) g_warning ("Could not log out: %s", error->message); } } static void exm_application_init (ExmApplication *self) { GSettings *settings = g_settings_new (APP_ID); GSimpleAction *quit_action = g_simple_action_new ("quit", NULL); g_signal_connect_swapped (quit_action, "activate", G_CALLBACK (g_application_quit), self); g_action_map_add_action (G_ACTION_MAP (self), G_ACTION (quit_action)); GSimpleAction *about_action = g_simple_action_new ("about", NULL); g_signal_connect (about_action, "activate", G_CALLBACK (exm_application_show_about), self); g_action_map_add_action (G_ACTION_MAP (self), G_ACTION (about_action)); GSimpleAction *logout_action = g_simple_action_new ("logout", NULL); g_signal_connect_swapped (logout_action, "activate", G_CALLBACK (request_logout), self); g_action_map_add_action (G_ACTION_MAP (self), G_ACTION (logout_action)); GAction *sort_enabled_first_action = g_settings_create_action (settings, "sort-enabled-first"); g_action_map_add_action (G_ACTION_MAP (self), G_ACTION (sort_enabled_first_action)); GAction *show_unsupported_action = g_settings_create_action (settings, "show-unsupported"); g_action_map_add_action (G_ACTION_MAP (self), G_ACTION (show_unsupported_action)); g_object_unref (settings); const char *accels_quit[] = {"q", NULL}; gtk_application_set_accels_for_action (GTK_APPLICATION (self), "app.quit", accels_quit); const char *accels_close[] = {"w", NULL}; gtk_application_set_accels_for_action (GTK_APPLICATION (self), "window.close", accels_close); } extension-manager-0.6.3/src/exm-application.h000066400000000000000000000021701477302130300211760ustar00rootroot00000000000000/* * exm-application.h * * Copyright 2022-2025 Matthew Jakeman * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General 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 EXM_TYPE_APPLICATION (exm_application_get_type()) G_DECLARE_FINAL_TYPE (ExmApplication, exm_application, EXM, APPLICATION, AdwApplication) ExmApplication *exm_application_new (gchar *application_id, GApplicationFlags flags); G_END_DECLS extension-manager-0.6.3/src/exm-backtrace.c000066400000000000000000000060101477302130300206020ustar00rootroot00000000000000/* * exm-backtrace.c * * Copyright 2022-2025 Matthew Jakeman * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General 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 "exm-config.h" #include "exm-backtrace.h" #include #include #if WITH_BACKTRACE #include #include #endif #if WITH_BACKTRACE static struct backtrace_state *state = NULL; static int frames_omitted_count = 0; static void exm_backtrace_error_cb (void *data G_GNUC_UNUSED, const char *msg, int errnum) { g_warning ("Error (%d): %s\n", errnum, msg); } static int exm_backtrace_full_cb (void *data, uintptr_t pc G_GNUC_UNUSED, const char *filename, int lineno, const char *function) { GString *string_builder = (GString *) data; char *entry; entry = g_strdup_printf ("%s:%d '%s'\n", filename, lineno, function); if (strstr (entry, "null") != NULL) frames_omitted_count++; else { if (frames_omitted_count > 0) { g_string_append_printf (string_builder, "%d frame%s omitted\n", frames_omitted_count, (frames_omitted_count > 1) ? "s" : ""); frames_omitted_count = 0; } g_string_append (string_builder, entry); g_free (entry); } return 0; } #endif void exm_backtrace_init (char *filename G_GNUC_UNUSED) { #if WITH_BACKTRACE # ifdef BACKTRACE_SUPPORTED state = backtrace_create_state (filename, 0, exm_backtrace_error_cb, NULL); # else g_warning ("Backtraces are not supported.\n"); # endif #else g_info ("Backtraces were not enabled at build time.\n"); #endif } char * exm_backtrace_print () { #if WITH_BACKTRACE GString *string_builder; if (!state) { g_critical ("Cannot print backtrace.\n"); return NULL; } string_builder = g_string_new (""); backtrace_full (state, 0, exm_backtrace_full_cb, exm_backtrace_error_cb, string_builder); return g_string_free (string_builder, FALSE); #else g_critical ("Backtraces were not enabled at build time.\n"); return NULL; #endif } extension-manager-0.6.3/src/exm-backtrace.h000066400000000000000000000015331477302130300206140ustar00rootroot00000000000000/* exm-backtrace.h * * Copyright 2022 Matthew Jakeman * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General 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 */ void exm_backtrace_init (char *filename); char * exm_backtrace_print (); extension-manager-0.6.3/src/exm-browse-page.blp000066400000000000000000000116331477302130300214400ustar00rootroot00000000000000using Gtk 4.0; using Adw 1; template $ExmBrowsePage: Gtk.Widget { notify::manager => $on_bind_manager(); Adw.BreakpointBin { width-request: 360; height-request: 294; Adw.Breakpoint breakpoint { condition ("max-width: 400sp") } child: Adw.StatusPage status_page { title: _("Search for Extensions"); description: _("Enter a keyword to search 'extensions.gnome.org' for GNOME Shell Extensions"); valign: start; vexpand: true; child: Adw.Clamp { Gtk.Box { orientation: vertical; Gtk.Box { styles [ "linked" ] Gtk.SearchEntry search_entry { hexpand: true; search-delay: 750; realize => $on_search_entry_realize(); search-changed => $on_search_changed() swapped; changed => $gtk_widget_grab_focus(); accessibility { labelled-by: status_page; } } // Keep the same order as the ExmSearchSort enum Gtk.DropDown search_dropdown { model: StringList { // Translators: dropdown items for sorting search results strings [ _("Relevance"), C_("Sort search results", "Downloads"), _("Recent"), _("Name") ] }; notify::selected => $on_search_changed() swapped; accessibility { description: _("Sort search results"); } } } Gtk.Stack search_stack { Gtk.StackPage { name: "page_spinner"; child: Adw.Spinner { styles [ "dimmed" ] margin-top: 30; halign: center; valign: start; height-request: 64; width-request: 64; }; } Gtk.StackPage { name: "page_results"; child: Gtk.Box { orientation: vertical; spacing: 12; Gtk.ListBox search_results { styles [ "boxed-list" ] selection-mode: none; } Gtk.ListBox more_results_list { styles [ "boxed-list" ] selection-mode: none; Adw.ButtonRow more_results_btn { start-icon-name: "view-more-symbolic"; title: _("_Load More Results"); use-underline: true; activated => $on_load_more_results(); } } }; } Gtk.StackPage { name: "page_empty"; child: Gtk.Box { orientation: vertical; margin-start: 12; margin-end: 12; margin-top: 36; margin-bottom: 24; Gtk.Image { styles [ "dimmed" ] icon-name: "edit-find-symbolic"; halign: center; margin-bottom: 24; pixel-size: 128; } Gtk.Label { styles [ "title-1" ] label: _("No Results Found"); margin-bottom: 12; wrap: true; wrap-mode: word_char; } Gtk.Label { label: _("Try a different search"); margin-bottom: 12; wrap: true; wrap-mode: word_char; } }; } Gtk.StackPage { name: "page_error"; child: Gtk.Box { orientation: vertical; margin-start: 12; margin-end: 12; margin-top: 36; margin-bottom: 24; Gtk.Image { styles [ "dimmed" ] icon-name: "offline-symbolic"; halign: center; margin-bottom: 24; pixel-size: 128; } Gtk.Label { styles [ "title-1" ] label: _("Connection Error"); margin-bottom: 12; wrap: true; wrap-mode: word_char; } Gtk.Label error_label { margin-bottom: 12; wrap: true; wrap-mode: word_char; } }; } } } }; }; } } extension-manager-0.6.3/src/exm-browse-page.c000066400000000000000000000335331477302130300211100ustar00rootroot00000000000000/* * exm-browse-page.c * * Copyright 2022-2025 Matthew Jakeman * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General 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 "exm-browse-page.h" #include "exm-config.h" #include "exm-search-row.h" #include "exm-utils.h" #include "local/exm-manager.h" #include "web/exm-image-resolver.h" #include "web/exm-search-provider.h" #include "web/model/exm-search-result.h" #include #include struct _ExmBrowsePage { GtkWidget parent_instance; ExmSearchProvider *search; ExmImageResolver *resolver; ExmManager *manager; GtkStringList *suggestions; GListModel *search_results_model; int current_page; int max_pages; GCancellable *cancellable; // Template Widgets AdwBreakpoint *breakpoint; AdwStatusPage *status_page; GtkSearchEntry *search_entry; GtkListBox *search_results; GtkStack *search_stack; GtkDropDown *search_dropdown; GtkListBox *more_results_list; AdwButtonRow *more_results_btn; GtkLabel *error_label; }; G_DEFINE_FINAL_TYPE (ExmBrowsePage, exm_browse_page, GTK_TYPE_WIDGET) enum { PROP_0, PROP_MANAGER, N_PROPS }; static GParamSpec *properties [N_PROPS]; ExmBrowsePage * exm_browse_page_new (void) { return g_object_new (EXM_TYPE_BROWSE_PAGE, NULL); } static void exm_browse_page_finalize (GObject *object) { GtkWidget *child; ExmBrowsePage *self = (ExmBrowsePage *)object; child = gtk_widget_get_first_child (GTK_WIDGET (self)); gtk_widget_unparent (child); G_OBJECT_CLASS (exm_browse_page_parent_class)->finalize (object); } static void exm_browse_page_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { ExmBrowsePage *self = EXM_BROWSE_PAGE (object); switch (prop_id) { case PROP_MANAGER: g_value_set_object (value, self->manager); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void exm_browse_page_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { ExmBrowsePage *self = EXM_BROWSE_PAGE (object); switch (prop_id) { case PROP_MANAGER: self->manager = g_value_get_object (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static GtkWidget * search_widget_factory (ExmSearchResult *result, ExmBrowsePage *self) { ExmSearchRow *row; GValue value = G_VALUE_INIT; row = exm_search_row_new (self->manager, result); g_value_init (&value, G_TYPE_BOOLEAN); g_value_set_boolean (&value, TRUE); adw_breakpoint_add_setter (self->breakpoint, G_OBJECT (row), "compact", &value); return GTK_WIDGET (row); } static void update_load_more_btn (ExmBrowsePage *self) { // Hide button if we are the last page gtk_widget_set_visible (GTK_WIDGET (self->more_results_list), self->current_page != self->max_pages); // Make it clickable gtk_widget_set_sensitive (GTK_WIDGET (self->more_results_btn), TRUE); } static void refresh_search (ExmBrowsePage *self) { if (!self->manager) return; if (!self->search_results_model || g_list_model_get_n_items (self->search_results_model) == 0) { // No Results Found gtk_stack_set_visible_child_name (self->search_stack, "page_empty"); return; } gtk_list_box_bind_model (self->search_results, self->search_results_model, (GtkListBoxCreateWidgetFunc) search_widget_factory, g_object_ref (self), g_object_unref); // Hide Loading Indicator gtk_stack_set_visible_child_name (self->search_stack, "page_results"); } static void on_first_page_result (GObject *source, GAsyncResult *res, ExmBrowsePage *self) { GError *error = NULL; GListModel *to_append; to_append = exm_search_provider_query_finish (EXM_SEARCH_PROVIDER (source), res, &self->max_pages, &error); if (error) { gtk_label_set_text (self->error_label, error->message); gtk_label_set_use_markup (self->error_label, TRUE); gtk_stack_set_visible_child_name (self->search_stack, "page_error"); g_clear_error (&error); return; } if (G_IS_LIST_MODEL (to_append)) { // Populate list model self->search_results_model = to_append; } // Refresh search refresh_search (self); update_load_more_btn (self); } static void on_next_page_result (GObject *source, GAsyncResult *res, ExmBrowsePage *self) { GError *error = NULL; GListModel *to_append; int n_items; int i; to_append = exm_search_provider_query_finish (EXM_SEARCH_PROVIDER (source), res, &self->max_pages, &error); if (G_IS_LIST_MODEL (to_append)) { GtkWidget *child; GtkAdjustment *adjustment = NULL; double scroll_pos = 0.0; // Save scrolled window position child = gtk_widget_get_first_child (GTK_WIDGET (self->status_page)); if (child != NULL && GTK_IS_SCROLLED_WINDOW (child)) { adjustment = gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (child)); if (adjustment != NULL) scroll_pos = gtk_adjustment_get_value (adjustment); } n_items = g_list_model_get_n_items (G_LIST_MODEL (to_append)); // Append to list model for (i = 0; i < n_items; i++) { GObject *item; item = g_list_model_get_object (to_append, i); g_list_store_append (G_LIST_STORE (self->search_results_model), item); if (i == 0) gtk_widget_grab_focus (gtk_widget_get_last_child (GTK_WIDGET (self->search_results))); } // Restore scrolled window position if (adjustment != NULL) gtk_adjustment_set_value (adjustment, scroll_pos); // Remove unnecessary model g_list_store_remove_all (G_LIST_STORE (to_append)); g_clear_object (&to_append); } update_load_more_btn (self); } static void on_load_more_results (AdwButtonRow *row G_GNUC_UNUSED, ExmBrowsePage *self) { const char *query; ExmSearchSort sort; gtk_widget_set_sensitive (GTK_WIDGET (self->more_results_btn), FALSE); // If we have a current operation, cancel it g_cancellable_cancel (self->cancellable); self->cancellable = g_cancellable_new (); query = gtk_editable_get_text (GTK_EDITABLE (self->search_entry)); sort = (ExmSearchSort) gtk_drop_down_get_selected (self->search_dropdown); exm_search_provider_query_async (self->search, query, ++self->current_page, sort, self->cancellable, (GAsyncReadyCallback) on_next_page_result, self); } static void search (ExmBrowsePage *self, const gchar *query, ExmSearchSort sort) { // Show Loading Indicator gtk_stack_set_visible_child_name (self->search_stack, "page_spinner"); self->current_page = 1; if (self->search_results_model) g_clear_object (&self->search_results_model); // If we have a current operation, cancel it g_cancellable_cancel (self->cancellable); self->cancellable = g_cancellable_new (); exm_search_provider_query_async (self->search, query, 1, sort, self->cancellable, (GAsyncReadyCallback) on_first_page_result, self); } void exm_browse_page_search (ExmBrowsePage *self, const gchar *query) { gtk_editable_set_text (GTK_EDITABLE (self->search_entry), query); } void exm_browse_page_focus_entry (ExmBrowsePage *self) { gtk_widget_grab_focus (GTK_WIDGET (self->search_entry)); } static void on_search_changed (ExmBrowsePage *self) { if (!gtk_widget_get_realized (GTK_WIDGET (self->search_entry))) return; const char *query = gtk_editable_get_text (GTK_EDITABLE (self->search_entry)); ExmSearchSort sort = (ExmSearchSort) gtk_drop_down_get_selected (self->search_dropdown); search (self, query, sort); } static void on_search_entry_realize (GtkSearchEntry *search_entry, ExmBrowsePage *self) { const char *suggestion; int random_index; int num_suggestions; // Get random suggestion num_suggestions = g_list_model_get_n_items (G_LIST_MODEL (self->suggestions)); random_index = g_random_int_range (0, num_suggestions); suggestion = gtk_string_list_get_string (self->suggestions, random_index); // Set placeholder value gtk_search_entry_set_placeholder_text (search_entry, suggestion); // Fire off a default search search (self, "", EXM_SEARCH_SORT_RELEVANCE); } static void on_bind_manager (ExmBrowsePage *self) { GListModel *ext_model; gchar *shell_version; g_object_get (self->manager, "extensions", &ext_model, NULL); g_signal_connect_swapped (ext_model, "items-changed", G_CALLBACK (refresh_search), self); g_object_get (self->manager, "shell-version", &shell_version, NULL); g_object_set (self->search, "shell-version", shell_version, NULL); refresh_search (self); } static void load_suggestions (ExmBrowsePage *self) { char *contents; char *contents_nul_term; char **suggest_array; gsize length; contents = exm_utils_read_resource (g_strdup_printf ("%s/suggestions.txt", RESOURCE_PATH), &length); self->suggestions = gtk_string_list_new (NULL); if (contents) { int iter; contents_nul_term = g_strndup (contents, length); // Load dynamically from resource suggest_array = g_strsplit_set (contents_nul_term, "\n", -1); for (iter = 0; suggest_array[iter] != NULL; iter++) gtk_string_list_append (self->suggestions, suggest_array[iter]); g_strfreev (suggest_array); g_free (contents_nul_term); g_free (contents); } else { // Hardcoded fallback suggestion gtk_string_list_append (self->suggestions, "Blur my Shell"); } } static void exm_browse_page_class_init (ExmBrowsePageClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->finalize = exm_browse_page_finalize; object_class->get_property = exm_browse_page_get_property; object_class->set_property = exm_browse_page_set_property; properties [PROP_MANAGER] = g_param_spec_object ("manager", "Manager", "Manager", EXM_TYPE_MANAGER, G_PARAM_READWRITE); g_object_class_install_properties (object_class, N_PROPS, properties); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); gtk_widget_class_set_template_from_resource (widget_class, g_strdup_printf ("%s/exm-browse-page.ui", RESOURCE_PATH)); gtk_widget_class_bind_template_child (widget_class, ExmBrowsePage, breakpoint); gtk_widget_class_bind_template_child (widget_class, ExmBrowsePage, status_page); gtk_widget_class_bind_template_child (widget_class, ExmBrowsePage, search_entry); gtk_widget_class_bind_template_child (widget_class, ExmBrowsePage, search_results); gtk_widget_class_bind_template_child (widget_class, ExmBrowsePage, search_stack); gtk_widget_class_bind_template_child (widget_class, ExmBrowsePage, search_dropdown); gtk_widget_class_bind_template_child (widget_class, ExmBrowsePage, more_results_list); gtk_widget_class_bind_template_child (widget_class, ExmBrowsePage, more_results_btn); gtk_widget_class_bind_template_child (widget_class, ExmBrowsePage, error_label); gtk_widget_class_bind_template_callback (widget_class, on_search_entry_realize); gtk_widget_class_bind_template_callback (widget_class, on_search_changed); gtk_widget_class_bind_template_callback (widget_class, on_load_more_results); gtk_widget_class_bind_template_callback (widget_class, on_bind_manager); gtk_widget_class_set_layout_manager_type (widget_class, GTK_TYPE_BIN_LAYOUT); } static void exm_browse_page_init (ExmBrowsePage *self) { GSettings *settings; gtk_widget_init_template (GTK_WIDGET (self)); self->search = exm_search_provider_new (); settings = g_settings_new (APP_ID); g_settings_bind (settings, "show-unsupported", self->search, "show-unsupported", G_SETTINGS_BIND_GET); g_object_unref (settings); // Rerun search when show unsupported is toggled g_signal_connect_swapped (self->search, "notify::show-unsupported", G_CALLBACK (on_search_changed), self); load_suggestions (self); gtk_search_entry_set_key_capture_widget (self->search_entry, GTK_WIDGET (self)); } extension-manager-0.6.3/src/exm-browse-page.h000066400000000000000000000023451477302130300211120ustar00rootroot00000000000000/* * exm-browse-page.h * * Copyright 2022-2025 Matthew Jakeman * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General 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 EXM_TYPE_BROWSE_PAGE (exm_browse_page_get_type()) G_DECLARE_FINAL_TYPE (ExmBrowsePage, exm_browse_page, EXM, BROWSE_PAGE, GtkWidget) ExmBrowsePage *exm_browse_page_new (void); void exm_browse_page_search (ExmBrowsePage *self, const gchar *query); void exm_browse_page_focus_entry (ExmBrowsePage *self); G_END_DECLS extension-manager-0.6.3/src/exm-comment-dialog.blp000066400000000000000000000020311477302130300221140ustar00rootroot00000000000000using Gtk 4.0; using Adw 1; Adw.SpinnerPaintable spinner { widget: loading_status; } template $ExmCommentDialog: Adw.Dialog { content-width: 600; content-height: 600; width-request: 360; height-request: 294; title: _("Reviews and Comments"); child: Adw.ToolbarView { [top] Adw.HeaderBar {} content: Gtk.Stack stack { Gtk.StackPage { name: "page_spinner"; child: Adw.StatusPage loading_status { paintable: spinner; title: _("Loading"); }; } Gtk.StackPage { name: "page_error"; child: Adw.StatusPage error_status { icon-name: "offline-symbolic"; title: _("Connection Error"); }; } Gtk.StackPage { name: "page_comments"; child: Adw.PreferencesPage { Adw.PreferencesGroup { Gtk.ListBox list_box { styles [ "boxed-list", ] selection-mode: none; } } }; } }; }; } extension-manager-0.6.3/src/exm-comment-dialog.c000066400000000000000000000143111477302130300215650ustar00rootroot00000000000000/* * exm-comment-dialog.c * * Copyright 2022-2025 Matthew Jakeman * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General 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 "exm-comment-dialog.h" #include "exm-comment-tile.h" #include "web/exm-comment-provider.h" #include "web/model/exm-comment.h" #include #include "exm-config.h" struct _ExmCommentDialog { AdwDialog parent_instance; ExmCommentProvider *comment_provider; GCancellable *cancellable; GtkListBox *list_box; GtkStack *stack; AdwStatusPage *error_status; int web_id; }; G_DEFINE_FINAL_TYPE (ExmCommentDialog, exm_comment_dialog, ADW_TYPE_DIALOG) enum { PROP_0, PROP_WEB_ID, N_PROPS }; static GParamSpec *properties [N_PROPS]; static void exm_comment_dialog_constructed (GObject *object); ExmCommentDialog * exm_comment_dialog_new (int web_id) { return g_object_new (EXM_TYPE_COMMENT_DIALOG, "web-id", web_id, NULL); } static void exm_comment_dialog_dispose (GObject *object) { ExmCommentDialog *self = (ExmCommentDialog *)object; g_cancellable_cancel (self->cancellable); g_clear_object (&self->cancellable); G_OBJECT_CLASS (exm_comment_dialog_parent_class)->dispose (object); } static void exm_comment_dialog_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { ExmCommentDialog *self = EXM_COMMENT_DIALOG (object); switch (prop_id) { case PROP_WEB_ID: g_value_set_int (value, self->web_id); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void exm_comment_dialog_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { ExmCommentDialog *self = EXM_COMMENT_DIALOG (object); switch (prop_id) { case PROP_WEB_ID: self->web_id = g_value_get_int (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void exm_comment_dialog_class_init (ExmCommentDialogClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->dispose = exm_comment_dialog_dispose; object_class->get_property = exm_comment_dialog_get_property; object_class->set_property = exm_comment_dialog_set_property; object_class->constructed = exm_comment_dialog_constructed; properties [PROP_WEB_ID] = g_param_spec_int ("web-id", "Web ID", "Web ID", 0, G_MAXINT, 0, G_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY); g_object_class_install_properties (object_class, N_PROPS, properties); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); gtk_widget_class_set_template_from_resource (widget_class, g_strdup_printf ("%s/exm-comment-dialog.ui", RESOURCE_PATH)); gtk_widget_class_bind_template_child (widget_class, ExmCommentDialog, list_box); gtk_widget_class_bind_template_child (widget_class, ExmCommentDialog, stack); gtk_widget_class_bind_template_child (widget_class, ExmCommentDialog, error_status); } static GtkWidget * comment_factory (ExmComment *comment, gpointer user_data G_GNUC_UNUSED) { GtkWidget *row; row = gtk_list_box_row_new (); gtk_list_box_row_set_activatable (GTK_LIST_BOX_ROW (row), FALSE); gtk_list_box_row_set_child (GTK_LIST_BOX_ROW (row), GTK_WIDGET (exm_comment_tile_new (comment))); return row; } static void on_get_comments (GObject *source, GAsyncResult *res, gpointer user_data) { GListModel *model; GError *error = NULL; ExmCommentDialog *self; g_return_if_fail (user_data != NULL); model = exm_comment_provider_get_comments_finish (EXM_COMMENT_PROVIDER (source), res, &error); self = (ExmCommentDialog *) user_data; if (error) { if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) { g_clear_error (&error); return; } adw_status_page_set_description (self->error_status, error->message); gtk_stack_set_visible_child_name (self->stack, "page_error"); g_clear_error (&error); return; } gtk_stack_set_visible_child_name (self->stack, "page_comments"); gtk_list_box_bind_model (self->list_box, model, (GtkListBoxCreateWidgetFunc) comment_factory, g_object_ref (self), g_object_unref); } static void exm_comment_dialog_constructed (GObject *object) { ExmCommentDialog *self = EXM_COMMENT_DIALOG (object); gtk_stack_set_visible_child_name (self->stack, "page_spinner"); self->cancellable = g_cancellable_new (); exm_comment_provider_get_comments_async (self->comment_provider, self->web_id, true, self->cancellable, (GAsyncReadyCallback) on_get_comments, self); G_OBJECT_CLASS (exm_comment_dialog_parent_class)->constructed (object); } static void exm_comment_dialog_init (ExmCommentDialog *self) { gtk_widget_init_template (GTK_WIDGET (self)); self->comment_provider = exm_comment_provider_new (); } extension-manager-0.6.3/src/exm-comment-dialog.h000066400000000000000000000005031477302130300215700ustar00rootroot00000000000000#pragma once #include #include #include G_BEGIN_DECLS #define EXM_TYPE_COMMENT_DIALOG (exm_comment_dialog_get_type()) G_DECLARE_FINAL_TYPE (ExmCommentDialog, exm_comment_dialog, EXM, COMMENT_DIALOG, AdwDialog) ExmCommentDialog *exm_comment_dialog_new (int web_id); G_END_DECLS extension-manager-0.6.3/src/exm-comment-tile.blp000066400000000000000000000022541477302130300216210ustar00rootroot00000000000000using Gtk 4.0; template $ExmCommentTile: Gtk.Widget { focusable: true; Gtk.Box { orientation: vertical; spacing: 6; Gtk.Box { orientation: horizontal; Gtk.Label author { styles [ "heading", ] label: bind template.comment as <$ExmComment>.author; max-width-chars: 20; wrap: true; wrap-mode: word; xalign: 0; } Gtk.Label author_badge { styles [ "author-badge", ] label: _("Author"); valign: center; visible: bind template.comment as <$ExmComment>.is_extension_creator; } $ExmRating rating { halign: end; hexpand: true; rating: bind template.comment as <$ExmComment>.rating; visible: bind template.comment as <$ExmComment>.rating as ; } } Gtk.Label { styles [ "multiline", ] label: bind template.comment as <$ExmComment>.comment; use-markup: true; wrap: true; wrap-mode: word_char; xalign: 0; max-width-chars: 30; } Gtk.Label date { styles [ "dimmed", ] xalign: 0; } } } extension-manager-0.6.3/src/exm-comment-tile.c000066400000000000000000000115131477302130300212640ustar00rootroot00000000000000/* * exm-comment-tile.c * * Copyright 2022-2025 Matthew Jakeman * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General 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 "exm-comment-tile.h" #include "exm-rating.h" #include "exm-config.h" struct _ExmCommentTile { GtkWidget parent_instance; ExmComment *comment; GtkLabel *author; GtkLabel *author_badge; ExmRating *rating; GtkLabel *date; }; G_DEFINE_FINAL_TYPE (ExmCommentTile, exm_comment_tile, GTK_TYPE_WIDGET) enum { PROP_0, PROP_COMMENT, N_PROPS }; static GParamSpec *properties [N_PROPS]; ExmCommentTile * exm_comment_tile_new (ExmComment *comment) { return g_object_new (EXM_TYPE_COMMENT_TILE, "comment", comment, NULL); } static void exm_comment_tile_finalize (GObject *object) { GtkWidget *child; ExmCommentTile *self = (ExmCommentTile *)object; child = gtk_widget_get_first_child (GTK_WIDGET (self)); gtk_widget_unparent (child); G_OBJECT_CLASS (exm_comment_tile_parent_class)->finalize (object); } static void exm_comment_tile_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { ExmCommentTile *self = EXM_COMMENT_TILE (object); switch (prop_id) { case PROP_COMMENT: g_value_set_object (value, self->comment); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void exm_comment_tile_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { ExmCommentTile *self = EXM_COMMENT_TILE (object); switch (prop_id) { case PROP_COMMENT: self->comment = g_value_get_object (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void exm_comment_tile_constructed (GObject *object) { ExmCommentTile *self = EXM_COMMENT_TILE (object); g_return_if_fail (EXM_IS_COMMENT (self->comment)); GDateTime *datetime; gchar *date; g_object_get (self->comment, "date", &date, NULL); datetime = g_date_time_new_from_iso8601 (date, g_time_zone_new_utc ()); g_free (date); if (datetime != NULL) { gtk_label_set_label (self->date, g_date_time_format (datetime, "%x")); g_date_time_unref (datetime); } G_OBJECT_CLASS (exm_comment_tile_parent_class)->constructed (object); } static void exm_comment_tile_class_init (ExmCommentTileClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->finalize = exm_comment_tile_finalize; object_class->get_property = exm_comment_tile_get_property; object_class->set_property = exm_comment_tile_set_property; object_class->constructed = exm_comment_tile_constructed; properties [PROP_COMMENT] = g_param_spec_object ("comment", "Comment", "Comment", EXM_TYPE_COMMENT, G_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY); g_object_class_install_properties (object_class, N_PROPS, properties); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); gtk_widget_class_set_template_from_resource (widget_class, g_strdup_printf ("%s/exm-comment-tile.ui", RESOURCE_PATH)); gtk_widget_class_bind_template_child (widget_class, ExmCommentTile, author); gtk_widget_class_bind_template_child (widget_class, ExmCommentTile, author_badge); gtk_widget_class_bind_template_child (widget_class, ExmCommentTile, rating); gtk_widget_class_bind_template_child (widget_class, ExmCommentTile, date); gtk_widget_class_set_css_name (widget_class, "comment-tile"); gtk_widget_class_set_layout_manager_type (widget_class, GTK_TYPE_BIN_LAYOUT); gtk_widget_class_set_accessible_role (widget_class, GTK_ACCESSIBLE_ROLE_COMMENT); } static void exm_comment_tile_init (ExmCommentTile *self) { g_type_ensure (EXM_TYPE_RATING); gtk_widget_init_template (GTK_WIDGET (self)); } extension-manager-0.6.3/src/exm-comment-tile.h000066400000000000000000000004641477302130300212740ustar00rootroot00000000000000#pragma once #include #include "web/model/exm-comment.h" G_BEGIN_DECLS #define EXM_TYPE_COMMENT_TILE (exm_comment_tile_get_type()) G_DECLARE_FINAL_TYPE (ExmCommentTile, exm_comment_tile, EXM, COMMENT_TILE, GtkWidget) ExmCommentTile *exm_comment_tile_new (ExmComment *comment); G_END_DECLS extension-manager-0.6.3/src/exm-detail-view.blp000066400000000000000000000233621477302130300214410ustar00rootroot00000000000000using Gtk 4.0; using Adw 1; Adw.SpinnerPaintable spinner { widget: loading_status; } template $ExmDetailView: Adw.NavigationPage { Adw.ToolbarView { [top] Adw.HeaderBar header_bar { title-widget: Adw.WindowTitle title {}; } content: Adw.BreakpointBin { width-request: 360; height-request: 294; Adw.Breakpoint { condition ("max-width: 400sp") setters { header_suffix.orientation: vertical; header_suffix.spacing: 12; ext_install.halign: start; } apply => $breakpoint_apply_cb() swapped; unapply => $breakpoint_unapply_cb() swapped; } Gtk.Stack stack { vexpand: true; Gtk.StackPage { name: "page_spinner"; child: Adw.StatusPage loading_status { paintable: spinner; title: _("Loading Details"); }; } Gtk.StackPage { name: "page_error"; child: Adw.StatusPage error_status { icon-name: "offline-symbolic"; title: _("Connection Error"); focusable: true; }; } Gtk.StackPage { name: "page_empty"; child: Adw.StatusPage { icon-name: "dialog-question-symbolic"; title: _("An Error Occurred"); description: _("No extension details available"); focusable: true; }; } Gtk.StackPage { name: "page_detail"; child: Gtk.ScrolledWindow scroll_area { Adw.Clamp { maximum-size: 800; Gtk.Box { styles [ "detail", ] orientation: vertical; spacing: 24; Gtk.Box header { orientation: horizontal; spacing: 24; Gtk.Image ext_icon { focusable: true; halign: center; valign: center; pixel-size: 64; } Gtk.Box header_suffix { orientation: horizontal; spacing: 24; Gtk.Box { orientation: vertical; hexpand: true; valign: center; Gtk.Label ext_title { styles [ "title-1", ] ellipsize: end; lines: 2; selectable: true; wrap: true; wrap-mode: word_char; xalign: 0; accessibility { description: _("Name"); } } Gtk.Label ext_author { styles [ "dimmed", ] xalign: 0; ellipsize: end; selectable: true; accessibility { description: _("Author"); } } } $ExmInstallButton ext_install { can-shrink: true; clicked => $install_remote(); } } } Gtk.Overlay ext_screenshot_container { [overlay] Gtk.Button ext_screenshot_popout_button { styles [ "osd", "circular", ] icon-name: "pip-out-symbolic"; halign: end; valign: end; margin-top: 8; margin-bottom: 8; margin-start: 8; margin-end: 8; tooltip-text: _("Enlarge Image"); clicked => $screenshot_view_cb(template); } $ExmScreenshot ext_screenshot { focusable: true; } } Gtk.Box { orientation: vertical; Gtk.Label description { styles [ "title-4", "detail-heading", ] label: _("Description"); xalign: 0; } Gtk.Label ext_description { styles [ "multiline", ] xalign: 0; wrap: true; wrap-mode: word_char; selectable: true; accessibility { labelled-by: description; } } } $ExmInfoBar ext_info_bar {} Adw.PreferencesGroup { title: _("Links"); Adw.ActionRow link_homepage { [prefix] Gtk.Image { icon-name: "go-home-symbolic"; } title: _("Homepage"); activatable: true; action-name: "detail.open-homepage"; [suffix] Gtk.Image { icon-name: "external-link-symbolic"; } } Adw.ExpanderRow links_donations { [prefix] Gtk.Image { icon-name: "donation-symbolic"; } title: _("Donate"); } Adw.ActionRow link_extensions { [prefix] Gtk.Image { icon-name: "web-browser-symbolic"; } title: _("View on Extensions"); activatable: true; action-name: "detail.open-extensions"; [suffix] Gtk.Image { icon-name: "external-link-symbolic"; } } } Gtk.Box { orientation: vertical; Gtk.Label { styles [ "title-4", "detail-heading", ] label: _("Reviews and Comments"); xalign: 0; selectable: true; } // TODO: Abstract into common class Gtk.Stack comment_stack { vexpand: true; Gtk.StackPage { name: "page_spinner"; child: Gtk.Image { icon-name: "content-loading-symbolic"; icon-size: large; valign: center; }; } Gtk.StackPage { name: "page_disabled"; child: Gtk.Label { label: _("Reviews and comments are disabled for this extension"); selectable: true; valign: start; wrap: true; xalign: 0; }; } Gtk.StackPage { name: "page_error"; child: Gtk.Box { orientation: vertical; spacing: 6; Gtk.Label { styles [ "heading", ] label: _("Connection Error"); selectable: true; valign: start; xalign: 0; } Gtk.Label error_label { styles [ "body", ] selectable: true; use-markup: true; valign: start; xalign: 0; } }; } Gtk.StackPage { name: "page_empty"; child: Gtk.Label { label: _("There are no reviews or comments"); selectable: true; valign: start; wrap: true; xalign: 0; }; } Gtk.StackPage { name: "page_comments"; child: Gtk.Box { orientation: vertical; spacing: 12; Adw.WrapBox comment_box { orientation: vertical; child-spacing: 12; line-homogeneous: true; line-spacing: 12; } Gtk.Button show_more_btn { styles [ "pill", ] can-shrink: true; halign: center; label: _("_Show All"); use-underline: true; } }; } } } } } }; } } }; } } extension-manager-0.6.3/src/exm-detail-view.c000066400000000000000000000621361477302130300211100ustar00rootroot00000000000000/* * exm-detail-view.c * * Copyright 2022-2025 Matthew Jakeman * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General 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 "exm-detail-view.h" #include "exm-screenshot.h" #include "exm-screenshot-view.h" #include "exm-info-bar.h" #include "exm-comment-tile.h" #include "exm-comment-dialog.h" #include "exm-install-button.h" #include "exm-screenshot.h" #include "web/exm-data-provider.h" #include "web/exm-image-resolver.h" #include "web/exm-comment-provider.h" #include "web/model/exm-shell-version-map.h" #include "web/model/exm-comment.h" #include "local/exm-manager.h" #include "exm-types.h" #include "exm-enums.h" #include "exm-config.h" #include struct _ExmDetailView { AdwNavigationPage parent_instance; ExmManager *manager; ExmDataProvider *provider; ExmImageResolver *resolver; ExmCommentProvider *comment_provider; GCancellable *resolver_cancel; gchar *shell_version; gchar *uuid; AdwHeaderBar *header_bar; AdwWindowTitle *title; GtkStack *stack; GtkLabel *error_label; AdwStatusPage *error_status; GtkButton *ext_install; GtkLabel *ext_description; GtkImage *ext_icon; GtkLabel *ext_title; GtkLabel *ext_author; ExmScreenshot *ext_screenshot; GtkOverlay *ext_screenshot_container; GtkButton *ext_screenshot_popout_button; ExmInfoBar *ext_info_bar; GtkScrolledWindow *scroll_area; GtkStack *comment_stack; AdwWrapBox *comment_box; GtkButton *show_more_btn; AdwActionRow *link_homepage; gchar *uri_homepage; AdwExpanderRow *links_donations; gchar **uri_donations; GList *donation_rows_list; AdwActionRow *link_extensions; gchar *uri_extensions; int pk; guint comments_signal_id; guint install_signal_id; }; G_DEFINE_FINAL_TYPE (ExmDetailView, exm_detail_view, ADW_TYPE_NAVIGATION_PAGE) enum { PROP_0, PROP_MANAGER, PROP_SHELL_VERSION, N_PROPS }; static GParamSpec *properties [N_PROPS]; ExmDetailView * exm_detail_view_new (void) { return g_object_new (EXM_TYPE_DETAIL_VIEW, NULL); } static void exm_detail_view_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { ExmDetailView *self = EXM_DETAIL_VIEW (object); switch (prop_id) { case PROP_MANAGER: g_value_set_object (value, self->manager); break; case PROP_SHELL_VERSION: g_value_set_string (value, self->shell_version); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void on_bind_manager (ExmDetailView *self); static void exm_detail_view_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { ExmDetailView *self = EXM_DETAIL_VIEW (object); switch (prop_id) { case PROP_MANAGER: self->manager = g_value_get_object (value); on_bind_manager (self); break; case PROP_SHELL_VERSION: self->shell_version = g_value_dup_string (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void on_icon_loaded (GObject *source, GAsyncResult *res, ExmDetailView *self) { GError *error = NULL; GdkTexture *texture = exm_image_resolver_resolve_finish (EXM_IMAGE_RESOLVER (source), res, &error); if (error) { // TODO: Properly log this g_critical ("%s\n", error->message); return; } gtk_image_set_from_paintable (self->ext_icon, GDK_PAINTABLE (texture)); g_object_unref (texture); g_object_unref (self); } static void on_image_loaded (GObject *source, GAsyncResult *res, ExmDetailView *self) { GError *error = NULL; GdkTexture *texture = exm_image_resolver_resolve_finish (EXM_IMAGE_RESOLVER (source), res, &error); AdwNavigationView *parent; ExmScreenshotView *screenshot_view; if (error) { // TODO: Properly log this g_critical ("%s\n", error->message); return; } parent = ADW_NAVIGATION_VIEW (gtk_widget_get_parent (GTK_WIDGET (self))); screenshot_view = EXM_SCREENSHOT_VIEW (adw_navigation_view_find_page (parent, "screenshot-view")); exm_screenshot_set_paintable (self->ext_screenshot, GDK_PAINTABLE (texture)); exm_screenshot_view_set_screenshot (screenshot_view, GDK_PAINTABLE (texture)); exm_screenshot_display (self->ext_screenshot); g_object_unref (texture); g_object_unref (self); gtk_widget_set_visible (GTK_WIDGET (self->ext_screenshot_popout_button), TRUE); } static void queue_resolve_image (ExmDetailView *self, const gchar *image_uri, GCancellable *cancellable, gboolean is_icon) { exm_image_resolver_resolve_async (self->resolver, image_uri, cancellable, (GAsyncReadyCallback) (is_icon ? on_icon_loaded : on_image_loaded), g_object_ref (self)); } static void delete_comment_tiles (ExmDetailView *self) { GtkWidget *child; while ((child = gtk_widget_get_first_child (GTK_WIDGET (self->comment_box))) != NULL) adw_wrap_box_remove (self->comment_box, child); } static void on_get_comments (GObject *source, GAsyncResult *res, ExmDetailView *self) { GError *error = NULL; GListModel *model = exm_comment_provider_get_comments_finish (EXM_COMMENT_PROVIDER (source), res, &error); if (error != NULL) { if (error->domain == g_quark_try_string ("request-error-quark") && error->code == 403) { gtk_stack_set_visible_child_name (self->comment_stack, "page_disabled"); } else { gtk_stack_set_visible_child_name (self->comment_stack, "page_error"); gtk_label_set_label (self->error_label, error->message); } return; } guint n_comments = g_list_model_get_n_items (model); if (!n_comments) { gtk_stack_set_visible_child_name (self->comment_stack, "page_empty"); } else { gtk_widget_set_visible (GTK_WIDGET (self->show_more_btn), n_comments >= 5); gtk_stack_set_visible_child_name (self->comment_stack, "page_comments"); } delete_comment_tiles (self); for (guint i = 0; i < g_list_model_get_n_items (model); i++) { ExmComment *comment = g_list_model_get_item (model, i); GtkWidget *tile = GTK_WIDGET (exm_comment_tile_new (comment)); gtk_widget_add_css_class (tile, "card"); adw_wrap_box_append (self->comment_box, tile); g_object_unref (comment); } } static void queue_resolve_comments (ExmDetailView *self, gint pk, GCancellable *cancellable) { gtk_stack_set_visible_child_name (self->comment_stack, "page_spinner"); exm_comment_provider_get_comments_async (self->comment_provider, pk, false, cancellable, (GAsyncReadyCallback) on_get_comments, self); } static void show_more_comments (GtkButton *button G_GNUC_UNUSED, ExmDetailView *self) { GtkRoot *toplevel; ExmCommentDialog *dlg; dlg = exm_comment_dialog_new (self->pk); toplevel = gtk_widget_get_root (GTK_WIDGET (self)); adw_dialog_present (ADW_DIALOG (dlg), GTK_WIDGET (toplevel)); } static void on_install_status (ExmManager *manager G_GNUC_UNUSED, ExmInstallButtonState state, ExmDetailView *self) { g_object_set (self->ext_install, "state", state, NULL); } static void install_remote (GtkButton *button, ExmDetailView *self) { gboolean warn; ExmInstallButtonState state; g_object_get (self->ext_install, "state", &state, NULL); warn = (state == EXM_INSTALL_BUTTON_STATE_UNSUPPORTED); g_object_set (self->ext_install, "state", EXM_INSTALL_BUTTON_STATE_INSTALLING, NULL); // Move focus to previous widget to avoid losing it after the button becomes insensitive gtk_widget_grab_focus (GTK_WIDGET (self->ext_author)); gtk_widget_activate_action (GTK_WIDGET (button), "ext.install", "(sb)", self->uuid, warn); } static void new_donation_row (ExmDetailView *self, int num_donation) { GtkWidget *row; GtkWidget *external_link_icon; row = adw_action_row_new (); adw_preferences_row_set_title (ADW_PREFERENCES_ROW (row), self->uri_donations[num_donation]); gtk_list_box_row_set_activatable (GTK_LIST_BOX_ROW (row), TRUE); gtk_actionable_set_action_name (GTK_ACTIONABLE (row), "detail.open-donation"); gtk_actionable_set_action_target_value (GTK_ACTIONABLE (row), g_variant_new_int32 (num_donation)); external_link_icon = gtk_image_new_from_icon_name ("external-link-symbolic"); adw_action_row_add_suffix (ADW_ACTION_ROW (row), external_link_icon); adw_expander_row_add_row (self->links_donations, row); self->donation_rows_list = g_list_append (self->donation_rows_list, row); } static void delete_donation_rows (ExmDetailView *self) { for (GList *iter = self->donation_rows_list; iter != NULL; iter = g_list_next (iter)) adw_expander_row_remove (self->links_donations, GTK_WIDGET (iter->data)); g_list_free (self->donation_rows_list); self->donation_rows_list = NULL; } static void update_donation_rows (ExmDetailView *self, gchar **donation_urls) { gtk_widget_set_visible (GTK_WIDGET (self->links_donations), FALSE); delete_donation_rows (self); if (donation_urls == NULL || donation_urls[0] == NULL) return; self->uri_donations = g_new0 (gchar *, g_strv_length (donation_urls)); for (int i = 0; donation_urls[i] != NULL; i++) { self->uri_donations[i] = g_uri_resolve_relative (donation_urls[i], "", G_URI_FLAGS_NONE, NULL); new_donation_row (self, i); } adw_expander_row_set_expanded (self->links_donations, FALSE); gtk_widget_set_visible (GTK_WIDGET (self->links_donations), TRUE); } static void on_data_loaded (GObject *source, GAsyncResult *result, gpointer user_data) { ExmSearchResult *data; GError *error = NULL; ExmDetailView *self; ExmInstallButtonState install_state; GList *version_iter; ExmShellVersionMap *version_map; data = exm_data_provider_get_finish (EXM_DATA_PROVIDER (source), result, &error); self = EXM_DETAIL_VIEW (user_data); if (error) { if (error->domain == g_quark_try_string ("request-error-quark") && error->code == 404) { gtk_stack_set_visible_child_name (self->stack, "page_empty"); } else { adw_status_page_set_description (self->error_status, error->message); gtk_stack_set_visible_child_name (self->stack, "page_error"); } g_clear_error (&error); return; } if (EXM_IS_SEARCH_RESULT (data)) { gint pk, downloads; gboolean is_installed, is_supported; gchar *uuid, *name, *creator, *icon_uri, *screenshot_uri, *link, *description, *url; gchar **donation_urls; g_object_get (data, "uuid", &uuid, "name", &name, "creator", &creator, "icon", &icon_uri, "screenshot", &screenshot_uri, "link", &link, "description", &description, "shell_version_map", &version_map, "pk", &pk, "url", &url, "downloads", &downloads, "donation_urls", &donation_urls, NULL); adw_window_title_set_title (self->title, name); adw_window_title_set_subtitle (self->title, uuid); adw_navigation_page_set_title (ADW_NAVIGATION_PAGE (self), name); is_installed = exm_manager_is_installed_uuid (self->manager, uuid); is_supported = exm_search_result_supports_shell_version (data, self->shell_version); gtk_image_set_from_icon_name (self->ext_icon, "puzzle-piece-symbolic"); gtk_widget_set_tooltip_text (GTK_WIDGET (self->ext_icon), // Translators: '%s' = extension name g_strdup_printf (_("%s Icon"), name)); gtk_label_set_label (self->ext_title, name); gtk_label_set_label (self->ext_author, creator); gtk_label_set_label (self->ext_description, description); g_object_set (self->ext_info_bar, "downloads", downloads, NULL); if (self->resolver_cancel) { g_cancellable_cancel (self->resolver_cancel); g_clear_object (&self->resolver_cancel); } if (strcmp (icon_uri, "/static/images/plugin.png") != 0) { self->resolver_cancel = g_cancellable_new (); queue_resolve_image (self, icon_uri, self->resolver_cancel, TRUE); } if (screenshot_uri != NULL) { self->resolver_cancel = g_cancellable_new (); exm_screenshot_set_paintable (self->ext_screenshot, NULL); exm_screenshot_reset (self->ext_screenshot); gtk_widget_set_visible (GTK_WIDGET (self->ext_screenshot_container), TRUE); gtk_widget_set_visible (GTK_WIDGET (self->ext_screenshot_popout_button), FALSE); queue_resolve_image (self, screenshot_uri, self->resolver_cancel, FALSE); gtk_widget_set_tooltip_text (GTK_WIDGET (self->ext_screenshot), // Translators: '%s' = extension name g_strdup_printf (_("%s Screenshot"), name)); } else { gtk_widget_set_visible (GTK_WIDGET (self->ext_screenshot_container), FALSE); } install_state = is_installed ? EXM_INSTALL_BUTTON_STATE_INSTALLED : (is_supported ? EXM_INSTALL_BUTTON_STATE_DEFAULT : EXM_INSTALL_BUTTON_STATE_UNSUPPORTED); g_object_set (self->ext_install, "state", install_state, NULL); self->uri_homepage = g_uri_resolve_relative (url, "", G_URI_FLAGS_NONE, NULL); update_donation_rows (self, donation_urls); self->uri_extensions = g_uri_resolve_relative ("https://extensions.gnome.org/", link, G_URI_FLAGS_NONE, NULL); adw_action_row_set_subtitle (self->link_homepage, self->uri_homepage); adw_action_row_set_subtitle (self->link_extensions, self->uri_extensions); g_object_set (self->ext_info_bar, "version", 0.0, NULL); for (version_iter = version_map->map; version_iter != NULL; version_iter = version_iter->next) { gchar *version; MapEntry *entry; entry = version_iter->data; if (entry->shell_minor_version) version = g_strdup_printf ("%s.%s", entry->shell_major_version, entry->shell_minor_version); else version = g_strdup_printf ("%s.0", entry->shell_major_version); if (version != NULL && self->shell_version != NULL && (strcmp (version, self->shell_version) == 0 || strncmp(version, self->shell_version, strchr(version, '.') - version) == 0)) g_object_set (self->ext_info_bar, "version", entry->extension_version, NULL); g_free (version); } self->pk = pk; if (self->comments_signal_id > 0) g_signal_handler_disconnect (self->show_more_btn, self->comments_signal_id); self->comments_signal_id = g_signal_connect (self->show_more_btn, "clicked", G_CALLBACK (show_more_comments), self); queue_resolve_comments (self, pk, self->resolver_cancel); // Reset focus and scroll position gtk_widget_grab_focus (GTK_WIDGET (self->ext_icon)); gtk_adjustment_set_value (gtk_scrolled_window_get_vadjustment (self->scroll_area), 0); gtk_stack_set_visible_child_name (self->stack, "page_detail"); return; } } void exm_detail_view_load_for_uuid (ExmDetailView *self, gchar *uuid) { self->uuid = uuid; adw_window_title_set_title (self->title, NULL); adw_window_title_set_subtitle (self->title, NULL); gtk_stack_set_visible_child_name (self->stack, "page_spinner"); exm_data_provider_get_async (self->provider, uuid, NULL, on_data_loaded, self); } void exm_detail_view_update (ExmDetailView *self) { if (!self->uuid) return; // Check if the newly installed extension is the // one being displayed in this detail view if (exm_manager_is_installed_uuid (self->manager, self->uuid)) g_object_set (self->ext_install, "state", EXM_INSTALL_BUTTON_STATE_INSTALLED, NULL); } static void open_link (ExmDetailView *self, const char *action_name, GVariant *param) { GtkWidget *toplevel; GtkUriLauncher *uri = NULL; toplevel = GTK_WIDGET (gtk_widget_get_root (GTK_WIDGET (self))); if (strcmp (action_name, "detail.open-extensions") == 0) { uri = gtk_uri_launcher_new (self->uri_extensions); } else if (strcmp (action_name, "detail.open-homepage") == 0) { uri = gtk_uri_launcher_new (self->uri_homepage); } else if (strcmp (action_name, "detail.open-donation") == 0) { guint val; g_variant_get (param, "i", &val); uri = gtk_uri_launcher_new (self->uri_donations[val]); } else { g_critical ("open_link() invalid action: %s", action_name); } gtk_uri_launcher_launch (uri, GTK_WINDOW (toplevel), NULL, NULL, NULL); } static void on_bind_manager (ExmDetailView *self) { GListModel *ext_model; g_object_get (self->manager, "extensions", &ext_model, NULL); if (self->install_signal_id > 0) g_signal_handler_disconnect (self->ext_install, self->install_signal_id); self->install_signal_id = g_signal_connect (self->manager, "install-status", G_CALLBACK (on_install_status), self); g_signal_connect_swapped (ext_model, "items-changed", G_CALLBACK (exm_detail_view_update), self); } static void breakpoint_apply_cb (ExmDetailView *self) { gtk_widget_remove_css_class (GTK_WIDGET (self->ext_title), "title-1"); gtk_widget_add_css_class (GTK_WIDGET (self->ext_title), "title-2"); } static void breakpoint_unapply_cb (ExmDetailView *self) { gtk_widget_remove_css_class (GTK_WIDGET (self->ext_title), "title-2"); gtk_widget_add_css_class (GTK_WIDGET (self->ext_title), "title-1"); } static void update_headerbar_cb (ExmDetailView *self) { GtkAdjustment *adj; adj = gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (self->scroll_area)); adw_header_bar_set_show_title (ADW_HEADER_BAR (self->header_bar), gtk_adjustment_get_value (adj) > 0); } static void screenshot_view_cb (ExmDetailView *self) { AdwNavigationView *parent; parent = ADW_NAVIGATION_VIEW (gtk_widget_get_parent (GTK_WIDGET (self))); adw_navigation_view_push_by_tag (parent, "screenshot-view"); } static void exm_detail_view_class_init (ExmDetailViewClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->get_property = exm_detail_view_get_property; object_class->set_property = exm_detail_view_set_property; properties [PROP_MANAGER] = g_param_spec_object ("manager", "Manager", "Manager", EXM_TYPE_MANAGER, G_PARAM_READWRITE); properties [PROP_SHELL_VERSION] = g_param_spec_string ("shell-version", "Shell Version", "Shell Version", NULL, G_PARAM_READWRITE); g_object_class_install_properties (object_class, N_PROPS, properties); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); gtk_widget_class_set_template_from_resource (widget_class, g_strdup_printf ("%s/exm-detail-view.ui", RESOURCE_PATH)); gtk_widget_class_bind_template_child (widget_class, ExmDetailView, header_bar); gtk_widget_class_bind_template_child (widget_class, ExmDetailView, title); gtk_widget_class_bind_template_child (widget_class, ExmDetailView, stack); gtk_widget_class_bind_template_child (widget_class, ExmDetailView, error_label); gtk_widget_class_bind_template_child (widget_class, ExmDetailView, error_status); gtk_widget_class_bind_template_child (widget_class, ExmDetailView, ext_icon); gtk_widget_class_bind_template_child (widget_class, ExmDetailView, ext_title); gtk_widget_class_bind_template_child (widget_class, ExmDetailView, ext_author); gtk_widget_class_bind_template_child (widget_class, ExmDetailView, ext_description); gtk_widget_class_bind_template_child (widget_class, ExmDetailView, ext_install); gtk_widget_class_bind_template_child (widget_class, ExmDetailView, ext_screenshot); gtk_widget_class_bind_template_child (widget_class, ExmDetailView, ext_screenshot_container); gtk_widget_class_bind_template_child (widget_class, ExmDetailView, ext_screenshot_popout_button); gtk_widget_class_bind_template_child (widget_class, ExmDetailView, ext_info_bar); gtk_widget_class_bind_template_child (widget_class, ExmDetailView, link_homepage); gtk_widget_class_bind_template_child (widget_class, ExmDetailView, links_donations); gtk_widget_class_bind_template_child (widget_class, ExmDetailView, link_extensions); gtk_widget_class_bind_template_child (widget_class, ExmDetailView, scroll_area); gtk_widget_class_bind_template_child (widget_class, ExmDetailView, comment_box); gtk_widget_class_bind_template_child (widget_class, ExmDetailView, comment_stack); gtk_widget_class_bind_template_child (widget_class, ExmDetailView, show_more_btn); 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, screenshot_view_cb); gtk_widget_class_bind_template_callback (widget_class, install_remote); gtk_widget_class_install_action (widget_class, "detail.open-extensions", NULL, (GtkWidgetActionActivateFunc) open_link); gtk_widget_class_install_action (widget_class, "detail.open-homepage", NULL, (GtkWidgetActionActivateFunc) open_link); gtk_widget_class_install_action (widget_class, "detail.open-donation", "i", (GtkWidgetActionActivateFunc) open_link); } static void exm_detail_view_init (ExmDetailView *self) { GtkAdjustment *adj; g_type_ensure (EXM_TYPE_INSTALL_BUTTON); g_type_ensure (EXM_TYPE_SCREENSHOT); g_type_ensure (EXM_TYPE_INFO_BAR); gtk_widget_init_template (GTK_WIDGET (self)); self->provider = exm_data_provider_new (); self->resolver = exm_image_resolver_new (); self->comment_provider = exm_comment_provider_new (); adj = gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (self->scroll_area)); g_signal_connect_swapped (adj, "value-changed", G_CALLBACK (update_headerbar_cb), self); update_headerbar_cb (self); } extension-manager-0.6.3/src/exm-detail-view.h000066400000000000000000000006451477302130300211120ustar00rootroot00000000000000#pragma once #include G_BEGIN_DECLS #define EXM_TYPE_DETAIL_VIEW (exm_detail_view_get_type()) G_DECLARE_FINAL_TYPE (ExmDetailView, exm_detail_view, EXM, DETAIL_VIEW, AdwNavigationPage) ExmDetailView *exm_detail_view_new (void); void exm_detail_view_load_for_uuid (ExmDetailView *self, gchar *uuid); void exm_detail_view_update (ExmDetailView *self); G_END_DECLS extension-manager-0.6.3/src/exm-error-dialog.blp000066400000000000000000000036131477302130300216120ustar00rootroot00000000000000using Gtk 4.0; using Adw 1; template $ExmErrorDialog: Adw.Window { default-width: 500; default-height: 500; title: _("Error Report"); Adw.ToolbarView { [top] Adw.HeaderBar {} content: Adw.ToastOverlay toast_overlay { child: Adw.PreferencesPage { Adw.PreferencesGroup { Gtk.Label { styles [ "title-4", ] justify: center; label: _("An unexpected error occurred in Extension Manager"); selectable: true; wrap: true; } } Adw.PreferencesGroup instructions { header-suffix: Gtk.Button copy_button { styles [ "flat", ] clicked => $on_copy_button_clicked(); icon-name: "edit-copy-symbolic"; tooltip-text: _("Copy to Clipboard"); valign: center; }; Gtk.ScrolledWindow { styles [ "card", ] overflow: hidden; vexpand: true; child: Gtk.TextView text_view { styles [ "inline", ] bottom-margin: 12; editable: false; left-margin: 12; monospace: true; right-margin: 12; top-margin: 12; vexpand: true; wrap-mode: word_char; accessibility { labelled-by: instructions; } }; } Gtk.Button new_issue_button { styles [ "pill", "suggested-action", ] can-shrink: true; clicked => $on_new_issue_button_clicked() swapped; halign: center; label: _("_New Issue"); margin-top: 12; use-underline: true; } } }; }; } } extension-manager-0.6.3/src/exm-error-dialog.c000066400000000000000000000147161477302130300212650ustar00rootroot00000000000000/* exm-error-dialog.c * * Copyright 2022-2024 Matthew Jakeman * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General 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 "exm-error-dialog.h" #include "exm-config.h" #include struct _ExmErrorDialog { AdwWindow parent_instance; AdwToastOverlay *toast_overlay; AdwPreferencesGroup *instructions; char *error_string; GtkTextView *text_view; GtkButton *new_issue_button; }; G_DEFINE_FINAL_TYPE (ExmErrorDialog, exm_error_dialog, ADW_TYPE_WINDOW) enum { PROP_0, PROP_ERROR_STRING, N_PROPS }; static GParamSpec *properties [N_PROPS]; ExmErrorDialog * exm_error_dialog_new (const char *text) { return g_object_new (EXM_TYPE_ERROR_DIALOG, "error-string", text, NULL); } static void exm_error_dialog_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { ExmErrorDialog *self = EXM_ERROR_DIALOG (object); switch (prop_id) { case PROP_ERROR_STRING: g_value_set_string (value, self->error_string); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void exm_error_dialog_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { ExmErrorDialog *self = EXM_ERROR_DIALOG (object); switch (prop_id) { case PROP_ERROR_STRING: GtkTextBuffer *buffer; buffer = gtk_text_view_get_buffer (self->text_view); if (self->error_string) g_free (self->error_string); self->error_string = g_strdup (g_value_get_string (value)); GString *string_builder = g_string_new ("Support Log\n"); g_string_append_printf (string_builder, "----\n"); g_string_append_printf (string_builder, "Version: %s\n", APP_VERSION); g_string_append_printf (string_builder, "Package Format: %s\n", PKG_NAME); g_string_append_printf (string_builder, "Status: %s\n", IS_OFFICIAL ? "Official" : "Third Party"); g_string_append_printf (string_builder, "OS: %s %s\n", g_get_os_info ("NAME"), g_get_os_info ("VERSION")); g_string_append_printf (string_builder, "GTK: %d.%d.%d\n", gtk_get_major_version (), gtk_get_minor_version (), gtk_get_micro_version ()); g_string_append_printf (string_builder, "Libadwaita: %d.%d.%d\n", adw_get_major_version (), adw_get_minor_version (), adw_get_micro_version ()); g_string_append_printf (string_builder, "----\n"); g_string_append_printf (string_builder, "%s", self->error_string); gtk_text_buffer_set_text (buffer, g_string_free (string_builder, FALSE), -1); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void on_copy_button_clicked (GtkButton *button G_GNUC_UNUSED, ExmErrorDialog *self) { GdkDisplay *display; GdkClipboard *clipboard; // Add to clipboard display = gdk_display_get_default (); clipboard = gdk_display_get_clipboard (display); gdk_clipboard_set_text (clipboard, self->error_string); // Success indicator adw_toast_overlay_add_toast (self->toast_overlay, adw_toast_new (_("Copied"))); } static void on_new_issue_button_clicked (GtkButton *button G_GNUC_UNUSED, ExmErrorDialog *self) { GtkUriLauncher *uri = gtk_uri_launcher_new ("https://github.com/mjakeman/extension-manager/issues"); gtk_uri_launcher_launch (uri, GTK_WINDOW (self), NULL, NULL, NULL); } static void exm_error_dialog_class_init (ExmErrorDialogClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->get_property = exm_error_dialog_get_property; object_class->set_property = exm_error_dialog_set_property; properties [PROP_ERROR_STRING] = g_param_spec_string ("error-string", "Error String", "Error String", NULL, G_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY); g_object_class_install_properties (object_class, N_PROPS, properties); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); gtk_widget_class_set_template_from_resource (widget_class, g_strdup_printf ("%s/exm-error-dialog.ui", RESOURCE_PATH)); gtk_widget_class_bind_template_child (widget_class, ExmErrorDialog, toast_overlay); gtk_widget_class_bind_template_child (widget_class, ExmErrorDialog, instructions); gtk_widget_class_bind_template_child (widget_class, ExmErrorDialog, text_view); gtk_widget_class_bind_template_child (widget_class, ExmErrorDialog, new_issue_button); gtk_widget_class_bind_template_callback (widget_class, on_copy_button_clicked); gtk_widget_class_bind_template_callback (widget_class, on_new_issue_button_clicked); } static void exm_error_dialog_init (ExmErrorDialog *self) { gtk_widget_init_template (GTK_WIDGET (self)); #if IS_OFFICIAL adw_preferences_group_set_description (self->instructions, _("Please open a new issue and attach the following information:")); gtk_widget_set_visible (GTK_WIDGET (self->new_issue_button), TRUE); #else // Translators: '%s' = Name of Distributor (e.g. "Packager123") char *text = g_markup_printf_escaped (_("You are using a third-party build of Extension Manager. Please contact the package distributor (%s) first before filing an issue. Be sure to attach the following information:"), PKG_DISTRIBUTOR); adw_preferences_group_set_description (self->instructions, text); gtk_widget_set_visible (GTK_WIDGET (self->new_issue_button), FALSE); g_free (text); #endif } extension-manager-0.6.3/src/exm-error-dialog.h000066400000000000000000000020411477302130300212560ustar00rootroot00000000000000/* exm-error-dialog.h * * Copyright 2022 Matthew Jakeman * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General 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 EXM_TYPE_ERROR_DIALOG (exm_error_dialog_get_type()) G_DECLARE_FINAL_TYPE (ExmErrorDialog, exm_error_dialog, EXM, ERROR_DIALOG, AdwWindow) ExmErrorDialog *exm_error_dialog_new (const char *text); G_END_DECLS extension-manager-0.6.3/src/exm-extension-row.blp000066400000000000000000000073041477302130300220460ustar00rootroot00000000000000using Gtk 4.0; using Adw 1; template $ExmExtensionRow: Adw.ExpanderRow { title-lines: 2; subtitle-lines: 2; subtitle: bind template.extension as <$ExmExtension>.uuid; [suffix] Gtk.Switch ext_toggle { valign: center; active: bind template.extension as <$ExmExtension>.enabled; sensitive: bind template.extension as <$ExmExtension>.can-change; state-set => $on_state_changed(); } [suffix] Gtk.Button prefs_btn { styles [ "flat", ] icon-name: "settings-symbolic"; valign: center; halign: center; action-name: 'row.open-prefs'; // Translators: Button's tooltip to open extension's preferences dialog tooltip-text: _("Open extension preferences"); visible: bind template.extension as <$ExmExtension>.has-prefs; } [suffix] Gtk.Image error_icon { styles [ "error", ] icon-name: "dialog-error-symbolic"; valign: center; halign: center; focusable: true; margin-start: 9; margin-end: 9; visible: false; // Translators: Icon's tooltip when an extension has an error tooltip-text: _("An error occurred while loading this extension"); } [suffix] Gtk.Image out_of_date_icon { styles [ "error", ] icon-name: "clock-alt-symbolic"; valign: center; halign: center; focusable: true; margin-start: 9; margin-end: 9; visible: false; // Translators: Icon's tooltip when an extension is incompatible tooltip-text: _("This extension is incompatible with your current version of GNOME"); } [suffix] Gtk.Image update_icon { styles [ "update", ] icon-name: "software-update-available-symbolic"; valign: center; halign: center; focusable: true; margin-start: 9; margin-end: 9; visible: bind template.extension as <$ExmExtension>.has-update; // Translators: Icon's tooltip when an extension update is available tooltip-text: _("A newer version of this extension is available"); } Adw.ActionRow description_row { styles [ "multiline", "property", ] title: _("Description"); use-markup: false; } Adw.ActionRow version_row { styles [ "property", ] title: _("Version"); subtitle: bind template.extension as <$ExmExtension>.version; } Adw.ActionRow session_modes_row { styles [ "property", ] title: _("Session Modes"); visible: false; [suffix] Gtk.MenuButton { has-frame: false; icon-name: "info-symbolic"; valign: center; popover: Gtk.Popover info_popover { child: Adw.Clamp { maximum-size: 300; tightening-threshold: 300; child: Gtk.Label info_label { selectable: bind info_popover.visible inverted; wrap: true; }; }; }; } } Adw.ActionRow error_row { styles [ "monospace", "multiline", "property", ] title: _("Error"); subtitle: bind template.extension as <$ExmExtension>.error; subtitle-selectable: true; } Gtk.ListBoxRow { activatable: false; focusable: false; height-request: 46; Gtk.Box { halign: end; spacing: 6; margin-start: 4; margin-end: 4; Gtk.Button details_btn { styles [ "flat", ] label: _("See Details"); can-shrink: true; valign: center; action-name: 'win.show-detail'; } Gtk.Button remove_btn { styles [ "destructive-action", ] label: _("Remove…"); can-shrink: true; valign: center; action-name: 'row.remove'; visible: bind template.extension as <$ExmExtension>.is-user; } } } } extension-manager-0.6.3/src/exm-extension-row.c000066400000000000000000000331361477302130300215150ustar00rootroot00000000000000/* * exm-extension-row.c * * Copyright 2022-2025 Matthew Jakeman * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General 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 "exm-extension-row.h" #include "exm-config.h" #include "exm-enums.h" #include "exm-types.h" #include struct _ExmExtensionRow { AdwExpanderRow parent_instance; GSimpleActionGroup *action_group; ExmExtension *extension; gchar *uuid; ExmManager *manager; GtkButton *remove_btn; GtkButton *prefs_btn; GtkButton *details_btn; GtkSwitch *ext_toggle; AdwActionRow *description_row; AdwActionRow *version_row; AdwActionRow *session_modes_row; GtkLabel *info_label; AdwActionRow *error_row; GtkImage *update_icon; GtkImage *error_icon; GtkImage *out_of_date_icon; }; G_DEFINE_FINAL_TYPE (ExmExtensionRow, exm_extension_row, ADW_TYPE_EXPANDER_ROW) enum { PROP_0, PROP_EXTENSION, PROP_MANAGER, N_PROPS }; static GParamSpec *properties [N_PROPS]; static void bind_extension (ExmExtensionRow *self, ExmExtension *extension); static void unbind_extension (ExmExtensionRow *self); ExmExtensionRow * exm_extension_row_new (ExmExtension *extension, ExmManager *manager) { return g_object_new (EXM_TYPE_EXTENSION_ROW, "extension", extension, "manager", manager, NULL); } static void exm_extension_row_dispose (GObject *object) { ExmExtensionRow *self = (ExmExtensionRow *)object; unbind_extension (self); G_OBJECT_CLASS (exm_extension_row_parent_class)->dispose (object); } static void exm_extension_row_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { ExmExtensionRow *self = EXM_EXTENSION_ROW (object); switch (prop_id) { case PROP_EXTENSION: g_value_set_object (value, self->extension); break; case PROP_MANAGER: g_value_set_object (value, self->manager); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void exm_extension_row_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { ExmExtensionRow *self = EXM_EXTENSION_ROW (object); switch (prop_id) { case PROP_EXTENSION: bind_extension (self, g_value_get_object (value)); break; case PROP_MANAGER: self->manager = g_value_get_object (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static gboolean transform_to_state (GBinding *binding G_GNUC_UNUSED, const GValue *from_value, GValue *to_value, gpointer user_data G_GNUC_UNUSED) { g_value_set_boolean (to_value, g_value_get_enum (from_value) == EXM_EXTENSION_STATE_ACTIVE); return TRUE; } static void unbind_extension (ExmExtensionRow *self) { if (self->extension != NULL) { g_clear_object (&self->extension); g_clear_pointer (&self->uuid, g_free); } } static void add_session_modes (GPtrArray *session_modes, ExmExtensionRow *self) { if (!session_modes || session_modes->len == 0) return; GPtrArray *subtitles = g_ptr_array_new_with_free_func (g_free); gboolean has_unlock_dialog = FALSE; gboolean has_gdm = FALSE; for (guint i = 0; i < session_modes->len; i++) { gchar *mode = g_ptr_array_index (session_modes, i); if (g_strcmp0 (mode, "unlock-dialog") == 0) { g_ptr_array_add (subtitles, g_strdup (_("Unlock Dialog"))); has_unlock_dialog = TRUE; } else if (g_strcmp0 (mode, "gdm") == 0) { // Translators: GNOME Display Manager g_ptr_array_add (subtitles, g_strdup (_("GDM"))); has_gdm = TRUE; } } if (has_unlock_dialog && has_gdm) { // Translators: Label when an extension runs on both, login and lock screens gtk_label_set_label (self->info_label, _("This extension will run while the screen is locked and no user is logged in")); } else if (has_unlock_dialog) { // Translators: Label when an extension runs on the lock screen gtk_label_set_label (self->info_label, _("This extension will run while the screen is locked")); } else if (has_gdm) { // Translators: Label when an extension runs on the login screen gtk_label_set_label (self->info_label, _("This extension will run while no user is logged in")); } if (subtitles->len > 0) { g_ptr_array_add (subtitles, NULL); gchar *subtitle = g_strjoinv (" / ", (gchar **)subtitles->pdata); adw_action_row_set_subtitle (self->session_modes_row, subtitle); gtk_widget_set_visible (GTK_WIDGET (self->session_modes_row), TRUE); g_free (subtitle); } g_ptr_array_free (subtitles, TRUE); } static void bind_extension (ExmExtensionRow *self, ExmExtension *extension) { // TODO: This big block of property assignments is currently copy/pasted // from ExmExtension. We can replace this with GtkExpression lookups // once blueprint-compiler supports expressions. // (See https://gitlab.gnome.org/jwestman/blueprint-compiler/-/issues/5) g_return_if_fail (EXM_IS_EXTENSION_ROW (self)); // First, remove traces of the old extension unbind_extension (self); // Now, bind the new one self->extension = g_object_ref (extension); if (self->extension == NULL) return; gchar *name, *uuid, *description, *version, *error; gboolean enabled, has_prefs, is_user; ExmExtensionState state; GPtrArray *session_modes; g_object_get (self->extension, "name", &name, "uuid", &uuid, "description", &description, "state", &state, "enabled", &enabled, "version", &version, "error", &error, "has-prefs", &has_prefs, "is-user", &is_user, "session-modes", &session_modes, NULL); self->uuid = g_strdup (uuid); g_object_set (self, "title", g_markup_escape_text (name, -1), NULL); // Trim description label's leading and trailing whitespace char *description_trimmed = g_strchomp (g_strstrip (description)); adw_action_row_set_subtitle (self->description_row, description_trimmed); g_free (description_trimmed); // Only show if error exists and is not empty gboolean has_error = (error != NULL) && (strlen (error) != 0); gtk_widget_set_visible (GTK_WIDGET (self->error_row), has_error); gtk_widget_set_visible (GTK_WIDGET (self->error_icon), state == EXM_EXTENSION_STATE_ERROR); gtk_widget_set_visible (GTK_WIDGET (self->out_of_date_icon), state == EXM_EXTENSION_STATE_OUT_OF_DATE); gtk_widget_set_visible (GTK_WIDGET (self->version_row), version != NULL); gtk_actionable_set_action_target (GTK_ACTIONABLE (self->details_btn), "s", uuid); add_session_modes (session_modes, self); GAction *action; action = g_action_map_lookup_action (G_ACTION_MAP (self->action_group), "open-prefs"); g_simple_action_set_enabled (G_SIMPLE_ACTION (action), has_prefs); action = g_action_map_lookup_action (G_ACTION_MAP (self->action_group), "remove"); g_simple_action_set_enabled (G_SIMPLE_ACTION (action), is_user); g_object_bind_property_full (self->extension, "state", self->ext_toggle, "state", G_BINDING_SYNC_CREATE, transform_to_state, NULL, NULL, NULL); // Keep compatibility with GNOME Shell versions prior to 46 if (gtk_switch_get_state (self->ext_toggle) != enabled && (state == EXM_EXTENSION_STATE_ACTIVE || state == EXM_EXTENSION_STATE_ACTIVATING)) g_object_set (self->extension, "enabled", !enabled, NULL); } static gboolean on_state_changed (GtkSwitch *toggle, gboolean state, ExmExtensionRow *self) { g_return_val_if_fail (EXM_IS_EXTENSION_ROW (self), FALSE); g_assert (self->ext_toggle == toggle); gboolean enabled; g_object_get (self->extension, "enabled", &enabled, NULL); // Prevents changing extensions' state when global switch is toggled if (state == enabled) return TRUE; // Keep compatibility with GNOME Shell versions prior to 46 if (gtk_switch_get_state (toggle) != enabled) g_object_set (self->extension, "enabled", !enabled, NULL); if (state) exm_manager_enable_extension (self->manager, self->extension); else exm_manager_disable_extension (self->manager, self->extension); return TRUE; } void exm_search_row_focus_toggle (ExmExtensionRow *self) { gtk_widget_grab_focus (GTK_WIDGET (self->ext_toggle)); } static void exm_extension_row_class_init (ExmExtensionRowClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->dispose = exm_extension_row_dispose; object_class->get_property = exm_extension_row_get_property; object_class->set_property = exm_extension_row_set_property; properties [PROP_EXTENSION] = g_param_spec_object ("extension", "Extension", "Extension", EXM_TYPE_EXTENSION, G_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY); properties [PROP_MANAGER] = g_param_spec_object ("manager", "Manager", "Manager", EXM_TYPE_MANAGER, G_PARAM_READWRITE); g_object_class_install_properties (object_class, N_PROPS, properties); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); gtk_widget_class_set_template_from_resource (widget_class, g_strdup_printf ("%s/exm-extension-row.ui", RESOURCE_PATH)); gtk_widget_class_bind_template_child (widget_class, ExmExtensionRow, description_row); gtk_widget_class_bind_template_child (widget_class, ExmExtensionRow, version_row); gtk_widget_class_bind_template_child (widget_class, ExmExtensionRow, session_modes_row); gtk_widget_class_bind_template_child (widget_class, ExmExtensionRow, info_label); gtk_widget_class_bind_template_child (widget_class, ExmExtensionRow, error_row); gtk_widget_class_bind_template_child (widget_class, ExmExtensionRow, prefs_btn); gtk_widget_class_bind_template_child (widget_class, ExmExtensionRow, remove_btn); gtk_widget_class_bind_template_child (widget_class, ExmExtensionRow, details_btn); gtk_widget_class_bind_template_child (widget_class, ExmExtensionRow, ext_toggle); gtk_widget_class_bind_template_child (widget_class, ExmExtensionRow, update_icon); gtk_widget_class_bind_template_child (widget_class, ExmExtensionRow, error_icon); gtk_widget_class_bind_template_child (widget_class, ExmExtensionRow, out_of_date_icon); gtk_widget_class_bind_template_callback (widget_class, on_state_changed); } static void open_prefs (GSimpleAction *action G_GNUC_UNUSED, GVariant *new_value G_GNUC_UNUSED, ExmExtensionRow *self) { g_return_if_fail (self->extension); gtk_widget_activate_action (GTK_WIDGET (self), "ext.open-prefs", "s", self->uuid); } static void uninstall (GSimpleAction *action G_GNUC_UNUSED, GVariant *new_value G_GNUC_UNUSED, ExmExtensionRow *self) { g_return_if_fail (self->extension); gtk_widget_activate_action (GTK_WIDGET (self), "ext.remove", "s", self->uuid); } static void exm_extension_row_init (ExmExtensionRow *self) { GSimpleAction *open_prefs_action; GSimpleAction *remove_action; gtk_widget_init_template (GTK_WIDGET (self)); // Define Actions self->action_group = g_simple_action_group_new (); open_prefs_action = g_simple_action_new ("open-prefs", NULL); g_signal_connect (open_prefs_action, "activate", G_CALLBACK (open_prefs), self); remove_action = g_simple_action_new ("remove", NULL); g_signal_connect (remove_action, "activate", G_CALLBACK (uninstall), self); g_action_map_add_action (G_ACTION_MAP (self->action_group), G_ACTION (open_prefs_action)); g_action_map_add_action (G_ACTION_MAP (self->action_group), G_ACTION (remove_action)); gtk_widget_insert_action_group (GTK_WIDGET (self), "row", G_ACTION_GROUP (self->action_group)); } extension-manager-0.6.3/src/exm-extension-row.h000066400000000000000000000007631477302130300215220ustar00rootroot00000000000000#pragma once #include #include "local/exm-extension.h" #include "local/exm-manager.h" G_BEGIN_DECLS #define EXM_TYPE_EXTENSION_ROW (exm_extension_row_get_type()) G_DECLARE_FINAL_TYPE (ExmExtensionRow, exm_extension_row, EXM, EXTENSION_ROW, AdwExpanderRow) ExmExtensionRow *exm_extension_row_new (ExmExtension *extension, ExmManager *manager); void exm_search_row_focus_toggle (ExmExtensionRow *self); G_END_DECLS extension-manager-0.6.3/src/exm-help-overlay.blp000066400000000000000000000032141477302130300216300ustar00rootroot00000000000000using Gtk 4.0; ShortcutsWindow help_overlay { modal: true; ShortcutsSection { section-name: "shortcuts"; max-height: 12; ShortcutsGroup { title: C_("shortcut window", "General"); ShortcutsShortcut { title: C_("shortcut window", "Show Installed Page"); accelerator: "1"; } ShortcutsShortcut { title: C_("shortcut window", "Show Browse Page"); accelerator: "2"; } ShortcutsShortcut { title: C_("shortcut window", "Toggle Search"); accelerator: "F"; } ShortcutsShortcut { title: C_("shortcut window", "Show Keyboard Shortcuts"); action-name: "win.show-help-overlay"; } ShortcutsShortcut { title: C_("shortcut window", "Close Window"); action-name: "window.close"; } ShortcutsShortcut { title: C_("shortcut window", "Quit"); action-name: "app.quit"; } } ShortcutsGroup { title: C_("shortcut window", "Screenshot View"); ShortcutsShortcut { title: C_("shortcut window", "Zoom In"); accelerator: "plus"; } ShortcutsShortcut { title: C_("shortcut window", "Zoom Out"); accelerator: "minus"; } ShortcutsShortcut { title: C_("shortcut window", "Reset Zoom"); accelerator: "0"; } ShortcutsShortcut { title: C_("shortcut window", "Zoom In"); shortcut-type: gesture_stretch; } ShortcutsShortcut { title: C_("shortcut window", "Zoom Out"); shortcut-type: gesture_pinch; } } } } extension-manager-0.6.3/src/exm-info-bar.blp000066400000000000000000000015031477302130300207150ustar00rootroot00000000000000using Gtk 4.0; using Adw 1; template $ExmInfoBar: Gtk.Box { styles [ "card" ] homogeneous: true; Gtk.ListBox { styles [ "info-bar-item" ] selection-mode: none; Adw.ActionRow { styles [ "property" ] [prefix] Gtk.Image { icon-name: "folder-download-symbolic"; } title: C_("Number of downloads", "Downloads"); subtitle: bind $format_downloads(template.downloads) as ; } } Gtk.ListBox { styles [ "info-bar-item" ] selection-mode: none; Adw.ActionRow { styles [ "property" ] [prefix] Gtk.Image { icon-name: "system-software-install-symbolic"; } title: _("Version"); subtitle: bind $format_version(template.version) as ; } } } extension-manager-0.6.3/src/exm-info-bar.c000066400000000000000000000076771477302130300204040ustar00rootroot00000000000000/* * exm-info-bar.c * * Copyright 2022-2025 Matthew Jakeman * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General 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 "exm-info-bar.h" #include "exm-config.h" #include #include struct _ExmInfoBar { GtkBox parent_instance; gint downloads; gdouble version; }; G_DEFINE_FINAL_TYPE (ExmInfoBar, exm_info_bar, GTK_TYPE_BOX) enum { PROP_0, PROP_DOWNLOADS, PROP_VERSION, N_PROPS }; static GParamSpec *properties [N_PROPS]; ExmInfoBar * exm_info_bar_new (void) { return g_object_new (EXM_TYPE_INFO_BAR, NULL); } static void exm_info_bar_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { ExmInfoBar *self = EXM_INFO_BAR (object); switch (prop_id) { case PROP_DOWNLOADS: g_value_set_int (value, self->downloads); break; case PROP_VERSION: g_value_set_double (value, self->version); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void exm_info_bar_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { ExmInfoBar *self = EXM_INFO_BAR (object); switch (prop_id) { case PROP_DOWNLOADS: self->downloads = g_value_get_int (value); break; case PROP_VERSION: self->version = g_value_get_double (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static gchar* format_downloads (GObject *object G_GNUC_UNUSED, gint downloads) { return g_strdup_printf ("%'d", downloads); } static gchar* format_version (GObject *object G_GNUC_UNUSED, gdouble version) { return version == 0.0 ? g_strdup (_("Unsupported")) : g_strdup_printf ("%.f", version); } static void exm_info_bar_class_init (ExmInfoBarClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->get_property = exm_info_bar_get_property; object_class->set_property = exm_info_bar_set_property; properties [PROP_DOWNLOADS] = g_param_spec_int ("downloads", "Downloads", "Downloads", 0, G_MAXINT, 0, G_PARAM_READWRITE); properties [PROP_VERSION] = g_param_spec_double ("version", "Version", "Version", 0.0, G_MAXDOUBLE, 0.0, G_PARAM_READWRITE); g_object_class_install_properties (object_class, N_PROPS, properties); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); gtk_widget_class_set_template_from_resource (widget_class, g_strdup_printf ("%s/exm-info-bar.ui", RESOURCE_PATH)); gtk_widget_class_bind_template_callback (widget_class, format_downloads); gtk_widget_class_bind_template_callback (widget_class, format_version); gtk_widget_class_set_css_name (widget_class, "info-bar"); } static void exm_info_bar_init (ExmInfoBar *self) { gtk_widget_init_template (GTK_WIDGET (self)); } extension-manager-0.6.3/src/exm-info-bar.h000066400000000000000000000017721477302130300203770ustar00rootroot00000000000000/* * exm-info-bar.h * * Copyright 2022-2025 Matthew Jakeman * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General 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 EXM_TYPE_INFO_BAR (exm_info_bar_get_type()) G_DECLARE_FINAL_TYPE (ExmInfoBar, exm_info_bar, EXM, INFO_BAR, GtkBox) ExmInfoBar *exm_info_bar_new (void); G_END_DECLS extension-manager-0.6.3/src/exm-install-button.blp000066400000000000000000000005501477302130300222000ustar00rootroot00000000000000using Gtk 4.0; template $ExmInstallButton: Gtk.Button { valign: center; Gtk.Stack stack { hhomogeneous: false; interpolate-size: true; transition-type: crossfade; Gtk.StackPage { child: Gtk.Label label {}; } Gtk.StackPage { child: Gtk.Image icon { icon-name: "folder-download-symbolic"; }; } } } extension-manager-0.6.3/src/exm-install-button.c000066400000000000000000000136131477302130300216510ustar00rootroot00000000000000/* * exm-install-button.c * * Copyright 2022-2025 Matthew Jakeman * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General 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 "exm-install-button.h" #include "exm-config.h" #include "exm-enums.h" #include "exm-types.h" #include #include struct _ExmInstallButton { GtkButton parent_instance; GtkStack *stack; GtkImage *icon; GtkLabel *label; ExmInstallButtonState state; gboolean icon_only; }; G_DEFINE_FINAL_TYPE (ExmInstallButton, exm_install_button, GTK_TYPE_BUTTON) enum { PROP_0, PROP_STATE, PROP_ICON_ONLY, N_PROPS }; static GParamSpec *properties [N_PROPS]; static void update_state (ExmInstallButton *button); static void update_icon_only (ExmInstallButton *button); ExmInstallButton * exm_install_button_new (void) { return g_object_new (EXM_TYPE_INSTALL_BUTTON, NULL); } static void exm_install_button_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { ExmInstallButton *self = EXM_INSTALL_BUTTON (object); switch (prop_id) { case PROP_STATE: g_value_set_enum (value, self->state); break; case PROP_ICON_ONLY: g_value_set_boolean (value, self->icon_only); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void exm_install_button_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { ExmInstallButton *self = EXM_INSTALL_BUTTON (object); switch (prop_id) { case PROP_STATE: self->state = g_value_get_enum (value); update_state (self); break; case PROP_ICON_ONLY: self->icon_only = g_value_get_boolean (value); update_icon_only (self); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void update_state (ExmInstallButton *button) { const gchar *tooltip; ExmInstallButtonState state; // Translators: Icon's tooltip when an extension is incompatible tooltip = _("This extension is incompatible with your current version of GNOME"); state = button->state; gtk_widget_remove_css_class (GTK_WIDGET (button), "warning"); gtk_widget_remove_css_class (GTK_WIDGET (button), "suggested-action"); gtk_widget_set_tooltip_text (GTK_WIDGET (button), NULL); switch ((int)state) { case EXM_INSTALL_BUTTON_STATE_DEFAULT: gtk_label_set_label (button->label, _("Install…")); gtk_widget_set_sensitive (GTK_WIDGET (button), TRUE); gtk_widget_add_css_class (GTK_WIDGET (button), "suggested-action"); break; case EXM_INSTALL_BUTTON_STATE_INSTALLING: gtk_label_set_label (button->label, _("Installing")); gtk_widget_set_sensitive (GTK_WIDGET (button), FALSE); break; case EXM_INSTALL_BUTTON_STATE_INSTALLED: gtk_label_set_label (button->label, C_("State", "Installed")); gtk_widget_set_sensitive (GTK_WIDGET (button), FALSE); break; case EXM_INSTALL_BUTTON_STATE_UNSUPPORTED: gtk_label_set_label (button->label, _("Unsupported…")); gtk_widget_add_css_class (GTK_WIDGET (button), "warning"); gtk_widget_set_tooltip_text (GTK_WIDGET (button), tooltip); gtk_widget_set_sensitive (GTK_WIDGET (button), TRUE); break; } } static void update_icon_only (ExmInstallButton *button) { gtk_stack_set_visible_child (button->stack, button->icon_only ? GTK_WIDGET (button->icon) : GTK_WIDGET (button->label)); } static void exm_install_button_class_init (ExmInstallButtonClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->get_property = exm_install_button_get_property; object_class->set_property = exm_install_button_set_property; properties [PROP_STATE] = g_param_spec_enum ("state", "State", "State", EXM_TYPE_INSTALL_BUTTON_STATE, EXM_INSTALL_BUTTON_STATE_DEFAULT, G_PARAM_READWRITE); properties [PROP_ICON_ONLY] = g_param_spec_boolean ("icon-only", "Icon Only", "Icon Only", FALSE, G_PARAM_READWRITE); g_object_class_install_properties (object_class, N_PROPS, properties); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); gtk_widget_class_set_template_from_resource (widget_class, g_strdup_printf ("%s/exm-install-button.ui", RESOURCE_PATH)); gtk_widget_class_bind_template_child (widget_class, ExmInstallButton, stack); gtk_widget_class_bind_template_child (widget_class, ExmInstallButton, icon); gtk_widget_class_bind_template_child (widget_class, ExmInstallButton, label); } static void exm_install_button_init (ExmInstallButton *self) { gtk_widget_init_template (GTK_WIDGET (self)); } extension-manager-0.6.3/src/exm-install-button.h000066400000000000000000000020551477302130300216540ustar00rootroot00000000000000/* * exm-install-button.h * * Copyright 2022-2025 Matthew Jakeman * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General 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 EXM_TYPE_INSTALL_BUTTON (exm_install_button_get_type()) G_DECLARE_FINAL_TYPE (ExmInstallButton, exm_install_button, EXM, INSTALL_BUTTON, GtkButton) ExmInstallButton *exm_install_button_new (void); G_END_DECLS extension-manager-0.6.3/src/exm-installed-page.blp000066400000000000000000000061701477302130300221160ustar00rootroot00000000000000using Gtk 4.0; using Adw 1; template $ExmInstalledPage: Gtk.Widget { notify::manager => $on_bind_manager(); Gtk.Stack stack { transition-type: crossfade; vexpand: true; Gtk.StackPage page_list { name: "page_list"; child: Adw.PreferencesPage { banner: Adw.Banner updates_banner { button-label: _("_Log Out…"); button-style: suggested; action-name: "app.logout"; }; Adw.PreferencesGroup { Adw.SwitchRow global_toggle { [prefix] Gtk.Image { icon-name: 'puzzle-piece-symbolic'; } title: _("Use Extensions"); subtitle: _("Extensions can cause performance and stability issues"); } } Adw.PreferencesGroup user_list { title: _("User-Installed Extensions"); Gtk.ListBox user_list_box { styles [ "boxed-list", "boxed-list-placeholder", ] selection-mode: none; [placeholder] Adw.ActionRow { [prefix] Gtk.Image { icon-name: "globe-symbolic"; } title: _("No User Extensions Installed"); [suffix] Gtk.Button { label: _("Browse"); action-name: "win.show-page"; action-target: "\"browse\""; valign: center; } } accessibility { labelled-by: user_list; } } } Adw.PreferencesGroup system_list { title: _("System Extensions"); Gtk.ListBox system_list_box { styles [ "boxed-list", "boxed-list-placeholder", ] selection-mode: none; [placeholder] Adw.ActionRow { [prefix] Gtk.Image { icon-name: "settings-symbolic"; } title: _("No System Extensions Installed"); } accessibility { labelled-by: system_list; } } } }; } Gtk.StackPage { name: "page_results"; child: Adw.PreferencesPage { Adw.PreferencesGroup { Gtk.ListBox search_list_box { styles [ "boxed-list", ] selection-mode: none; accessibility { // Translators: Text announced by screen readers when interacting with the list of search results label: _("Search Results"); } } } }; } Gtk.StackPage { name: "page_empty"; child: Adw.StatusPage { icon-name: "edit-find-symbolic"; title: _("No Results Found"); description: _("Try a different search or search online"); child: Gtk.Button { styles [ "pill", ] label: _("_Search Online"); use-underline: true; halign: center; action-name: "win.search-online"; }; }; } } } extension-manager-0.6.3/src/exm-installed-page.c000066400000000000000000000360231477302130300215630ustar00rootroot00000000000000/* * exm-installed-page.c * * Copyright 2022-2025 Matthew Jakeman * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General 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 "exm-installed-page.h" #include "exm-config.h" #include "exm-enums.h" #include "exm-extension-row.h" #include "exm-types.h" #include "exm-window.h" #include "local/exm-manager.h" #include struct _ExmInstalledPage { GtkWidget parent_instance; ExmManager *manager; // Template Widgets GtkStack *stack; AdwBanner *updates_banner; AdwSwitchRow *global_toggle; GtkListBox *user_list_box; GtkListBox *system_list_box; GtkListBox *search_list_box; GtkFilterListModel *search_list_model; gboolean sort_enabled_first; guint signal_id; }; G_DEFINE_FINAL_TYPE (ExmInstalledPage, exm_installed_page, GTK_TYPE_WIDGET) enum { PROP_0, PROP_MANAGER, PROP_SORT_ENABLED_FIRST, N_PROPS }; static GParamSpec *properties [N_PROPS]; static void invalidate_model_bindings (ExmInstalledPage *self); ExmInstalledPage * exm_installed_page_new (void) { return g_object_new (EXM_TYPE_INSTALLED_PAGE, NULL); } static void exm_installed_page_finalize (GObject *object) { GtkWidget *child; ExmInstalledPage *self = (ExmInstalledPage *)object; child = gtk_widget_get_first_child (GTK_WIDGET (self)); gtk_widget_unparent (child); G_OBJECT_CLASS (exm_installed_page_parent_class)->finalize (object); } static void exm_installed_page_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { ExmInstalledPage *self = EXM_INSTALLED_PAGE (object); switch (prop_id) { case PROP_MANAGER: g_value_set_object (value, self->manager); break; case PROP_SORT_ENABLED_FIRST: g_value_set_boolean (value, self->sort_enabled_first); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void exm_installed_page_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { ExmInstalledPage *self = EXM_INSTALLED_PAGE (object); switch (prop_id) { case PROP_MANAGER: self->manager = g_value_get_object (value); break; case PROP_SORT_ENABLED_FIRST: self->sort_enabled_first = g_value_get_boolean (value); invalidate_model_bindings (self); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static GtkWidget * widget_factory (ExmExtension *extension, ExmInstalledPage *self) { ExmExtensionRow *row; g_return_val_if_fail (EXM_IS_EXTENSION (extension), GTK_WIDGET (NULL)); g_return_val_if_fail (EXM_IS_INSTALLED_PAGE (self), GTK_WIDGET (NULL)); row = exm_extension_row_new (extension, self->manager); return GTK_WIDGET (row); } static int compare_enabled (ExmExtension *this, ExmExtension *other, gpointer user_data G_GNUC_UNUSED) { g_return_val_if_fail (EXM_IS_EXTENSION (this), 2); g_return_val_if_fail (EXM_IS_EXTENSION (other), 2); // Crash ExmExtensionState this_state; ExmExtensionState other_state; g_object_get (this, "state", &this_state, NULL); g_object_get (other, "state", &other_state, NULL); gboolean this_enabled = (this_state == EXM_EXTENSION_STATE_ACTIVE); gboolean other_enabled = (other_state == EXM_EXTENSION_STATE_ACTIVE); if ((this_enabled && other_enabled) || (!this_enabled && !other_enabled)) return 0; else if (this_enabled && !other_enabled) return -1; else if (!this_enabled && other_enabled) return 1; return 0; // Never reached } static void on_search_changed (ExmWindow *window, gpointer user_data) { GtkStringFilter *search_filter = (GtkStringFilter *)user_data; gtk_string_filter_set_search (search_filter, exm_window_get_search_query (window)); } static void on_visible_stack_changed (GObject *object G_GNUC_UNUSED, GParamSpec *pspec G_GNUC_UNUSED, gpointer user_data) { ExmInstalledPage *self = (ExmInstalledPage *)user_data; ExmWindow *window; gboolean search_mode; window = EXM_WINDOW (gtk_widget_get_ancestor (GTK_WIDGET (self), EXM_TYPE_WINDOW)); search_mode = exm_window_get_search_mode (window); exm_installed_page_show_page (search_mode, self); } void exm_installed_page_show_page (gboolean search_mode, ExmInstalledPage *self) { if (search_mode && g_list_model_get_n_items (G_LIST_MODEL (self->search_list_model)) > 0) gtk_stack_set_visible_child_name (self->stack , "page_results"); else if (search_mode) gtk_stack_set_visible_child_name (self->stack , "page_empty"); else gtk_stack_set_visible_child_name (self->stack , "page_list"); } static void bind_list_box (GListModel *model, ExmInstalledPage *self) { GtkExpression *expression; GtkStringSorter *alphabetical_sorter; GtkSortListModel *sorted_model; GtkStringFilter *search_filter; GtkBoolFilter *is_user_filter; GtkFilterListModel *filtered_model; ExmWindow *window; const char *query; g_return_if_fail (G_IS_LIST_MODEL (model)); // Sort alphabetically expression = gtk_property_expression_new (EXM_TYPE_EXTENSION, NULL, "name"); alphabetical_sorter = gtk_string_sorter_new (expression); if (self->sort_enabled_first) { GtkCustomSorter *enabled_sorter; GtkMultiSorter *multi_sorter; // Sort by enabled enabled_sorter = gtk_custom_sorter_new ((GCompareDataFunc) compare_enabled, NULL, NULL); multi_sorter = gtk_multi_sorter_new (); gtk_multi_sorter_append (multi_sorter, GTK_SORTER (enabled_sorter)); gtk_multi_sorter_append (multi_sorter, GTK_SORTER (alphabetical_sorter)); sorted_model = gtk_sort_list_model_new (model, GTK_SORTER (multi_sorter)); } else { sorted_model = gtk_sort_list_model_new (model, GTK_SORTER (alphabetical_sorter)); } search_filter = gtk_string_filter_new (expression); self->search_list_model = gtk_filter_list_model_new (G_LIST_MODEL (sorted_model), GTK_FILTER (search_filter)); gtk_list_box_bind_model (self->search_list_box, G_LIST_MODEL (self->search_list_model), (GtkListBoxCreateWidgetFunc) widget_factory, self, NULL); // Filter by user/system extension expression = gtk_property_expression_new (EXM_TYPE_EXTENSION, NULL, "is-user"); is_user_filter = gtk_bool_filter_new (expression); filtered_model = gtk_filter_list_model_new (G_LIST_MODEL (sorted_model), GTK_FILTER (is_user_filter)); gtk_list_box_bind_model (self->user_list_box, G_LIST_MODEL (filtered_model), (GtkListBoxCreateWidgetFunc) widget_factory, self, NULL); is_user_filter = gtk_bool_filter_new (expression); gtk_bool_filter_set_invert (is_user_filter, TRUE); filtered_model = gtk_filter_list_model_new (G_LIST_MODEL (sorted_model), GTK_FILTER (is_user_filter)); gtk_list_box_bind_model (self->system_list_box, G_LIST_MODEL (filtered_model), (GtkListBoxCreateWidgetFunc) widget_factory, self, NULL); window = EXM_WINDOW (gtk_widget_get_ancestor (GTK_WIDGET (self), EXM_TYPE_WINDOW)); query = exm_window_get_search_query (window); // Refilter when sort-enabled-first changes and there is an ongoing search if (query) gtk_string_filter_set_search (search_filter, query); g_signal_connect (window, "search-changed", G_CALLBACK (on_search_changed), search_filter); g_signal_connect (self->search_list_model, "notify::n-items", G_CALLBACK (on_visible_stack_changed), self); } static guint show_updates_banner (ExmInstalledPage *self) { adw_banner_set_revealed (self->updates_banner, TRUE); return G_SOURCE_REMOVE; } static void on_updates_available (ExmManager *manager G_GNUC_UNUSED, int n_updates, ExmInstalledPage *self) { char *label; // Translators: '%d' = number of extensions that will be updated label = g_strdup_printf(ngettext("%d extension will be updated on next login", "%d extensions will be updated on next login", n_updates), n_updates); adw_banner_set_title (self->updates_banner, label); g_free (label); // Short delay to draw user attention g_timeout_add (500, G_SOURCE_FUNC (show_updates_banner), self); } static gboolean focus_matching_extension (GtkListBox *list_box, ExmExtension *extension) { int index = 0; ExmExtensionRow *row; while ((row = EXM_EXTENSION_ROW (gtk_list_box_get_row_at_index (list_box, index)))) { ExmExtension *row_extension; g_object_get (row, "extension", &row_extension, NULL); if (is_extension_equal (extension, row_extension)) { exm_search_row_focus_toggle (row); g_object_unref (row_extension); return TRUE; } g_object_unref (row_extension); index++; } return FALSE; } static void on_extensions_changed (GListModel *model, guint position, guint removed, guint added, ExmInstalledPage *self) { if (!self->sort_enabled_first || (removed > 0 && added > 0)) return; ExmExtension *extension = EXM_EXTENSION (g_list_model_get_object (model, position)); if (!extension) return; GtkRoot *toplevel = gtk_widget_get_root (GTK_WIDGET (self)); GtkWidget *focused_widget = gtk_window_get_focus (GTK_WINDOW (toplevel)); if (g_list_store_find_with_equal_func (G_LIST_STORE (model), extension, (GEqualFunc)is_extension_equal, &position)) g_list_model_items_changed (model, position, 1, 1); if (focused_widget && gtk_widget_has_focus (focused_widget) && gtk_widget_get_child_visible (GTK_WIDGET (self))) { if (g_strcmp0 (gtk_stack_get_visible_child_name (self->stack), "page_results") == 0) { focus_matching_extension (self->search_list_box, extension); } else { if (!focus_matching_extension (self->user_list_box, extension)) focus_matching_extension (self->system_list_box, extension); } } g_object_unref (extension); } static void invalidate_model_bindings (ExmInstalledPage *self) { GListModel *ext_model; if (!self->manager) return; g_object_get (self->manager, "extensions", &ext_model, NULL); if (ext_model) { bind_list_box (ext_model, self); if (self->signal_id > 0) g_signal_handler_disconnect (ext_model, self->signal_id); self->signal_id = g_signal_connect (ext_model, "items-changed", G_CALLBACK (on_extensions_changed), self); } } static void on_bind_manager (ExmInstalledPage *self) { // Bind (or rebind) models invalidate_model_bindings (self); g_signal_connect (self->manager, "updates-available", G_CALLBACK (on_updates_available), self); g_object_bind_property (self->manager, "extensions-enabled", self->global_toggle, "active", G_BINDING_BIDIRECTIONAL|G_BINDING_SYNC_CREATE); // Check if updates are available // NOTE: We need to do this *after* connecting the signal // handler above, otherwise we will not be notified. exm_manager_check_for_updates (self->manager); } static void exm_installed_page_class_init (ExmInstalledPageClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->finalize = exm_installed_page_finalize; object_class->get_property = exm_installed_page_get_property; object_class->set_property = exm_installed_page_set_property; properties [PROP_MANAGER] = g_param_spec_object ("manager", "Manager", "Manager", EXM_TYPE_MANAGER, G_PARAM_READWRITE); properties [PROP_SORT_ENABLED_FIRST] = g_param_spec_boolean ("sort-enabled-first", "Sort Enabled First", "Sort Enabled First", FALSE, G_PARAM_READWRITE); g_object_class_install_properties (object_class, N_PROPS, properties); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); gtk_widget_class_set_template_from_resource (widget_class, g_strdup_printf ("%s/exm-installed-page.ui", RESOURCE_PATH)); gtk_widget_class_bind_template_child (widget_class, ExmInstalledPage, stack); gtk_widget_class_bind_template_child (widget_class, ExmInstalledPage, updates_banner); gtk_widget_class_bind_template_child (widget_class, ExmInstalledPage, global_toggle); gtk_widget_class_bind_template_child (widget_class, ExmInstalledPage, user_list_box); gtk_widget_class_bind_template_child (widget_class, ExmInstalledPage, system_list_box); gtk_widget_class_bind_template_child (widget_class, ExmInstalledPage, search_list_box); gtk_widget_class_bind_template_callback (widget_class, on_bind_manager); gtk_widget_class_set_layout_manager_type (widget_class, GTK_TYPE_BIN_LAYOUT); } static void exm_installed_page_init (ExmInstalledPage *self) { GSettings *settings; gtk_widget_init_template (GTK_WIDGET (self)); settings = g_settings_new (APP_ID); g_settings_bind (settings, "sort-enabled-first", self, "sort-enabled-first", G_SETTINGS_BIND_GET); g_object_unref (settings); } extension-manager-0.6.3/src/exm-installed-page.h000066400000000000000000000023141477302130300215640ustar00rootroot00000000000000/* * exm-installed-page.h * * Copyright 2022-2025 Matthew Jakeman * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General 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 EXM_TYPE_INSTALLED_PAGE (exm_installed_page_get_type()) G_DECLARE_FINAL_TYPE (ExmInstalledPage, exm_installed_page, EXM, INSTALLED_PAGE, GtkWidget) ExmInstalledPage *exm_installed_page_new (void); void exm_installed_page_show_page (gboolean search_mode, ExmInstalledPage *self); G_END_DECLS extension-manager-0.6.3/src/exm-rating.blp000066400000000000000000000003461477302130300205100ustar00rootroot00000000000000using Gtk 4.0; template $ExmRating : Gtk.Widget { Gtk.Box { orientation: horizontal; Gtk.Image star_one {} Gtk.Image star_two {} Gtk.Image star_three {} Gtk.Image star_four {} Gtk.Image star_five {} } } extension-manager-0.6.3/src/exm-rating.c000066400000000000000000000123201477302130300201500ustar00rootroot00000000000000/* * exm-rating.c * * Copyright 2022-2025 Matthew Jakeman * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General 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 "exm-rating.h" #include "exm-config.h" #include struct _ExmRating { GtkWidget parent_instance; int rating; GtkImage *star_one; GtkImage *star_two; GtkImage *star_three; GtkImage *star_four; GtkImage *star_five; }; G_DEFINE_FINAL_TYPE (ExmRating, exm_rating, GTK_TYPE_WIDGET) enum { PROP_0, PROP_RATING, N_PROPS }; static GParamSpec *properties [N_PROPS]; ExmRating * exm_rating_new (void) { return g_object_new (EXM_TYPE_RATING, NULL); } static void exm_rating_finalize (GObject *object) { GtkWidget *child; ExmRating *self = (ExmRating *)object; child = gtk_widget_get_first_child (GTK_WIDGET (self)); gtk_widget_unparent (child); G_OBJECT_CLASS (exm_rating_parent_class)->finalize (object); } void update_rating (ExmRating *self); static void exm_rating_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { ExmRating *self = EXM_RATING (object); switch (prop_id) { case PROP_RATING: g_value_set_int (value, self->rating); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void exm_rating_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { ExmRating *self = EXM_RATING (object); switch (prop_id) { case PROP_RATING: self->rating = g_value_get_int (value); update_rating (self); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } #define FILLED_ICON_NAME "star-filled-rounded-symbolic" #define EMPTY_ICON_NAME "star-outline-rounded-symbolic" void update_rating (ExmRating *self) { gtk_image_set_from_icon_name (self->star_one, EMPTY_ICON_NAME); gtk_image_set_from_icon_name (self->star_two, EMPTY_ICON_NAME); gtk_image_set_from_icon_name (self->star_three, EMPTY_ICON_NAME); gtk_image_set_from_icon_name (self->star_four, EMPTY_ICON_NAME); gtk_image_set_from_icon_name (self->star_five, EMPTY_ICON_NAME); switch (self->rating) { case 5: gtk_image_set_from_icon_name (self->star_five, FILLED_ICON_NAME); // fall through case 4: gtk_image_set_from_icon_name (self->star_four, FILLED_ICON_NAME); // fall through case 3: gtk_image_set_from_icon_name (self->star_three, FILLED_ICON_NAME); // fall through case 2: gtk_image_set_from_icon_name (self->star_two, FILLED_ICON_NAME); // fall through case 1: gtk_image_set_from_icon_name (self->star_one, FILLED_ICON_NAME); // fall through case 0: default: break; } gtk_widget_set_tooltip_text (GTK_WIDGET (self), g_strdup_printf (ngettext ("%i Star", "%i Stars", self->rating), self->rating)); } static void exm_rating_class_init (ExmRatingClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->finalize = exm_rating_finalize; object_class->get_property = exm_rating_get_property; object_class->set_property = exm_rating_set_property; properties [PROP_RATING] = g_param_spec_int ("rating", "Rating", "Rating", 0, G_MAXINT, 0, G_PARAM_READWRITE); g_object_class_install_properties (object_class, N_PROPS, properties); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); gtk_widget_class_set_template_from_resource (widget_class, g_strdup_printf ("%s/exm-rating.ui", RESOURCE_PATH)); gtk_widget_class_bind_template_child (widget_class, ExmRating, star_one); gtk_widget_class_bind_template_child (widget_class, ExmRating, star_two); gtk_widget_class_bind_template_child (widget_class, ExmRating, star_three); gtk_widget_class_bind_template_child (widget_class, ExmRating, star_four); gtk_widget_class_bind_template_child (widget_class, ExmRating, star_five); gtk_widget_class_set_layout_manager_type (widget_class, GTK_TYPE_BIN_LAYOUT); gtk_widget_class_set_css_name (widget_class, "rating"); } static void exm_rating_init (ExmRating *self) { gtk_widget_init_template (GTK_WIDGET (self)); update_rating (self); } extension-manager-0.6.3/src/exm-rating.h000066400000000000000000000003311477302130300201540ustar00rootroot00000000000000#pragma once #include G_BEGIN_DECLS #define EXM_TYPE_RATING (exm_rating_get_type()) G_DECLARE_FINAL_TYPE (ExmRating, exm_rating, EXM, RATING, GtkWidget) ExmRating *exm_rating_new (void); G_END_DECLS extension-manager-0.6.3/src/exm-screenshot-view.blp000066400000000000000000000027251477302130300223540ustar00rootroot00000000000000using Gtk 4.0; using Adw 1; template $ExmScreenshotView: Adw.NavigationPage { styles [ "tint" ] tag: "screenshot-view"; Adw.ToolbarView { [top] Adw.HeaderBar {} content: Gtk.Overlay { [overlay] Gtk.Overlay image_overlay { [overlay] Gtk.Box { orientation: horizontal; spacing: 12; halign: end; valign: end; margin-top: 18; margin-bottom: 18; margin-start: 18; margin-end: 18; Gtk.Button { styles [ "osd", "circular" ] icon-name: "zoom-out-symbolic"; // Translators: Button's tooltip to zoom out screenshots tooltip-text: _("Zoom Out"); action-name: "screenshot.zoom-out"; height-request: 42; width-request: 42; } Gtk.Button { styles [ "osd", "circular" ] icon-name: "zoom-in-symbolic"; // Translators: Button's tooltip to zoom in screenshots tooltip-text: _("Zoom In"); action-name: "screenshot.zoom-in"; height-request: 42; width-request: 42; } } Adw.Bin { hexpand: true; vexpand: true; $ExmZoomPicture overlay_screenshot { notify::zoom-level => $notify_zoom(); } } } }; } } extension-manager-0.6.3/src/exm-screenshot-view.c000066400000000000000000000066651477302130300220300ustar00rootroot00000000000000/* * exm-screenshot-view.c * * Copyright 2022-2025 Matthew Jakeman * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General 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 "exm-screenshot-view.h" #include "exm-zoom-picture.h" #include "exm-config.h" struct _ExmScreenshotView { AdwNavigationPage parent_instance; ExmZoomPicture *overlay_screenshot; }; G_DEFINE_FINAL_TYPE (ExmScreenshotView, exm_screenshot_view, ADW_TYPE_NAVIGATION_PAGE) ExmScreenshotView * exm_screenshot_view_new (void) { return g_object_new (EXM_TYPE_SCREENSHOT_VIEW, NULL); } void exm_screenshot_view_set_screenshot (ExmScreenshotView *self, GdkPaintable *paintable) { exm_zoom_picture_set_paintable (self->overlay_screenshot, paintable); exm_zoom_picture_set_zoom_level (self->overlay_screenshot, 1.0f); } void exm_screenshot_view_zoom (ExmScreenshotView *self, const char *action_name) { float zoom_level; float zoom_step; zoom_level = exm_zoom_picture_get_zoom_level (self->overlay_screenshot); zoom_step = exm_zoom_picture_get_zoom_level_step (self->overlay_screenshot); if (g_strcmp0 (action_name, "screenshot.zoom-in") == 0) exm_zoom_picture_set_zoom_level (self->overlay_screenshot, zoom_level + zoom_step); else if (g_strcmp0 (action_name, "screenshot.zoom-out") == 0) exm_zoom_picture_set_zoom_level (self->overlay_screenshot, zoom_level - zoom_step); else if (g_strcmp0 (action_name, "screenshot.zoom-reset") == 0) exm_zoom_picture_set_zoom_level (self->overlay_screenshot, 1.0f); else g_assert_not_reached (); } static void notify_zoom (ExmZoomPicture *picture, GParamSpec *pspec G_GNUC_UNUSED, ExmScreenshotView *self) { GtkRoot *toplevel; float zoom_level; toplevel = gtk_widget_get_root (GTK_WIDGET (self)); zoom_level = exm_zoom_picture_get_zoom_level (picture); // Set action states gtk_widget_action_set_enabled (GTK_WIDGET (toplevel), "screenshot.zoom-in", zoom_level < exm_zoom_picture_get_zoom_level_max (picture)); gtk_widget_action_set_enabled (GTK_WIDGET (toplevel), "screenshot.zoom-out", zoom_level > exm_zoom_picture_get_zoom_level_min (picture)); } static void exm_screenshot_view_class_init (ExmScreenshotViewClass *klass) { GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); gtk_widget_class_set_template_from_resource (widget_class, g_strdup_printf ("%s/exm-screenshot-view.ui", RESOURCE_PATH)); gtk_widget_class_bind_template_child (widget_class, ExmScreenshotView, overlay_screenshot); gtk_widget_class_bind_template_callback (widget_class, notify_zoom); } static void exm_screenshot_view_init (ExmScreenshotView *self) { gtk_widget_init_template (GTK_WIDGET (self)); } extension-manager-0.6.3/src/exm-screenshot-view.h000066400000000000000000000010321477302130300220140ustar00rootroot00000000000000# pragma once #include G_BEGIN_DECLS #define EXM_TYPE_SCREENSHOT_VIEW (exm_screenshot_view_get_type()) G_DECLARE_FINAL_TYPE (ExmScreenshotView, exm_screenshot_view, EXM, SCREENSHOT_VIEW, AdwNavigationPage) ExmScreenshotView * exm_screenshot_view_new (void); void exm_screenshot_view_set_screenshot (ExmScreenshotView *self, GdkPaintable *paintable); void exm_screenshot_view_zoom (ExmScreenshotView *self, const char *action_name); G_END_DECLS extension-manager-0.6.3/src/exm-screenshot.blp000066400000000000000000000006101477302130300213730ustar00rootroot00000000000000using Gtk 4.0; template $ExmScreenshot : Gtk.Widget { Gtk.Stack stack { transition-type: crossfade; Gtk.StackPage { name: "page_spinner"; child: Gtk.Image { icon-name: "image-loading-symbolic"; icon-size: large; valign: center; }; } Gtk.StackPage { name: "page_picture"; child: Gtk.Picture picture { valign: fill; halign: fill; }; } } } extension-manager-0.6.3/src/exm-screenshot.c000066400000000000000000000104751477302130300210520ustar00rootroot00000000000000/* * exm-screenshot.c * * Copyright 2022-2025 Matthew Jakeman * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General 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 "exm-screenshot.h" #include "exm-zoom-picture.h" #include "exm-config.h" struct _ExmScreenshot { GtkWidget parent_instance; GtkPicture *picture; GtkStack *stack; }; G_DEFINE_FINAL_TYPE (ExmScreenshot, exm_screenshot, GTK_TYPE_WIDGET) ExmScreenshot * exm_screenshot_new (void) { return g_object_new (EXM_TYPE_SCREENSHOT, NULL); } static void exm_screenshot_finalize (GObject *object) { GtkWidget *child; ExmScreenshot *self = (ExmScreenshot *)object; child = gtk_widget_get_first_child (GTK_WIDGET (self)); gtk_widget_unparent (child); G_OBJECT_CLASS (exm_screenshot_parent_class)->finalize (object); } void exm_screenshot_set_paintable (ExmScreenshot *self, GdkPaintable *paintable) { gtk_picture_set_paintable (self->picture, paintable); } void exm_screenshot_reset (ExmScreenshot *self) { gtk_stack_set_visible_child_name (self->stack, "page_spinner"); } void exm_screenshot_display (ExmScreenshot *self) { gtk_stack_set_visible_child_name (self->stack, "page_picture"); } static void exm_screenshot_measure (GtkWidget *widget, GtkOrientation orientation, int for_size, int *minimum, int *natural, int *minimum_baseline, int *natural_baseline) { ExmScreenshot *self = EXM_SCREENSHOT (widget); if (orientation == GTK_ORIENTATION_VERTICAL) { gtk_widget_measure (GTK_WIDGET (self->stack), GTK_ORIENTATION_VERTICAL, for_size, minimum, natural, minimum_baseline, natural_baseline); int height = (for_size / 16.0f) * 9.0f; // 16:9 images *natural = *minimum = height; } else if (orientation == GTK_ORIENTATION_HORIZONTAL) { gtk_widget_measure (GTK_WIDGET (self->stack), GTK_ORIENTATION_HORIZONTAL, for_size, minimum, natural, minimum_baseline, natural_baseline); } } static GtkSizeRequestMode exm_screenshot_get_request_mode (GtkWidget *widget G_GNUC_UNUSED) { return GTK_SIZE_REQUEST_HEIGHT_FOR_WIDTH; } static void exm_screenshot_size_allocate (GtkWidget *widget, int width, int height, int baseline) { ExmScreenshot *self = EXM_SCREENSHOT (widget); gtk_widget_size_allocate (GTK_WIDGET (self->stack), &(const GtkAllocation){0, 0, width, height}, baseline); } static void exm_screenshot_class_init (ExmScreenshotClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->finalize = exm_screenshot_finalize; GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); gtk_widget_class_set_template_from_resource (widget_class, g_strdup_printf ("%s/exm-screenshot.ui", RESOURCE_PATH)); widget_class->get_request_mode = exm_screenshot_get_request_mode; widget_class->measure = exm_screenshot_measure; widget_class->size_allocate = exm_screenshot_size_allocate; g_type_ensure (EXM_TYPE_ZOOM_PICTURE); gtk_widget_class_bind_template_child (widget_class, ExmScreenshot, picture); gtk_widget_class_bind_template_child (widget_class, ExmScreenshot, stack); gtk_widget_class_set_accessible_role (widget_class, GTK_ACCESSIBLE_ROLE_IMG); } static void exm_screenshot_init (ExmScreenshot *self) { gtk_widget_init_template (GTK_WIDGET (self)); } extension-manager-0.6.3/src/exm-screenshot.h000066400000000000000000000007351477302130300210550ustar00rootroot00000000000000#pragma once #include G_BEGIN_DECLS #define EXM_TYPE_SCREENSHOT (exm_screenshot_get_type()) G_DECLARE_FINAL_TYPE (ExmScreenshot, exm_screenshot, EXM, SCREENSHOT, GtkWidget) ExmScreenshot *exm_screenshot_new (void); void exm_screenshot_set_paintable (ExmScreenshot *self, GdkPaintable *paintable); void exm_screenshot_reset (ExmScreenshot *self); void exm_screenshot_display (ExmScreenshot *self); G_END_DECLS extension-manager-0.6.3/src/exm-search-row.blp000066400000000000000000000024671477302130300213040ustar00rootroot00000000000000using Gtk 4.0; template $ExmSearchRow: Gtk.ListBoxRow { styles [ "search-row" ] activatable: true; action-name: "win.show-detail"; child: Gtk.Box { styles [ "header" ] spacing: 12; Gtk.Box { styles [ "title" ] hexpand: true; orientation: vertical; Gtk.Label title { styles [ "title" ] ellipsize: end; label: bind template.search-result as <$ExmSearchResult>.name; lines: 2; wrap: true; wrap-mode: word_char; xalign: 0; } Gtk.Label subtitle { styles [ "subtitle" ] ellipsize: end; label: bind template.search-result as <$ExmSearchResult>.creator; wrap: true; wrap-mode: word_char; xalign: 0; } Gtk.Label description_label { styles [ "dimmed" ] ellipsize: end; lines: 2; margin-top: 6; wrap: true; wrap-mode: word_char; xalign: 0; } } $ExmInstallButton install_btn { icon-only: bind template.compact; clicked => $install_remote(); } Gtk.Image { icon-name: "go-next-symbolic"; valign: center; } }; accessibility { described-by: description_label; } } extension-manager-0.6.3/src/exm-search-row.c000066400000000000000000000171421477302130300207450ustar00rootroot00000000000000/* exm-search-row.c * * Copyright 2022-2024 Matthew Jakeman * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General 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 "exm-search-row.h" #include "exm-config.h" #include "exm-enums.h" #include "exm-install-button.h" #include "exm-types.h" #include struct _ExmSearchRow { GtkListBoxRow parent_instance; ExmManager *manager; ExmSearchResult *search_result; gboolean compact; gchar *uuid; GtkLabel *description_label; ExmInstallButton *install_btn; guint signal_id; }; G_DEFINE_FINAL_TYPE (ExmSearchRow, exm_search_row, GTK_TYPE_LIST_BOX_ROW) enum { PROP_0, PROP_MANAGER, PROP_SEARCH_RESULT, PROP_COMPACT, N_PROPS }; static GParamSpec *properties [N_PROPS]; ExmSearchRow * exm_search_row_new (ExmManager *manager, ExmSearchResult *search_result) { return g_object_new (EXM_TYPE_SEARCH_ROW, "manager", manager, "search-result", search_result, NULL); } static void exm_search_row_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { ExmSearchRow *self = EXM_SEARCH_ROW (object); switch (prop_id) { case PROP_MANAGER: g_value_set_object (value, self->manager); break; case PROP_SEARCH_RESULT: g_value_set_object (value, self->search_result); break; case PROP_COMPACT: g_value_set_boolean (value, self->compact); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void exm_search_row_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { ExmSearchRow *self = EXM_SEARCH_ROW (object); switch (prop_id) { case PROP_MANAGER: self->manager = g_value_get_object (value); break; case PROP_SEARCH_RESULT: self->search_result = g_value_get_object (value); if (self->search_result) { // TODO: Bind here, rather than in constructed() g_object_get (self->search_result, "uuid", &self->uuid, NULL); } break; case PROP_COMPACT: self->compact = g_value_get_boolean (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void on_install_status (ExmManager *manager G_GNUC_UNUSED, ExmInstallButtonState state, ExmSearchRow *self) { g_object_set (self->install_btn, "state", state, NULL); if (self->signal_id > 0) g_signal_handler_disconnect (self->manager, self->signal_id); } static void install_remote (GtkButton *button, ExmSearchRow *self) { gboolean warn; ExmInstallButtonState state; g_object_get (self->install_btn, "state", &state, NULL); self->signal_id = g_signal_connect_object (self->manager, "install-status", G_CALLBACK (on_install_status), self, G_CONNECT_DEFAULT); warn = (state == EXM_INSTALL_BUTTON_STATE_UNSUPPORTED); g_object_set (self->install_btn, "state", EXM_INSTALL_BUTTON_STATE_INSTALLING, NULL); gtk_widget_grab_focus (GTK_WIDGET (self)); gtk_widget_activate_action (GTK_WIDGET (button), "ext.install", "(sb)", self->uuid, warn); } static void exm_search_row_constructed (GObject *object) { ExmSearchRow *self = EXM_SEARCH_ROW (object); ExmInstallButtonState install_state; gboolean is_installed; gboolean is_supported; gchar *uuid, *description; g_object_get (self->search_result, "uuid", &uuid, "description", &description, NULL); gchar *shell_version; g_object_get (self->manager, "shell-version", &shell_version, NULL); gtk_actionable_set_action_target (GTK_ACTIONABLE (self), "s", uuid); is_installed = exm_manager_is_installed_uuid (self->manager, uuid); is_supported = exm_search_result_supports_shell_version (self->search_result, shell_version); install_state = is_installed ? EXM_INSTALL_BUTTON_STATE_INSTALLED : (is_supported ? EXM_INSTALL_BUTTON_STATE_DEFAULT : EXM_INSTALL_BUTTON_STATE_UNSUPPORTED); g_object_set (self->install_btn, "state", install_state, NULL); const gchar *newline_pos = g_strstr_len (description, -1, "\n"); if (newline_pos != NULL) { gchar *truncated_text = g_strndup (description, newline_pos - description); gtk_label_set_label (self->description_label, truncated_text); g_free (truncated_text); } else { gtk_label_set_label (self->description_label, description); } G_OBJECT_CLASS (exm_search_row_parent_class)->constructed (object); } static void exm_search_row_class_init (ExmSearchRowClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->get_property = exm_search_row_get_property; object_class->set_property = exm_search_row_set_property; object_class->constructed = exm_search_row_constructed; properties [PROP_MANAGER] = g_param_spec_object ("manager", "Manager", "Manager", EXM_TYPE_MANAGER, G_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY); properties [PROP_SEARCH_RESULT] = g_param_spec_object ("search-result", "Search Result", "Search Result", EXM_TYPE_SEARCH_RESULT, G_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY); properties [PROP_COMPACT] = g_param_spec_boolean ("compact", "Compact", "Compact", FALSE, G_PARAM_READWRITE); g_object_class_install_properties (object_class, N_PROPS, properties); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); gtk_widget_class_set_template_from_resource (widget_class, g_strdup_printf ("%s/exm-search-row.ui", RESOURCE_PATH)); gtk_widget_class_bind_template_child (widget_class, ExmSearchRow, description_label); gtk_widget_class_bind_template_child (widget_class, ExmSearchRow, install_btn); gtk_widget_class_bind_template_callback (widget_class, install_remote); } static void exm_search_row_init (ExmSearchRow *self) { gtk_widget_init_template (GTK_WIDGET (self)); } extension-manager-0.6.3/src/exm-search-row.h000066400000000000000000000022601477302130300207450ustar00rootroot00000000000000/* * exm-search-row.h * * Copyright 2022-2025 Matthew Jakeman * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General 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 "local/exm-manager.h" #include "web/model/exm-search-result.h" G_BEGIN_DECLS #define EXM_TYPE_SEARCH_ROW (exm_search_row_get_type()) G_DECLARE_FINAL_TYPE (ExmSearchRow, exm_search_row, EXM, SEARCH_ROW, GtkListBoxRow) ExmSearchRow *exm_search_row_new (ExmManager *manager, ExmSearchResult *search_result); G_END_DECLS extension-manager-0.6.3/src/exm-types.h000066400000000000000000000031141477302130300200360ustar00rootroot00000000000000/* * exm-types.h * * Copyright 2022-2025 Matthew Jakeman * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General 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 // Should really be in the `local/` subdirectory but meson's mkenums // has trouble with relative paths... typedef enum { EXM_EXTENSION_TYPE_SYSTEM = 1, EXM_EXTENSION_TYPE_PER_USER = 2, } ExmExtensionType; typedef enum { EXM_EXTENSION_STATE_ACTIVE = 1, EXM_EXTENSION_STATE_INACTIVE = 2, EXM_EXTENSION_STATE_ERROR = 3, EXM_EXTENSION_STATE_OUT_OF_DATE = 4, EXM_EXTENSION_STATE_DOWNLOADING = 5, EXM_EXTENSION_STATE_INITIALIZED = 6, EXM_EXTENSION_STATE_DEACTIVATING = 7, EXM_EXTENSION_STATE_ACTIVATING = 8, EXM_EXTENSION_STATE_UNINSTALLED = 99, } ExmExtensionState; typedef enum { EXM_INSTALL_BUTTON_STATE_DEFAULT, EXM_INSTALL_BUTTON_STATE_INSTALLING, EXM_INSTALL_BUTTON_STATE_INSTALLED, EXM_INSTALL_BUTTON_STATE_UNSUPPORTED } ExmInstallButtonState; extension-manager-0.6.3/src/exm-upgrade-assistant.blp000066400000000000000000000122671477302130300226670ustar00rootroot00000000000000using Gtk 4.0; using Adw 1; Adw.SpinnerPaintable spinner { widget: counter; } template $ExmUpgradeAssistant: Adw.Dialog { content-width: 400; content-height: 600; title: _("Upgrade Assistant"); notify::manager => $on_bind_manager(); child: Adw.ToastOverlay toast_overlay { child: Adw.NavigationView navigation_view { Adw.NavigationPage { title: bind template.title; child: Adw.ToolbarView { [top] Adw.HeaderBar {} content: Adw.Clamp { child: Gtk.Box { styles [ "detail", ] orientation: vertical; spacing: 18; vexpand: true; Gtk.Image { icon-name: "software-update-available-symbolic"; icon-size: large; focusable: true; accessibility { labelled-by: description; } } Gtk.Box { orientation: vertical; spacing: 24; vexpand: true; Gtk.Label description { justify: center; wrap: true; } Adw.PreferencesGroup { Adw.ComboRow drop_down { title: "GNOME"; } } } Gtk.Button run_button { styles [ "pill", "suggested-action", ] label: _("_Check Compatibility"); halign: center; valign: end; use-underline: true; clicked => $do_compatibility_check() swapped; } }; }; }; } Adw.NavigationPage { title: bind template.title; tag: "results"; hidden => $on_hidden_results(); child: Adw.ToolbarView { [top] Adw.HeaderBar {} content: Gtk.Stack stack { Gtk.StackPage waiting { name: "waiting"; child: Adw.StatusPage counter { paintable: spinner; }; } Gtk.StackPage error { name: "error"; child: Adw.StatusPage error_status { icon-name: "offline-symbolic"; title: _("Connection Error"); }; } Gtk.StackPage results { name: "results"; child: Adw.PreferencesPage prefs_page { Adw.PreferencesGroup { Gtk.Box { orientation: vertical; spacing: 24; Gtk.Label summary { justify: center; wrap: true; } Gtk.ProgressBar progress_bar { show-text: true; margin-start: 24; margin-end: 24; focusable: true; accessibility { labelled-by: summary; described-by: progress_bar; } } } } Adw.PreferencesGroup user_list_title { title: _("User-Installed Extensions"); Gtk.ListBox user_list_box { styles [ "boxed-list", "boxed-list-placeholder", ] selection-mode: none; [placeholder] Adw.ActionRow { [prefix] Gtk.Image { icon-name: "puzzle-piece-symbolic"; } title: _("No User Extensions Installed"); } accessibility { labelled-by: user_list_title; } } } Adw.PreferencesGroup system_list_title { title: _("System Extensions"); Gtk.ListBox system_list_box { styles [ "boxed-list", "boxed-list-placeholder", ] selection-mode: none; [placeholder] Adw.ActionRow { [prefix] Gtk.Image { icon-name: "settings-symbolic"; } title: _("No System Extensions Installed"); } accessibility { labelled-by: system_list_title; } } } Adw.PreferencesGroup { Adw.ButtonRow copy_details { start-icon-name: "edit-copy-symbolic"; title: _("_Copy to Clipboard"); use-underline: true; activated => $copy_to_clipboard() swapped; } } }; } }; }; } }; }; } extension-manager-0.6.3/src/exm-upgrade-assistant.c000066400000000000000000000532541477302130300223350ustar00rootroot00000000000000/* * exm-upgrade-assistant.c * * Copyright 2022-2025 Matthew Jakeman * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General 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 "exm-upgrade-assistant.h" #include "web/exm-data-provider.h" #include "exm-upgrade-result.h" #include "exm-config.h" #include struct _ExmUpgradeAssistant { AdwDialog parent_instance; // Auxiliary Classes ExmManager *manager; ExmDataProvider *data_provider; GCancellable *cancellable; // Version Data gchar *target_shell_version; // Results Data gchar *current_shell_version; int total_extensions; int number_checked; int number_supported; gboolean waiting_on_tasks; GListStore *user_results_store; GListStore *system_results_store; // Template Widgets AdwToastOverlay *toast_overlay; AdwNavigationView *navigation_view; GtkStack *stack; // Version Select Page GtkLabel *description; AdwComboRow *drop_down; GtkButton *run_button; // Waiting Page AdwStatusPage *counter; // Error Page AdwStatusPage *error_status; // Results Page AdwPreferencesPage *prefs_page; GtkLabel *summary; GtkProgressBar *progress_bar; GtkListBox *user_list_box; GtkListBox *system_list_box; AdwButtonRow *copy_details; }; G_DEFINE_FINAL_TYPE (ExmUpgradeAssistant, exm_upgrade_assistant, ADW_TYPE_DIALOG) enum { PROP_0, PROP_MANAGER, N_PROPS }; static GParamSpec *properties [N_PROPS]; ExmUpgradeAssistant * exm_upgrade_assistant_new (ExmManager *manager) { return g_object_new (EXM_TYPE_UPGRADE_ASSISTANT, "manager", manager, NULL); } static void exm_upgrade_assistant_dispose (GObject *object) { ExmUpgradeAssistant *self = (ExmUpgradeAssistant *)object; g_cancellable_cancel (self->cancellable); g_clear_object (&self->cancellable); G_OBJECT_CLASS (exm_upgrade_assistant_parent_class)->dispose (object); } static void exm_upgrade_assistant_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { ExmUpgradeAssistant *self = EXM_UPGRADE_ASSISTANT (object); switch (prop_id) { case PROP_MANAGER: g_value_set_object (value, self->manager); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void exm_upgrade_assistant_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { ExmUpgradeAssistant *self = EXM_UPGRADE_ASSISTANT (object); switch (prop_id) { case PROP_MANAGER: self->manager = g_value_get_object (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } typedef struct { ExmExtension *local_data; ExmUpgradeAssistant *assistant; gboolean is_user; } ExtensionCheckData; typedef enum { STATUS_SUPPORTED, STATUS_UNSUPPORTED, STATUS_UNKNOWN, } SupportStatus; static ExtensionCheckData * create_check_data (ExmExtension *local_data, ExmUpgradeAssistant *assistant, gboolean is_user) { ExtensionCheckData* data; data = g_slice_new0 (ExtensionCheckData); data->local_data = g_object_ref (local_data); data->assistant = g_object_ref (assistant); data->is_user = is_user; return data; } static void free_check_data (ExtensionCheckData *data) { if (data) { g_clear_object (&data->local_data); g_clear_object (&data->assistant); g_slice_free (ExtensionCheckData, data); } } static void update_checked_count (ExmUpgradeAssistant *self) { char *text; text = g_strdup_printf (_("Checked %d/%d Extensions"), self->number_checked, self->total_extensions); adw_status_page_set_title (self->counter, text); g_free (text); } static void display_results (ExmUpgradeAssistant *self) { char *text; float fraction; // Set progress bar value fraction = (float)self->number_supported / (float)self->total_extensions; gtk_progress_bar_set_fraction (self->progress_bar, fraction); // Set percentage text text = g_strdup_printf (_("%d%% Compatible"), (int)(fraction * 100)); gtk_progress_bar_set_text (self->progress_bar, text); free (text); // Colour according to percentage gtk_widget_remove_css_class (GTK_WIDGET (self->progress_bar), "success"); gtk_widget_remove_css_class (GTK_WIDGET (self->progress_bar), "warning"); gtk_widget_remove_css_class (GTK_WIDGET (self->progress_bar), "error"); if (fraction == 1.0f) gtk_widget_add_css_class (GTK_WIDGET (self->progress_bar), "success"); else if (fraction <= 1.0f && fraction > 0.3f) gtk_widget_add_css_class (GTK_WIDGET (self->progress_bar), "warning"); else if (fraction <= 0.3f) gtk_widget_add_css_class (GTK_WIDGET (self->progress_bar), "error"); text = _("GNOME %s supports %d out of %d of the extensions currently installed on the system"); text = g_strdup_printf (text, self->target_shell_version, self->number_supported, self->total_extensions); gtk_label_set_markup (self->summary, text); g_free (text); adw_preferences_page_scroll_to_top (self->prefs_page); gtk_stack_set_visible_child_name (self->stack, "results"); } static SupportStatus get_support_status (ExmUpgradeResult *result, const char *target_version) { SupportStatus supported; ExmSearchResult *web_data; web_data = exm_upgrade_result_get_web_data (result); if (web_data && exm_search_result_supports_shell_version (web_data, target_version)) supported = STATUS_SUPPORTED; else if (web_data) supported = STATUS_UNSUPPORTED; else supported = STATUS_UNKNOWN; return supported; } static void print_list_model (GListModel *model, GString *string_builder, gchar *target_shell_version) { int num_extensions; gchar *text; int i; num_extensions = g_list_model_get_n_items (model); for (i = 0; i < num_extensions; i++) { ExmUpgradeResult *result; const gchar *name, *creator, *uuid, *supported_text; SupportStatus supported; result = g_list_model_get_item (model, i); name = exm_upgrade_result_get_name (result); creator = exm_upgrade_result_get_creator (result); uuid = exm_upgrade_result_get_uuid (result); supported = get_support_status (result, target_shell_version); text = g_strdup_printf ("'%s' by %s\n", name, creator); g_string_append (string_builder, text); g_free (text); text = g_strdup_printf ("Extension ID: %s\n", uuid); g_string_append (string_builder, text); g_free (text); if (supported == STATUS_SUPPORTED) supported_text = "Yes"; else if (supported == STATUS_UNSUPPORTED) supported_text = "No"; else supported_text = "Unknown"; text = g_strdup_printf ("Supported: %s\n\n", supported_text); g_string_append (string_builder, text); g_free (text); } } static void copy_to_clipboard (ExmUpgradeAssistant *self) { GString *string_builder; gchar *text; float fraction; GdkDisplay *display; GdkClipboard *clipboard; fraction = (float)self->number_supported / (float)self->total_extensions; string_builder = g_string_new ("Extension Manager - Upgrade Assistant Report\n\n"); text = g_strdup_printf ("Currently on: GNOME %s\n", self->current_shell_version); g_string_append (string_builder, text); g_free (text); text = g_strdup_printf ("Upgrading to: GNOME %s\n\n", self->target_shell_version); g_string_append (string_builder, text); g_free (text); text = g_strdup_printf ("On upgrading to GNOME %s, %d out of %d currently\ninstalled extensions will be compatible (%d%%).\n\n", self->target_shell_version, self->number_supported, self->total_extensions, (int)(fraction * 100)); g_string_append (string_builder, text); g_free (text); text = g_strdup_printf ("User-Installed Extensions:\n\n"); g_string_append (string_builder, text); g_free (text); print_list_model (G_LIST_MODEL (self->user_results_store), string_builder, self->target_shell_version); text = g_strdup_printf ("\nSystem Extensions:\n\n"); g_string_append (string_builder, text); g_free (text); print_list_model (G_LIST_MODEL (self->system_results_store), string_builder, self->target_shell_version); // Add to clipboard display = gdk_display_get_default (); clipboard = gdk_display_get_clipboard (display); text = g_string_free (string_builder, FALSE); gdk_clipboard_set_text (clipboard, text); g_free (text); // Success indicator adw_toast_overlay_add_toast (self->toast_overlay, adw_toast_new (_("Copied"))); } static void display_extension_result (ExmUpgradeAssistant *self, ExmUpgradeResult *result, gboolean is_user) { if (get_support_status (result, self->target_shell_version) == STATUS_SUPPORTED) self->number_supported++; g_list_store_append (is_user ? self->user_results_store : self->system_results_store, result); if (self->waiting_on_tasks && self->number_checked == self->total_extensions) display_results (self); } static void on_extension_processed (GObject *source, GAsyncResult *async_result, gpointer user_data) { ExmSearchResult *web_info; GError *error = NULL; ExtensionCheckData *data; ExmUpgradeAssistant *self; ExmUpgradeResult *result; g_return_if_fail (user_data != NULL); web_info = exm_data_provider_get_finish (EXM_DATA_PROVIDER (source), async_result, &error); data = (ExtensionCheckData *) user_data; self = EXM_UPGRADE_ASSISTANT (data->assistant); if (error && (error->domain != g_quark_try_string ("request-error-quark") || error->code != 404)) { adw_status_page_set_description (self->error_status, error->message); gtk_stack_set_visible_child_name (self->stack, "error"); g_clear_error (&error); free_check_data (data); return; } self->number_checked++; update_checked_count (self); result = exm_upgrade_result_new (); exm_upgrade_result_set_local_data (result, data->local_data); if (EXM_IS_SEARCH_RESULT (web_info)) exm_upgrade_result_set_web_data (result, web_info); display_extension_result (self, result, data->is_user); free_check_data (data); } static void do_compatibility_check (ExmUpgradeAssistant *self) { GListModel *ext_model; int num_items; int i; gint selected; GListModel *model; const char *target_version; selected = adw_combo_row_get_selected (self->drop_down); model = adw_combo_row_get_model (self->drop_down); target_version = gtk_string_list_get_string (GTK_STRING_LIST (model), selected); if (!target_version) return; if (self->target_shell_version) g_free (self->target_shell_version); self->target_shell_version = g_strdup_printf ("%s", target_version); if (!self->manager) return; g_object_get (self->manager, "extensions", &ext_model, NULL); // Display spinner gtk_stack_set_visible_child_name (self->stack, "waiting"); adw_navigation_view_push_by_tag (self->navigation_view, "results"); // Reset variables self->total_extensions = 0; self->number_checked = 0; self->number_supported = 0; self->waiting_on_tasks = FALSE; update_checked_count (self); // Empty results list stores before processing items g_list_store_remove_all (self->user_results_store); g_list_store_remove_all (self->system_results_store); num_items = g_list_model_get_n_items (ext_model); for (i = 0; i < num_items; i++) { char *uuid; gboolean is_user; ExmExtension *extension; ExtensionCheckData *data; extension = EXM_EXTENSION (g_list_model_get_item (ext_model, i)); g_object_get (extension, "uuid", &uuid, "is-user", &is_user, NULL); g_debug ("Processing: %s\n", uuid); data = create_check_data (extension, self, is_user); self->total_extensions++; exm_data_provider_get_async (self->data_provider, uuid, self->cancellable, on_extension_processed, data); } // Set this flag after all tasks have been dispatched // so we do not accidentally finish too early. self->waiting_on_tasks = TRUE; } static GtkWidget * widget_factory (ExmUpgradeResult *result, ExmUpgradeAssistant *self) { SupportStatus supported; const gchar *name, *creator; GtkWidget *row, *status; g_return_val_if_fail (EXM_IS_UPGRADE_RESULT (result), NULL); name = exm_upgrade_result_get_name (result); creator = exm_upgrade_result_get_creator (result); supported = get_support_status (result, self->target_shell_version); row = adw_action_row_new (); adw_preferences_row_set_title (ADW_PREFERENCES_ROW (row) , name); adw_action_row_set_subtitle (ADW_ACTION_ROW (row), creator); if (supported == STATUS_SUPPORTED) { status = gtk_image_new_from_icon_name ("supported-symbolic"); gtk_widget_add_css_class (status, "success"); // Translators: Icon's tooltip when an extension is compatible gtk_widget_set_tooltip_text (GTK_WIDGET (status), _("A compatible version of the extension exists")); } else if (supported == STATUS_UNSUPPORTED) { status = gtk_image_new_from_icon_name ("unsupported-symbolic"); gtk_widget_add_css_class (status, "error"); // Translators: Icon's tooltip when an extension is not compatible gtk_widget_set_tooltip_text (GTK_WIDGET (status), _("No compatible version of the extension exists")); } else { status = gtk_image_new_from_icon_name ("unknown-symbolic"); gtk_widget_add_css_class (status, "warning"); // Translators: Icon's tooltip when an extension compatibility is unknown gtk_widget_set_tooltip_text (GTK_WIDGET (status), _("This extension is not hosted on extensions.gnome.org. Its compatibility cannot be determined.")); } gtk_image_set_pixel_size (GTK_IMAGE (status), 24); gtk_widget_set_focusable (status, TRUE); adw_action_row_add_suffix (ADW_ACTION_ROW (row), status); return row; } static void bind_list_box (ExmUpgradeAssistant *self, GtkListBox *list_box, GListModel *model) { GtkExpression *expression; GtkStringSorter *alphabetical_sorter; GtkSortListModel *sorted_model; g_return_if_fail (GTK_IS_LIST_BOX (list_box)); g_return_if_fail (G_IS_LIST_MODEL (model)); // Sort alphabetically expression = gtk_property_expression_new (EXM_TYPE_UPGRADE_RESULT, NULL, "name"); alphabetical_sorter = gtk_string_sorter_new (expression); sorted_model = gtk_sort_list_model_new (model, GTK_SORTER (alphabetical_sorter)); gtk_list_box_bind_model (list_box, G_LIST_MODEL (sorted_model), (GtkListBoxCreateWidgetFunc) widget_factory, self, NULL); } static void populate_drop_down (ExmUpgradeAssistant *self) { GDateTime *date_time; GtkStringList *string_list; int year, month; int current_gnome_version; int index; date_time = g_date_time_new_now_utc (); year = g_date_time_get_year (date_time); month = g_date_time_get_month (date_time); // Two GNOME versions are released per year, once in march // and once in september. Guess/approximate the newest release // of GNOME and make that the default. // GNOME 40 came out in March 2021 current_gnome_version = 40 + (year - 2021) * 2; // If we are between march and september, then it is // an even numbered release, otherwise use an odd numbered // release. if (month < G_DATE_MARCH) current_gnome_version -= 1; else if (month >= G_DATE_SEPTEMBER) current_gnome_version += 1; g_info ("Current GNOME Version: %d\n", current_gnome_version); // Make sure we at least have GNOME 40-43 regardless // of the date calculation. Update this periodically current_gnome_version = MAX(43, current_gnome_version); // Populate dropdown and version map string_list = gtk_string_list_new (NULL); for (index = 40; index <= current_gnome_version; index++) { gchar *key = g_strdup_printf ("%d", index); gtk_string_list_append (string_list, key); g_free (key); } adw_combo_row_set_model (self->drop_down, G_LIST_MODEL (string_list)); adw_combo_row_set_selected (self->drop_down, g_list_model_get_n_items (G_LIST_MODEL (string_list)) - 1); } static void on_bind_manager (ExmUpgradeAssistant *self) { gchar *description_text; g_object_get (self->manager, "shell-version", &self->current_shell_version, NULL); description_text = _("You are currently running GNOME %s. Select a version of GNOME below and check whether your extensions will continue to be available."); description_text = g_strdup_printf (description_text, self->current_shell_version); gtk_label_set_markup (self->description, description_text); g_free (description_text); } static void on_hidden_results (AdwNavigationPage *page G_GNUC_UNUSED, ExmUpgradeAssistant *self) { g_cancellable_cancel (self->cancellable); g_clear_object (&self->cancellable); self->cancellable = g_cancellable_new (); } static void exm_upgrade_assistant_class_init (ExmUpgradeAssistantClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->dispose = exm_upgrade_assistant_dispose; object_class->get_property = exm_upgrade_assistant_get_property; object_class->set_property = exm_upgrade_assistant_set_property; properties [PROP_MANAGER] = g_param_spec_object ("manager", "Manager", "Manager", EXM_TYPE_MANAGER, G_PARAM_READWRITE); g_object_class_install_properties (object_class, N_PROPS, properties); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); gtk_widget_class_set_template_from_resource (widget_class, g_strdup_printf ("%s/exm-upgrade-assistant.ui", RESOURCE_PATH)); gtk_widget_class_bind_template_child (widget_class, ExmUpgradeAssistant, toast_overlay); gtk_widget_class_bind_template_child (widget_class, ExmUpgradeAssistant, navigation_view); gtk_widget_class_bind_template_child (widget_class, ExmUpgradeAssistant, stack); gtk_widget_class_bind_template_child (widget_class, ExmUpgradeAssistant, description); gtk_widget_class_bind_template_child (widget_class, ExmUpgradeAssistant, drop_down); gtk_widget_class_bind_template_child (widget_class, ExmUpgradeAssistant, run_button); gtk_widget_class_bind_template_child (widget_class, ExmUpgradeAssistant, counter); gtk_widget_class_bind_template_child (widget_class, ExmUpgradeAssistant, error_status); gtk_widget_class_bind_template_child (widget_class, ExmUpgradeAssistant, prefs_page); gtk_widget_class_bind_template_child (widget_class, ExmUpgradeAssistant, summary); gtk_widget_class_bind_template_child (widget_class, ExmUpgradeAssistant, progress_bar); gtk_widget_class_bind_template_child (widget_class, ExmUpgradeAssistant, user_list_box); gtk_widget_class_bind_template_child (widget_class, ExmUpgradeAssistant, system_list_box); gtk_widget_class_bind_template_child (widget_class, ExmUpgradeAssistant, copy_details); gtk_widget_class_bind_template_callback (widget_class, on_bind_manager); gtk_widget_class_bind_template_callback (widget_class, do_compatibility_check); gtk_widget_class_bind_template_callback (widget_class, on_hidden_results); gtk_widget_class_bind_template_callback (widget_class, copy_to_clipboard); } static void exm_upgrade_assistant_init (ExmUpgradeAssistant *self) { gtk_widget_init_template (GTK_WIDGET (self)); self->data_provider = exm_data_provider_new (); self->target_shell_version = NULL; self->cancellable = g_cancellable_new (); self->user_results_store = g_list_store_new (EXM_TYPE_UPGRADE_RESULT); self->system_results_store = g_list_store_new (EXM_TYPE_UPGRADE_RESULT); bind_list_box (self, self->user_list_box, G_LIST_MODEL (self->user_results_store)); bind_list_box (self, self->system_list_box, G_LIST_MODEL (self->system_results_store)); populate_drop_down (self); } extension-manager-0.6.3/src/exm-upgrade-assistant.h000066400000000000000000000021741477302130300223350ustar00rootroot00000000000000/* * exm-upgrade-assistant.h * * Copyright 2022 Matthew Jakeman * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General 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 "local/exm-manager.h" G_BEGIN_DECLS #define EXM_TYPE_UPGRADE_ASSISTANT (exm_upgrade_assistant_get_type()) G_DECLARE_FINAL_TYPE (ExmUpgradeAssistant, exm_upgrade_assistant, EXM, UPGRADE_ASSISTANT, AdwDialog) ExmUpgradeAssistant *exm_upgrade_assistant_new (ExmManager *manager); G_END_DECLS extension-manager-0.6.3/src/exm-upgrade-result.c000066400000000000000000000100721477302130300216310ustar00rootroot00000000000000/* * exm-upgrade-result.c * * Copyright 2022-2025 Matthew Jakeman * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General 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 "exm-upgrade-result.h" struct _ExmUpgradeResult { GObject parent_instance; ExmSearchResult *web_data; ExmExtension *local_data; }; G_DEFINE_FINAL_TYPE (ExmUpgradeResult, exm_upgrade_result, G_TYPE_OBJECT) enum { PROP_0, PROP_NAME, N_PROPS }; static GParamSpec *properties [N_PROPS]; ExmUpgradeResult * exm_upgrade_result_new (void) { return g_object_new (EXM_TYPE_UPGRADE_RESULT, NULL); } static void exm_upgrade_result_finalize (GObject *object) { ExmUpgradeResult *self = (ExmUpgradeResult *)object; if (self->web_data) g_object_unref (self->web_data); if (self->local_data) g_object_unref (self->local_data); G_OBJECT_CLASS (exm_upgrade_result_parent_class)->finalize (object); } static void exm_upgrade_result_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { ExmUpgradeResult *self = EXM_UPGRADE_RESULT (object); switch (prop_id) { case PROP_NAME: g_value_set_string (value, exm_upgrade_result_get_name (self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } ExmExtension * exm_upgrade_result_get_local_data (ExmUpgradeResult *self) { return self->local_data; } void exm_upgrade_result_set_local_data (ExmUpgradeResult *self, ExmExtension *extension) { self->local_data = g_object_ref (extension); } ExmSearchResult * exm_upgrade_result_get_web_data (ExmUpgradeResult *self) { return self->web_data; } void exm_upgrade_result_set_web_data (ExmUpgradeResult *self, ExmSearchResult *extension) { self->web_data = g_object_ref (extension); } const char * exm_upgrade_result_get_name (ExmUpgradeResult *self) { const char *name; if (self->web_data) { g_object_get (self->web_data, "name", &name, NULL); return name; } if (self->local_data) { g_object_get (self->local_data, "name", &name, NULL); return name; } return NULL; } const char * exm_upgrade_result_get_creator (ExmUpgradeResult *self) { const char *creator; if (self->web_data) { g_object_get (self->web_data, "creator", &creator, NULL); return creator; } return NULL; } const char * exm_upgrade_result_get_uuid (ExmUpgradeResult *self) { const char *uuid; if (self->web_data) { g_object_get (self->web_data, "uuid", &uuid, NULL); return uuid; } if (self->local_data) { g_object_get (self->local_data, "uuid", &uuid, NULL); return uuid; } return NULL; } static void exm_upgrade_result_class_init (ExmUpgradeResultClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->finalize = exm_upgrade_result_finalize; object_class->get_property = exm_upgrade_result_get_property; properties [PROP_NAME] = g_param_spec_string ("name", "Name", "Name", NULL, G_PARAM_READABLE); g_object_class_install_properties (object_class, N_PROPS, properties); } static void exm_upgrade_result_init (ExmUpgradeResult *self) { self->local_data = NULL; self->web_data = NULL; } extension-manager-0.6.3/src/exm-upgrade-result.h000066400000000000000000000033321477302130300216370ustar00rootroot00000000000000/* exm-upgrade-result.h * * Copyright 2022 Matthew Jakeman * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General 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 "web/model/exm-search-result.h" #include "local/exm-extension.h" G_BEGIN_DECLS #define EXM_TYPE_UPGRADE_RESULT (exm_upgrade_result_get_type()) G_DECLARE_FINAL_TYPE (ExmUpgradeResult, exm_upgrade_result, EXM, UPGRADE_RESULT, GObject) ExmUpgradeResult *exm_upgrade_result_new (void); ExmExtension * exm_upgrade_result_get_local_data (ExmUpgradeResult *self); void exm_upgrade_result_set_local_data (ExmUpgradeResult *self, ExmExtension *extension); ExmSearchResult * exm_upgrade_result_get_web_data (ExmUpgradeResult *self); void exm_upgrade_result_set_web_data (ExmUpgradeResult *self, ExmSearchResult *extension); const char * exm_upgrade_result_get_name (ExmUpgradeResult *self); const char * exm_upgrade_result_get_creator (ExmUpgradeResult *self); const char * exm_upgrade_result_get_uuid (ExmUpgradeResult *self); G_END_DECLS extension-manager-0.6.3/src/exm-utils.c000066400000000000000000000074321477302130300200340ustar00rootroot00000000000000/* exm-utils.c * * Copyright 2022-2024 Matthew Jakeman * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General 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 "exm-utils.h" #include #include char * exm_utils_read_resource (const char *resource, gsize *length) { GError *error = NULL; GFile *file; char *path; char *contents; g_return_val_if_fail (length != NULL, NULL); g_return_val_if_fail (resource != NULL, NULL); path = g_strdup_printf ("resource://%s", resource); file = g_file_new_for_uri (path); g_free (path); if (!file) { g_critical ("Could not read %s: invalid file\n", resource); return NULL; } if (g_file_load_contents (file, NULL, &contents, length, NULL, &error)) { g_clear_object (&file); return contents; } else { g_critical ("Could not read %s: %s\n", resource, error->message); } g_clear_object (&file); return NULL; } static GString * build_text_recursive (xmlNode *node, GString *string) { xmlNode *cur_node = NULL; for (cur_node = node; cur_node != NULL; cur_node = cur_node->next) { // ENTER NODE if (cur_node->type == XML_ELEMENT_NODE) { if (g_str_equal (cur_node->name, "b")) g_string_append (string, ""); else if (g_str_equal (cur_node->name, "i")) g_string_append (string, ""); else if (g_str_equal (cur_node->name, "u")) g_string_append (string, ""); else if (g_str_equal (cur_node->name, "br")) g_string_append (string, "\n"); else if (g_str_equal (cur_node->name, "p")) g_string_append (string, ""); else g_info ("Ignored element: %s\n", cur_node->name); } else if (cur_node->type == XML_TEXT_NODE) { gchar *escaped_text = g_markup_escape_text ((const gchar *)cur_node->content, -1); g_string_append (string, escaped_text); g_free (escaped_text); } // PROCESS CHILDREN build_text_recursive (cur_node->children, string); // EXIT NODE if (cur_node->type == XML_ELEMENT_NODE) { if (g_str_equal (cur_node->name, "b")) g_string_append (string, ""); else if (g_str_equal (cur_node->name, "i")) g_string_append (string, ""); else if (g_str_equal (cur_node->name, "u")) g_string_append (string, ""); } } return string; } gchar * exm_utils_convert_html (const gchar *html) { htmlDocPtr doc; xmlNode *root; GString *string = g_string_new (""); doc = htmlParseDoc ((const xmlChar *)html, "UTF-8"); if (doc == NULL) { g_critical ("Failed to parse HTML document."); return NULL; } root = xmlDocGetRootElement (doc); if (root == NULL) { g_warning ("Empty HTML document."); xmlFreeDoc (doc); xmlCleanupParser (); return NULL; } build_text_recursive (root, string); xmlFreeDoc (doc); xmlCleanupParser (); return g_string_free (string, FALSE); } extension-manager-0.6.3/src/exm-utils.h000066400000000000000000000016611477302130300200370ustar00rootroot00000000000000/* exm-utils.h * * Copyright 2022-2024 Matthew Jakeman * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General 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 char * exm_utils_read_resource (const char *resource, gsize *length); gchar * exm_utils_convert_html (const gchar *html); extension-manager-0.6.3/src/exm-window.blp000066400000000000000000000074541477302130300205420ustar00rootroot00000000000000using Gtk 4.0; using Adw 1; template $ExmWindow: Adw.ApplicationWindow { width-request: 360; height-request: 294; title: _("Extension Manager"); Adw.Breakpoint { condition ("max-width: 400sp") setters { header_bar.title-widget: null; switcher_bar.reveal: true; } } Adw.ToastOverlay toast_overlay { child: Adw.NavigationView navigation_view { Adw.NavigationPage main_view { can-pop: false; title: bind template.title; tag: "main"; child: Adw.ToolbarView { [top] Adw.HeaderBar header_bar { show-back-button: false; title-widget: Adw.ViewSwitcher title { policy: wide; stack: view_stack; }; [start] Gtk.ToggleButton search_button { icon-name: "edit-find-symbolic"; // Translators: Tooltip of the search icon in the header bar tooltip-text: _("Search Installed Extensions"); receives-default: true; } [end] Gtk.MenuButton { icon-name: "open-menu-symbolic"; menu-model: primary_menu; primary: true; tooltip-text: _("Main Menu"); } } [top] Gtk.SearchBar search_bar { key-capture-widget: template; search-mode-enabled: bind search_button.active bidirectional; notify::search-mode-enabled => $on_search_mode_enabled(); child: Gtk.SearchEntry { placeholder-text: _("Search for installed extensions"); max-width-chars: 35; search-changed => $on_search_changed(); }; } content: Adw.ViewStack view_stack { enable-transitions: true; notify::visible-child => $on_visible_page_changed(); Adw.ViewStackPage installed_stack { name: "installed"; title: C_("Navigation", "_Installed"); icon-name: "puzzle-piece-symbolic"; use-underline: true; child: $ExmInstalledPage installed_page {}; } Adw.ViewStackPage { name: "browse"; title: C_("Navigation", "_Browse"); icon-name: "globe-symbolic"; use-underline: true; child: $ExmBrowsePage browse_page {}; } }; [bottom] Adw.ViewSwitcherBar switcher_bar { stack: view_stack; } }; } $ExmDetailView detail_view {} $ExmScreenshotView screenshot_view { title: bind detail_view.title; } }; } } menu primary_menu { section { // Translators: the character preceded by "_" should not be the same // as others in the same menu item (_("Sort _Enabled First"), "app.sort-enabled-first") item (_("_Show Unsupported"), "app.show-unsupported") } section { item (_("_Upgrade Assistant"), "win.show-upgrade-assistant") item (_("_Keyboard Shortcuts"), "win.show-help-overlay") item (_("_About Extension Manager"), "app.about") } } Adw.AlertDialog remove_dialog { heading: _("Uninstall Extension?"); body: _("The extension's features and functionality will no longer be accessible. Are you sure you want to uninstall?"); default-response: "no"; close-response: "no"; responses [ no: _("_No"), yes: _("_Yes") destructive, ] } Adw.AlertDialog unsupported_dialog { heading: _("Unsupported Extension"); body: _("This extension does not support your GNOME Shell version. It may cause errors if installed."); default-response: "back"; close-response: "back"; prefer-wide-layout: true; responses [ install: _("_Install Anyway") destructive, back: _("_Go Back") suggested, ] } extension-manager-0.6.3/src/exm-window.c000066400000000000000000000456321477302130300202070ustar00rootroot00000000000000/* * exm-window.c * * Copyright 2022-2025 Matthew Jakeman * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General 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 "exm-window.h" #include "exm-browse-page.h" #include "exm-config.h" #include "exm-detail-view.h" #include "exm-error-dialog.h" #include "exm-installed-page.h" #include "exm-screenshot-view.h" #include "exm-types.h" #include "exm-upgrade-assistant.h" #include "local/exm-extension.h" #include "local/exm-manager.h" #include struct _ExmWindow { AdwApplicationWindow parent_instance; ExmManager *manager; /* Template widgets */ AdwHeaderBar *header_bar; ExmBrowsePage *browse_page; ExmInstalledPage *installed_page; AdwNavigationView *navigation_view; AdwNavigationPage *main_view; ExmDetailView *detail_view; ExmScreenshotView *screenshot_view; AdwViewSwitcher *title; GtkToggleButton *search_button; GtkSearchBar *search_bar; AdwViewStack *view_stack; AdwViewStackPage *installed_stack; AdwToastOverlay *toast_overlay; AdwAlertDialog *remove_dialog; AdwAlertDialog *unsupported_dialog; }; G_DEFINE_TYPE (ExmWindow, exm_window, ADW_TYPE_APPLICATION_WINDOW) enum { PROP_0, PROP_MANAGER, N_PROPS }; static GParamSpec *properties [N_PROPS]; enum { SIGNAL_0, SIGNAL_SEARCH_CHANGED, N_SIGNALS }; static guint signals [N_SIGNALS]; static void exm_window_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { ExmWindow *self = EXM_WINDOW (object); switch (prop_id) { case PROP_MANAGER: g_value_set_object (value, self->manager); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void extension_open_prefs (GtkWidget *widget, const char *action_name G_GNUC_UNUSED, GVariant *param) { ExmWindow *self; ExmExtension *extension; gchar *uuid; self = EXM_WINDOW (widget); g_variant_get (param, "s", &uuid); extension = exm_manager_get_by_uuid (self->manager, uuid); exm_manager_open_prefs (self->manager, extension); } typedef struct { ExmManager *manager; ExmExtension *extension; } RemoveDialogData; static void extension_remove_dialog_response (AdwAlertDialog *dialog, GAsyncResult *result, RemoveDialogData *data) { const char *response = adw_alert_dialog_choose_finish (dialog, result); if (g_strcmp0 (response, "yes") == 0) exm_manager_remove_extension (data->manager, data->extension); g_clear_pointer (&data->manager, g_object_unref); g_clear_pointer (&data->extension, g_object_unref); g_free (data); } static void extension_remove (GtkWidget *widget, const char *action_name G_GNUC_UNUSED, GVariant *param) { ExmWindow *self; ExmExtension *extension; gchar *uuid; self = EXM_WINDOW (widget); g_variant_get (param, "s", &uuid); extension = exm_manager_get_by_uuid (self->manager, uuid); RemoveDialogData *data = g_new0 (RemoveDialogData, 1); data->manager = g_object_ref (self->manager); data->extension = g_object_ref (extension); adw_alert_dialog_choose (self->remove_dialog, widget, NULL, (GAsyncReadyCallback) extension_remove_dialog_response, data); } typedef struct { ExmManager *manager; gchar *uuid; } UnsupportedDialogData; static void on_install_done (GObject *source, GAsyncResult *res, gpointer user_data) { ExmWindow *self = NULL; UnsupportedDialogData *data = NULL; ExmManager *manager = NULL; ExmInstallButtonState state; GError *error = NULL; if (G_IS_OBJECT (user_data)) { self = (ExmWindow *)user_data; manager = self->manager; state = EXM_INSTALL_BUTTON_STATE_DEFAULT; } else { data = (UnsupportedDialogData *)user_data; manager = data->manager; state = EXM_INSTALL_BUTTON_STATE_UNSUPPORTED; } if (!exm_manager_install_finish (source, res, &error)) { // TODO: Properly log this if (error) { g_critical ("%s\n", error->message); g_clear_error (&error); } g_signal_emit_by_name (manager, "install-status", state); } else { g_signal_emit_by_name (manager, "install-status", EXM_INSTALL_BUTTON_STATE_INSTALLED); } if (data) { g_clear_pointer (&data->manager, g_object_unref); g_clear_pointer (&data->uuid, g_free); g_free (data); } } static void extension_unsupported_dialog_response (AdwAlertDialog *dialog, GAsyncResult *result, UnsupportedDialogData *data) { const char *response = adw_alert_dialog_choose_finish (dialog, result); if (g_strcmp0 (response, "install") == 0) { exm_manager_install_async (data->manager, data->uuid, NULL, (GAsyncReadyCallback) on_install_done, data); } else { g_signal_emit_by_name (data->manager, "install-status", EXM_INSTALL_BUTTON_STATE_UNSUPPORTED); g_clear_pointer (&data->manager, g_object_unref); g_clear_pointer (&data->uuid, g_free); g_free (data); } } static void extension_install (GtkWidget *widget, const char *action_name G_GNUC_UNUSED, GVariant *param) { ExmWindow *self; gchar *uuid; gboolean warn; self = EXM_WINDOW (widget); g_variant_get (param, "(sb)", &uuid, &warn); if (warn) { UnsupportedDialogData *data = g_new0 (UnsupportedDialogData, 1); data->manager = g_object_ref (self->manager); data->uuid = g_strdup (uuid); g_free (uuid); adw_alert_dialog_choose (self->unsupported_dialog, widget, NULL, (GAsyncReadyCallback) extension_unsupported_dialog_response, data); return; } exm_manager_install_async (self->manager, uuid, NULL, (GAsyncReadyCallback) on_install_done, self); } static void show_page (GtkWidget *widget, const char *action_name G_GNUC_UNUSED, GVariant *param) { ExmWindow *self; char *target; g_variant_get (param, "s", &target); self = EXM_WINDOW (widget); adw_view_stack_set_visible_child_name (self->view_stack, target); } static void show_view (GtkWidget *widget, const char *action_name, GVariant *param) { ExmWindow *self; self = EXM_WINDOW (widget); if (g_strcmp0 (action_name, "win.show-detail") == 0) { gchar *uuid; g_variant_get (param, "s", &uuid); adw_navigation_page_set_title (ADW_NAVIGATION_PAGE (self->detail_view), uuid); adw_navigation_view_push (self->navigation_view, ADW_NAVIGATION_PAGE (self->detail_view)); exm_detail_view_load_for_uuid (self->detail_view, uuid); return; } adw_navigation_view_pop_to_page (self->navigation_view, self->main_view); } static void show_upgrade_assistant (GtkWidget *widget, const char *action_name G_GNUC_UNUSED, GVariant *param G_GNUC_UNUSED) { ExmWindow *self; self = EXM_WINDOW (widget); ExmUpgradeAssistant *assistant = exm_upgrade_assistant_new (self->manager); adw_dialog_present (ADW_DIALOG (assistant), widget); } static void show_error_dialog (GtkWidget *widget, const char *action_name G_GNUC_UNUSED, GVariant *param) { ExmErrorDialog *err_dialog; const char *err_text; err_text = g_variant_get_string (param, NULL); err_dialog = exm_error_dialog_new (err_text); gtk_window_set_modal (GTK_WINDOW (err_dialog), TRUE); gtk_window_set_transient_for (GTK_WINDOW (err_dialog), GTK_WINDOW (widget)); gtk_window_present (GTK_WINDOW (err_dialog)); } static void show_error (GtkWidget *widget, const char *action_name G_GNUC_UNUSED, GVariant *param) { ExmWindow *self; char *error_text; AdwToast *toast; self = EXM_WINDOW (widget); g_variant_get (param, "s", &error_text); toast = adw_toast_new (_("An Error Occurred")); adw_toast_set_button_label (toast, _("_Details")); adw_toast_set_action_name (toast, "win.show-error-dialog"); adw_toast_set_action_target (toast, "s", error_text); adw_toast_overlay_add_toast (self->toast_overlay, toast); } static void search_online (GtkWidget *widget, const char *action_name G_GNUC_UNUSED, GVariant *param G_GNUC_UNUSED) { ExmWindow *self; const char *search_text; self = EXM_WINDOW (widget); search_text = gtk_editable_get_text (GTK_EDITABLE (gtk_search_bar_get_child (self->search_bar))); adw_view_stack_set_visible_child_name (self->view_stack, "browse"); exm_browse_page_search (self->browse_page, search_text); gtk_toggle_button_set_active (self->search_button, FALSE); } static void on_error (ExmManager *manager G_GNUC_UNUSED, char *error_text, ExmWindow *self) { gtk_widget_activate_action (GTK_WIDGET (self), "win.show-error", "s", error_text); } static void on_updates_available (ExmManager *manager G_GNUC_UNUSED, int n_updates, ExmWindow *self) { adw_view_stack_page_set_badge_number (self->installed_stack, (guint) n_updates); } static void on_visible_page_changed (AdwViewStack *view_stack, GtkWidget *widget G_GNUC_UNUSED, ExmWindow *self) { gboolean is_installed_page = EXM_IS_INSTALLED_PAGE (adw_view_stack_get_visible_child (view_stack)); adw_view_stack_page_set_needs_attention (self->installed_stack, !is_installed_page && adw_view_stack_page_get_badge_number (self->installed_stack) > 0); gtk_widget_set_visible (GTK_WIDGET (self->search_bar), is_installed_page); gtk_widget_set_visible (GTK_WIDGET (self->search_button), is_installed_page); } const char * exm_window_get_search_query (ExmWindow *self) { GtkSearchEntry *search_entry; const char *query; search_entry = GTK_SEARCH_ENTRY (gtk_search_bar_get_child (self->search_bar)); query = gtk_editable_get_text (GTK_EDITABLE (search_entry)); return query; } gboolean exm_window_get_search_mode (ExmWindow *self) { return gtk_search_bar_get_search_mode (self->search_bar); } static void on_search_mode_enabled (GObject *object G_GNUC_UNUSED, GParamSpec *pspec G_GNUC_UNUSED, gpointer user_data) { ExmWindow *self = (ExmWindow *)user_data; exm_installed_page_show_page (gtk_search_bar_get_search_mode (self->search_bar), self->installed_page); } static void on_search_changed (GtkSearchEntry *search_entry G_GNUC_UNUSED, gpointer user_data) { ExmWindow *self = (ExmWindow *)user_data; g_signal_emit_by_name (self, "search-changed", NULL); } static gboolean search_open_cb (GtkWidget *widget, GVariant *args G_GNUC_UNUSED, gpointer user_data G_GNUC_UNUSED) { ExmWindow *self = EXM_WINDOW (widget); AdwNavigationPage *visible_page; const char *visible_stack_name, *visible_page_name; visible_page = adw_navigation_view_get_visible_page (self->navigation_view); visible_stack_name = adw_view_stack_get_visible_child_name (self->view_stack); visible_page_name = adw_navigation_page_get_tag (visible_page); if (g_strcmp0 (visible_stack_name, "installed") == 0 && g_strcmp0 (visible_page_name, "main") == 0) { gboolean is_active = gtk_toggle_button_get_active (self->search_button); gtk_toggle_button_set_active (self->search_button, !is_active); } else if (g_strcmp0 (visible_stack_name, "browse") == 0) { exm_browse_page_focus_entry (self->browse_page); } else { return GDK_EVENT_PROPAGATE; } return GDK_EVENT_STOP; } static void screenshot_zoom (GtkWidget *widget, const char *action_name, GVariant *parameter G_GNUC_UNUSED) { ExmWindow *self = (ExmWindow *)widget; g_assert (EXM_IS_WINDOW (self)); exm_screenshot_view_zoom (self->screenshot_view, action_name); } static void exm_window_class_init (ExmWindowClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->get_property = exm_window_get_property; properties [PROP_MANAGER] = g_param_spec_object ("manager", "Manager", "Manager", EXM_TYPE_MANAGER, G_PARAM_READABLE); g_object_class_install_properties (object_class, N_PROPS, properties); signals [SIGNAL_SEARCH_CHANGED] = g_signal_new ("search-changed", G_TYPE_FROM_CLASS (object_class), G_SIGNAL_RUN_LAST|G_SIGNAL_NO_RECURSE|G_SIGNAL_NO_HOOKS, 0, NULL, NULL, NULL, G_TYPE_NONE, 0, NULL); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); gtk_widget_class_set_template_from_resource (widget_class, g_strdup_printf ("%s/exm-window.ui", RESOURCE_PATH)); gtk_widget_class_bind_template_child (widget_class, ExmWindow, header_bar); gtk_widget_class_bind_template_child (widget_class, ExmWindow, installed_page); gtk_widget_class_bind_template_child (widget_class, ExmWindow, browse_page); gtk_widget_class_bind_template_child (widget_class, ExmWindow, navigation_view); gtk_widget_class_bind_template_child (widget_class, ExmWindow, main_view); gtk_widget_class_bind_template_child (widget_class, ExmWindow, detail_view); gtk_widget_class_bind_template_child (widget_class, ExmWindow, screenshot_view); gtk_widget_class_bind_template_child (widget_class, ExmWindow, title); gtk_widget_class_bind_template_child (widget_class, ExmWindow, search_button); gtk_widget_class_bind_template_child (widget_class, ExmWindow, search_bar); gtk_widget_class_bind_template_child (widget_class, ExmWindow, view_stack); gtk_widget_class_bind_template_child (widget_class, ExmWindow, installed_stack); gtk_widget_class_bind_template_child (widget_class, ExmWindow, toast_overlay); gtk_widget_class_bind_template_child (widget_class, ExmWindow, remove_dialog); gtk_widget_class_bind_template_child (widget_class, ExmWindow, unsupported_dialog); gtk_widget_class_bind_template_callback (widget_class, on_visible_page_changed); gtk_widget_class_bind_template_callback (widget_class, on_search_mode_enabled); gtk_widget_class_bind_template_callback (widget_class, on_search_changed); // TODO: Refactor ExmWindow into a separate ExmController and supply the // necessary actions/methods/etc in there. A reference to this new object can // then be passed to each page. gtk_widget_class_install_action (widget_class, "ext.install", "(sb)", extension_install); gtk_widget_class_install_action (widget_class, "ext.remove", "s", extension_remove); gtk_widget_class_install_action (widget_class, "ext.open-prefs", "s", extension_open_prefs); gtk_widget_class_install_action (widget_class, "win.show-detail", "s", show_view); gtk_widget_class_install_action (widget_class, "win.show-main", NULL, show_view); gtk_widget_class_install_action (widget_class, "win.show-upgrade-assistant", NULL, show_upgrade_assistant); gtk_widget_class_install_action (widget_class, "win.show-page", "s", show_page); gtk_widget_class_install_action (widget_class, "win.show-error", "s", show_error); gtk_widget_class_install_action (widget_class, "win.show-error-dialog", "s", show_error_dialog); gtk_widget_class_install_action (widget_class, "win.search-online", NULL, search_online); gtk_widget_class_install_action (widget_class, "screenshot.zoom-in", NULL, screenshot_zoom); gtk_widget_class_install_action (widget_class, "screenshot.zoom-out", NULL, screenshot_zoom); gtk_widget_class_install_action (widget_class, "screenshot.zoom-reset", NULL, screenshot_zoom); gtk_widget_class_add_binding (widget_class, GDK_KEY_f, GDK_CONTROL_MASK, search_open_cb, NULL); gtk_widget_class_add_binding_action (widget_class, GDK_KEY_1, GDK_ALT_MASK, "win.show-page", "s", "installed"); gtk_widget_class_add_binding_action (widget_class, GDK_KEY_2, GDK_ALT_MASK, "win.show-page", "s", "browse"); gtk_widget_class_add_binding_action (widget_class, GDK_KEY_plus, GDK_CONTROL_MASK, "screenshot.zoom-in", NULL); gtk_widget_class_add_binding_action (widget_class, GDK_KEY_minus, GDK_CONTROL_MASK, "screenshot.zoom-out", NULL); gtk_widget_class_add_binding_action (widget_class, GDK_KEY_0, GDK_CONTROL_MASK, "screenshot.zoom-reset", NULL); } static void exm_window_init (ExmWindow *self) { g_type_ensure (EXM_TYPE_INSTALLED_PAGE); g_type_ensure (EXM_TYPE_BROWSE_PAGE); g_type_ensure (EXM_TYPE_DETAIL_VIEW); g_type_ensure (EXM_TYPE_SCREENSHOT_VIEW); gtk_widget_init_template (GTK_WIDGET (self)); if (strstr (APP_ID, ".Devel") != NULL) gtk_widget_add_css_class (GTK_WIDGET (self), "devel"); self->manager = exm_manager_new (); g_signal_connect (self->manager, "error-occurred", G_CALLBACK (on_error), self); g_object_set (self->installed_page, "manager", self->manager, NULL); g_object_set (self->browse_page, "manager", self->manager, NULL); g_object_set (self->detail_view, "manager", self->manager, NULL); g_object_bind_property (self->manager, "shell-version", self->detail_view, "shell-version", G_BINDING_SYNC_CREATE); g_signal_connect (self->manager, "updates-available", G_CALLBACK (on_updates_available), self); } extension-manager-0.6.3/src/exm-window.h000066400000000000000000000021171477302130300202030ustar00rootroot00000000000000/* * exm-window.h * * Copyright 2022-2025 Matthew Jakeman * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General 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 EXM_TYPE_WINDOW (exm_window_get_type()) G_DECLARE_FINAL_TYPE (ExmWindow, exm_window, EXM, WINDOW, AdwApplicationWindow) const char *exm_window_get_search_query (ExmWindow *self); gboolean exm_window_get_search_mode (ExmWindow *self); G_END_DECLS extension-manager-0.6.3/src/exm-zoom-picture.c000066400000000000000000000212521477302130300213250ustar00rootroot00000000000000/* * exm-zoom-picture.c * * Copyright 2022-2025 Matthew Jakeman * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General 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 "exm-zoom-picture.h" struct _ExmZoomPicture { GtkWidget parent_instance; GdkPaintable *paintable; GtkGesture *zoom; GtkGesture *drag; // State tracking float zoom_level; float image_x; float image_y; // Gesture tracking float gesture_start_zoom; double gesture_image_start_x; double gesture_image_start_y; double gesture_touch_start_x; double gesture_touch_start_y; // Cached scaled sizes float constrained_x; float constrained_y; float scaled_width; float scaled_height; }; G_DEFINE_FINAL_TYPE (ExmZoomPicture, exm_zoom_picture, GTK_TYPE_WIDGET) #define ZOOM_STEP 0.5 #define ZOOM_MIN 0.5 #define ZOOM_MAX 5.0 enum { PROP_0, PROP_ZOOM, N_PROPS }; static GParamSpec *properties [N_PROPS]; ExmZoomPicture * exm_zoom_picture_new (void) { return g_object_new (EXM_TYPE_ZOOM_PICTURE, NULL); } static void exm_zoom_picture_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { ExmZoomPicture *self = EXM_ZOOM_PICTURE (object); switch (prop_id) { case PROP_ZOOM: g_value_set_float (value, self->zoom_level); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void exm_zoom_picture_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { ExmZoomPicture *self = EXM_ZOOM_PICTURE (object); switch (prop_id) { case PROP_ZOOM: exm_zoom_picture_set_zoom_level (self, g_value_get_float (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } void exm_zoom_picture_set_paintable (ExmZoomPicture *self, GdkPaintable *paintable) { if (self->paintable) g_object_unref (paintable); if (paintable) self->paintable = g_object_ref (paintable); gtk_widget_queue_draw (GTK_WIDGET (self)); } GdkPaintable * exm_zoom_picture_get_paintable (ExmZoomPicture *self) { return self->paintable; } void exm_zoom_picture_set_zoom_level (ExmZoomPicture *self, float zoom_level) { self->zoom_level = CLAMP (zoom_level, ZOOM_MIN, ZOOM_MAX); gtk_widget_queue_draw (GTK_WIDGET (self)); g_object_notify_by_pspec (G_OBJECT (self), properties [PROP_ZOOM]); } float exm_zoom_picture_get_zoom_level (ExmZoomPicture *self) { return self->zoom_level; } float exm_zoom_picture_get_zoom_level_max (ExmZoomPicture *self G_GNUC_UNUSED) { return ZOOM_MAX; } float exm_zoom_picture_get_zoom_level_min (ExmZoomPicture *self G_GNUC_UNUSED) { return ZOOM_MIN; } float exm_zoom_picture_get_zoom_level_step (ExmZoomPicture *self G_GNUC_UNUSED) { return ZOOM_STEP; } void compute_scaled_dimensions (ExmZoomPicture *self) { float width, height; float paintable_width, paintable_height; float scale_factor; float scaled_width, scaled_height; float x, y; width = gtk_widget_get_width (GTK_WIDGET (self)); height = gtk_widget_get_height (GTK_WIDGET (self)); paintable_width = gdk_paintable_get_intrinsic_width (self->paintable); paintable_height = gdk_paintable_get_intrinsic_height (self->paintable); // Try fill horizontally scale_factor = width / paintable_width; scaled_width = paintable_width * scale_factor; scaled_height = paintable_height * scale_factor; // Doesn't fit - fill vertically if (scaled_height > height) { scale_factor = height / paintable_height; scaled_width = paintable_width * scale_factor; scaled_height = paintable_height * scale_factor; } // Scale by zoom level scaled_width *= self->zoom_level; scaled_height *= self->zoom_level; // Set centre to midpoint x = ((width - scaled_width) / 2); y = ((height - scaled_height) / 2); // Constrain to image borders self->image_x = CLAMP (self->image_x, x, -x); self->image_y = CLAMP (self->image_y, y, -y); // Apply offset and constrain to image borders if (scaled_width > width) x += self->image_x; else self->image_x = 0.0f; if (scaled_height > height) y += self->image_y; else self->image_y = 0.0f; // Update for drawing self->scaled_width = scaled_width; self->scaled_height = scaled_height; self->constrained_x = x; self->constrained_y = y; } void exm_zoom_picture_snapshot (GtkWidget *widget, GtkSnapshot *snapshot) { ExmZoomPicture *self = EXM_ZOOM_PICTURE (widget); compute_scaled_dimensions (self); gtk_snapshot_translate (snapshot, &GRAPHENE_POINT_INIT (self->constrained_x, self->constrained_y)); gdk_paintable_snapshot (self->paintable, snapshot, self->scaled_width, self->scaled_height); } static void exm_zoom_picture_class_init (ExmZoomPictureClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->get_property = exm_zoom_picture_get_property; object_class->set_property = exm_zoom_picture_set_property; properties [PROP_ZOOM] = g_param_spec_float ("zoom-level", "Zoom Level", "Zoom Level", 0.0f, G_MAXFLOAT, 0.0f, G_PARAM_CONSTRUCT|G_PARAM_READWRITE); g_object_class_install_properties (object_class, N_PROPS, properties); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); widget_class->snapshot = exm_zoom_picture_snapshot; } void on_gesture_begin (GtkGesture *gesture, GdkEventSequence *sequence G_GNUC_UNUSED, ExmZoomPicture *self) { gtk_gesture_set_state (gesture, GTK_EVENT_SEQUENCE_CLAIMED); self->gesture_start_zoom = self->zoom_level; self->gesture_image_start_x = self->image_x; self->gesture_image_start_y = self->image_y; gtk_gesture_get_bounding_box_center (GTK_GESTURE (gesture), &self->gesture_touch_start_x, &self->gesture_touch_start_y); } void on_scale_changed (GtkGestureZoom *gesture, gdouble scale, ExmZoomPicture *self) { double gesture_touch_offset_x; double gesture_touch_offset_y; double delta_x; double delta_y; exm_zoom_picture_set_zoom_level (self, self->gesture_start_zoom * scale); gtk_gesture_get_bounding_box_center(GTK_GESTURE (gesture), &gesture_touch_offset_x, &gesture_touch_offset_y); delta_x = gesture_touch_offset_x - self->gesture_touch_start_x; delta_y = gesture_touch_offset_y - self->gesture_touch_start_y; self->image_x = self->gesture_image_start_x + delta_x; self->image_y = self->gesture_image_start_y + delta_y; gtk_widget_queue_draw (GTK_WIDGET (self)); } void on_drag_update (GtkGestureDrag *gesture G_GNUC_UNUSED, gdouble offset_x, gdouble offset_y, ExmZoomPicture *self) { self->image_x = self->gesture_image_start_x + offset_x; self->image_y = self->gesture_image_start_y + offset_y; gtk_widget_queue_draw (GTK_WIDGET (self)); } static void exm_zoom_picture_init (ExmZoomPicture *self) { GtkGesture *gesture; exm_zoom_picture_set_zoom_level (self, 1.0f); gtk_widget_set_overflow (GTK_WIDGET (self), GTK_OVERFLOW_HIDDEN); gesture = gtk_gesture_zoom_new (); gtk_event_controller_set_propagation_phase (GTK_EVENT_CONTROLLER (gesture), GTK_PHASE_CAPTURE); g_signal_connect (gesture, "begin", G_CALLBACK (on_gesture_begin), self); g_signal_connect (gesture, "scale-changed", G_CALLBACK (on_scale_changed), self); gtk_widget_add_controller (GTK_WIDGET (self), GTK_EVENT_CONTROLLER (gesture)); self->zoom = gesture; gesture = gtk_gesture_drag_new (); gtk_event_controller_set_propagation_phase (GTK_EVENT_CONTROLLER (gesture), GTK_PHASE_CAPTURE); g_signal_connect (gesture, "begin", G_CALLBACK (on_gesture_begin), self); g_signal_connect (gesture, "drag-update", G_CALLBACK (on_drag_update), self); gtk_widget_add_controller (GTK_WIDGET (self), GTK_EVENT_CONTROLLER (gesture)); self->drag = gesture; } extension-manager-0.6.3/src/exm-zoom-picture.h000066400000000000000000000031301477302130300213250ustar00rootroot00000000000000/* exm-zoom-picture.h * * Copyright 2022 Matthew Jakeman * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General 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 EXM_TYPE_ZOOM_PICTURE (exm_zoom_picture_get_type()) G_DECLARE_FINAL_TYPE (ExmZoomPicture, exm_zoom_picture, EXM, ZOOM_PICTURE, GtkWidget) ExmZoomPicture *exm_zoom_picture_new (void); void exm_zoom_picture_set_paintable (ExmZoomPicture *self, GdkPaintable *paintable); GdkPaintable * exm_zoom_picture_get_paintable (ExmZoomPicture *self); void exm_zoom_picture_set_zoom_level (ExmZoomPicture *self, float zoom_level); float exm_zoom_picture_get_zoom_level (ExmZoomPicture *self); float exm_zoom_picture_get_zoom_level_max (ExmZoomPicture *self); float exm_zoom_picture_get_zoom_level_min (ExmZoomPicture *self); float exm_zoom_picture_get_zoom_level_step (ExmZoomPicture *self); G_END_DECLS extension-manager-0.6.3/src/exm.gresource.xml.in000066400000000000000000000063441477302130300216570ustar00rootroot00000000000000 exm-browse-page.ui exm-comment-dialog.ui exm-comment-tile.ui exm-detail-view.ui exm-error-dialog.ui exm-extension-row.ui exm-help-overlay.ui exm-info-bar.ui exm-installed-page.ui exm-install-button.ui exm-rating.ui exm-screenshot-view.ui exm-screenshot.ui exm-search-row.ui exm-upgrade-assistant.ui exm-window.ui res/suggestions.txt ../data/@appstream_file@ style.css ../data/icons/hicolor/scalable/actions/clock-alt-symbolic.svg ../data/icons/hicolor/scalable/actions/donation-symbolic.svg ../data/icons/hicolor/scalable/actions/external-link-symbolic.svg ../data/icons/hicolor/scalable/actions/globe-symbolic.svg ../data/icons/hicolor/scalable/actions/info-symbolic.svg ../data/icons/hicolor/scalable/actions/offline-symbolic.svg ../data/icons/hicolor/scalable/actions/pip-in-symbolic.svg ../data/icons/hicolor/scalable/actions/pip-out-symbolic.svg ../data/icons/hicolor/scalable/actions/puzzle-piece-symbolic.svg ../data/icons/hicolor/scalable/actions/settings-symbolic.svg ../data/icons/hicolor/scalable/actions/software-update-available-symbolic.svg ../data/icons/hicolor/scalable/actions/star-filled-rounded-symbolic.svg ../data/icons/hicolor/scalable/actions/star-outline-rounded-symbolic.svg ../data/icons/hicolor/scalable/actions/supported-symbolic.svg ../data/icons/hicolor/scalable/actions/unknown-symbolic.svg ../data/icons/hicolor/scalable/actions/unsupported-symbolic.svg extension-manager-0.6.3/src/local/000077500000000000000000000000001477302130300170255ustar00rootroot00000000000000extension-manager-0.6.3/src/local/exm-extension.c000066400000000000000000000230231477302130300217740ustar00rootroot00000000000000/* * exm-extension.c * * Copyright 2022-2025 Matthew Jakeman * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General 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 "exm-extension.h" #include "../exm-types.h" #include "../exm-enums.h" struct _ExmExtension { GObject parent_instance; gchar *uuid; gchar *name; gchar *description; ExmExtensionState state; gboolean enabled; gchar *url; gchar *version; gchar *error; gboolean has_prefs; gboolean has_update; gboolean can_change; gboolean is_user; GPtrArray *session_modes; GHashTable *donations; }; G_DEFINE_FINAL_TYPE (ExmExtension, exm_extension, G_TYPE_OBJECT) enum { PROP_0, PROP_UUID, PROP_NAME, PROP_DESCRIPTION, PROP_STATE, PROP_ENABLED, PROP_URL, PROP_VERSION, PROP_ERROR, PROP_HAS_PREFS, PROP_HAS_UPDATE, PROP_CAN_CHANGE, PROP_IS_USER, PROP_SESSION_MODES, PROP_DONATIONS, N_PROPS }; static GParamSpec *properties [N_PROPS]; ExmExtension * exm_extension_new (const gchar *uuid) { return g_object_new (EXM_TYPE_EXTENSION, "uuid", uuid, NULL); } static void exm_extension_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { ExmExtension *self = EXM_EXTENSION (object); switch (prop_id) { case PROP_UUID: g_value_set_string (value, self->uuid); break; case PROP_NAME: g_value_set_string (value, self->name); break; case PROP_DESCRIPTION: g_value_set_string (value, self->description); break; case PROP_STATE: g_value_set_enum (value, self->state); break; case PROP_ENABLED: g_value_set_boolean (value, self->enabled); break; case PROP_URL: g_value_set_string (value, self->url); break; case PROP_VERSION: g_value_set_string (value, self->version); break; case PROP_ERROR: g_value_set_string (value, self->error); break; case PROP_HAS_PREFS: g_value_set_boolean (value, self->has_prefs); break; case PROP_HAS_UPDATE: g_value_set_boolean (value, self->has_update); break; case PROP_CAN_CHANGE: g_value_set_boolean (value, self->can_change); break; case PROP_IS_USER: g_value_set_boolean (value, self->is_user); break; case PROP_SESSION_MODES: g_value_set_boxed (value, self->session_modes); break; case PROP_DONATIONS: g_value_set_pointer (value, self->donations); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void exm_extension_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { ExmExtension *self = EXM_EXTENSION (object); switch (prop_id) { case PROP_UUID: g_free (self->uuid); self->uuid = g_value_dup_string (value); break; case PROP_NAME: g_free (self->name); self->name = g_value_dup_string (value); break; case PROP_DESCRIPTION: g_free (self->description); self->description = g_value_dup_string (value); break; case PROP_STATE: self->state = g_value_get_enum (value); break; case PROP_ENABLED: self->enabled = g_value_get_boolean (value); break; case PROP_URL: g_free (self->url); self->url = g_value_dup_string (value); break; case PROP_VERSION: g_free (self->version); self->version = g_value_dup_string (value); break; case PROP_ERROR: g_free (self->error); self->error = g_value_dup_string (value); break; case PROP_HAS_PREFS: self->has_prefs = g_value_get_boolean (value); break; case PROP_HAS_UPDATE: self->has_update = g_value_get_boolean (value); break; case PROP_CAN_CHANGE: self->can_change = g_value_get_boolean (value); break; case PROP_IS_USER: self->is_user = g_value_get_boolean (value); break; case PROP_SESSION_MODES: if (self->session_modes) g_ptr_array_unref (self->session_modes); self->session_modes = g_value_get_boxed (value); break; case PROP_DONATIONS: if (self->donations) g_hash_table_unref (self->donations); self->donations = g_value_get_pointer (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } gint compare_extension (ExmExtension *a, ExmExtension *b, gpointer user_data G_GNUC_UNUSED) { const gchar *uuid_a, *uuid_b; g_object_get (a, "uuid", &uuid_a, NULL); g_object_get (b, "uuid", &uuid_b, NULL); return g_strcmp0 (uuid_a, uuid_b); } gboolean is_extension_equal (ExmExtension *a, ExmExtension *b) { return compare_extension (a, b, NULL) == 0; } static void exm_extension_class_init (ExmExtensionClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->get_property = exm_extension_get_property; object_class->set_property = exm_extension_set_property; properties [PROP_UUID] = g_param_spec_string ("uuid", "UUID", "UUID", NULL, G_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY); properties [PROP_NAME] = g_param_spec_string ("name", "Name", "Name", NULL, G_PARAM_READWRITE); properties [PROP_DESCRIPTION] = g_param_spec_string ("description", "Description", "Description", NULL, G_PARAM_READWRITE); properties [PROP_STATE] = g_param_spec_enum ("state", "State", "State", EXM_TYPE_EXTENSION_STATE, EXM_EXTENSION_STATE_INITIALIZED, G_PARAM_READWRITE); properties [PROP_ENABLED] = g_param_spec_boolean ("enabled", "Enabled", "Enabled", FALSE, G_PARAM_READWRITE); properties [PROP_URL] = g_param_spec_string ("url", "URL", "URL", NULL, G_PARAM_READWRITE); properties [PROP_VERSION] = g_param_spec_string ("version", "Version", "Version", NULL, G_PARAM_READWRITE); properties [PROP_ERROR] = g_param_spec_string ("error", "Error", "Error", NULL, G_PARAM_READWRITE); properties [PROP_HAS_PREFS] = g_param_spec_boolean ("has-prefs", "Has Preferences", "Has Preferences", FALSE, G_PARAM_READWRITE); properties [PROP_HAS_UPDATE] = g_param_spec_boolean ("has-update", "Has Update", "Has Update", FALSE, G_PARAM_READWRITE); properties [PROP_CAN_CHANGE] = g_param_spec_boolean ("can-change", "Can Change", "Can Change", FALSE, G_PARAM_READWRITE); properties [PROP_IS_USER] = g_param_spec_boolean ("is-user", "Is User", "Is User", FALSE, G_PARAM_READWRITE); properties [PROP_SESSION_MODES] = g_param_spec_boxed ("session-modes", "Session Modes", "Session Modes", G_TYPE_PTR_ARRAY, G_PARAM_READWRITE); properties [PROP_DONATIONS] = g_param_spec_pointer ("donations", "Donations", "Donations", G_PARAM_READWRITE); g_object_class_install_properties (object_class, N_PROPS, properties); } static void exm_extension_init (ExmExtension *self G_GNUC_UNUSED) { } extension-manager-0.6.3/src/local/exm-extension.h000066400000000000000000000010111477302130300217720ustar00rootroot00000000000000#pragma once #include G_BEGIN_DECLS #define EXM_TYPE_EXTENSION (exm_extension_get_type()) G_DECLARE_FINAL_TYPE (ExmExtension, exm_extension, EXM, EXTENSION, GObject) ExmExtension *exm_extension_new (const gchar *uuid); gint compare_extension (ExmExtension *a, ExmExtension *b, gpointer user_data); gboolean is_extension_equal (ExmExtension *a, ExmExtension *b); G_END_DECLS extension-manager-0.6.3/src/local/exm-manager.c000066400000000000000000000615701477302130300214030ustar00rootroot00000000000000/* * exm-manager.c * * Copyright 2022-2025 Matthew Jakeman * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General 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 "exm-manager.h" #include "shell-dbus-interface.h" #include "../exm-types.h" #include "../exm-enums.h" struct _ExmManager { GObject parent_instance; ShellExtensions *proxy; GListModel *ext_model; const gchar *shell_version; gboolean extensions_enabled; guint update_callback_id; }; G_DEFINE_FINAL_TYPE (ExmManager, exm_manager, G_TYPE_OBJECT) enum { PROP_0, PROP_EXTENSIONS, PROP_EXTENSIONS_ENABLED, PROP_SHELL_VERSION, N_PROPS }; static GParamSpec *properties [N_PROPS]; enum { SIGNAL_0, SIGNAL_UPDATES_AVAILABLE, SIGNAL_ERROR_OCCURRED, SIGNAL_INSTALL_STATUS, N_SIGNALS }; static guint signals [N_SIGNALS]; ExmManager * exm_manager_new (void) { return g_object_new (EXM_TYPE_MANAGER, NULL); } static void exm_manager_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { ExmManager *self = EXM_MANAGER (object); switch (prop_id) { case PROP_EXTENSIONS: g_value_set_object (value, self->ext_model); break; case PROP_SHELL_VERSION: g_value_set_string (value, self->shell_version); break; case PROP_EXTENSIONS_ENABLED: g_value_set_boolean (value, self->extensions_enabled); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void exm_manager_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { ExmManager *self = EXM_MANAGER (object); switch (prop_id) { case PROP_SHELL_VERSION: self->shell_version = g_value_dup_string (value); break; case PROP_EXTENSIONS_ENABLED: self->extensions_enabled = g_value_get_boolean (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } typedef struct { ExmExtension *extension; ExmManager *manager; } ExmCallbackData; static ExmCallbackData * create_callback_data (ExmManager *manager, ExmExtension *extension) { ExmCallbackData *data; data = g_slice_new0 (ExmCallbackData); data->manager = g_object_ref (manager); data->extension = g_object_ref (extension); return data; } static void free_callback_data (ExmCallbackData *data) { if (!data) return; g_clear_object (&data->manager); g_clear_object (&data->extension); g_slice_free (ExmCallbackData, data); } #define notify_error(self_, f_, ...); \ {\ char *error_text;\ error_text = g_strdup_printf (f_, __VA_ARGS__);\ g_critical ("%s", error_text);\ g_signal_emit (G_OBJECT (self_), signals [SIGNAL_ERROR_OCCURRED], 0, error_text);\ g_free (error_text);\ }\ static void enable_extension_done (ShellExtensions *proxy, GAsyncResult *res, ExmCallbackData *data) { GError *error = NULL; gboolean success; shell_extensions_call_enable_extension_finish (proxy, &success, res, &error); if (!success) { gchar *uuid; g_object_get (data->extension, "uuid", &uuid, NULL); if (error) { notify_error (data->manager, "Could not enable extension '%s': %s\n", uuid, error->message); } else { notify_error (data->manager, "Could not enable extension '%s': unknown failure", uuid); } } free_callback_data (data); } void exm_manager_enable_extension (ExmManager *self, ExmExtension *extension) { gchar *uuid; g_object_get (extension, "uuid", &uuid, NULL); shell_extensions_call_enable_extension (self->proxy, uuid, NULL, (GAsyncReadyCallback) enable_extension_done, create_callback_data (self, extension)); } static void disable_extension_done (ShellExtensions *proxy, GAsyncResult *res, ExmCallbackData *data) { GError *error = NULL; gboolean success; shell_extensions_call_disable_extension_finish (proxy, &success, res, &error); if (!success) { gchar *uuid; g_object_get (data->extension, "uuid", &uuid, NULL); if (error) { notify_error (data->manager, "Could not disable extension '%s': %s\n", uuid, error->message); } else { notify_error (data->manager, "Could not disable extension '%s': unknown failure", uuid); } } free_callback_data (data); } void exm_manager_disable_extension (ExmManager *self, ExmExtension *extension) { gchar *uuid; g_object_get (extension, "uuid", &uuid, NULL); shell_extensions_call_disable_extension (self->proxy, uuid, NULL, (GAsyncReadyCallback) disable_extension_done, create_callback_data (self, extension)); } static void remove_extension_done (ShellExtensions *proxy, GAsyncResult *res, ExmCallbackData *data) { GError *error = NULL; gboolean success; shell_extensions_call_uninstall_extension_finish (proxy, &success, res, &error); if (!success) { gchar *uuid; g_object_get (data->extension, "uuid", &uuid, NULL); if (error) { notify_error (data->manager, "Could not remove extension '%s': %s\n", uuid, error->message); } else { notify_error (data->manager, "Could not remove extension '%s': unknown failure", uuid); } } free_callback_data (data); } void exm_manager_remove_extension (ExmManager *self, ExmExtension *extension) { gchar *uuid; g_object_get (extension, "uuid", &uuid, NULL); shell_extensions_call_uninstall_extension (self->proxy, uuid, NULL, (GAsyncReadyCallback) remove_extension_done, create_callback_data (self, extension)); } static void open_prefs_done (ShellExtensions *proxy, GAsyncResult *res, ExmCallbackData *data) { GError *error = NULL; shell_extensions_call_launch_extension_prefs_finish (proxy, res, &error); // TODO: Don't enable until we can export the window handle over dbus /*if (error) { gchar *uuid; g_object_get (data->extension, "uuid", &uuid, NULL); notify_error (data->manager, "Could not open extension '%s' preferences: %s\n", uuid, error->message); }*/ free_callback_data (data); } void exm_manager_open_prefs (ExmManager *self, ExmExtension *extension) { gchar *uuid; g_object_get (extension, "uuid", &uuid, NULL); shell_extensions_call_launch_extension_prefs (self->proxy, uuid, NULL, (GAsyncReadyCallback) open_prefs_done, create_callback_data (self, extension)); } static gpointer list_model_get_by_uuid (GListModel *model, const gchar *uuid) { int n_items = g_list_model_get_n_items (model); for (int i = 0; i < n_items; i++) { ExmExtension *ext = g_list_model_get_item (model, i); gchar *cmp_uuid; g_object_get (ext, "uuid", &cmp_uuid, NULL); if (strcmp (uuid, cmp_uuid) == 0) return ext; } return NULL; } static gboolean list_model_contains (GListModel *model, const gchar *uuid) { return list_model_get_by_uuid (model, uuid) != NULL; } ExmExtension * exm_manager_get_by_uuid (ExmManager *self, const gchar *uuid) { ExmExtension *result = NULL; if ((result = list_model_get_by_uuid (self->ext_model, uuid)) != NULL) return result; return NULL; } gboolean exm_manager_is_installed_uuid (ExmManager *self, const gchar *uuid) { if (list_model_contains (self->ext_model, uuid)) return TRUE; return FALSE; } void exm_manager_install_async (ExmManager *self, const gchar *uuid, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { shell_extensions_call_install_remote_extension (self->proxy, uuid, cancellable, callback, user_data); } gboolean exm_manager_install_finish (GObject *self, GAsyncResult *result, GError **error) { gchar *out_result = NULL; gboolean success; g_return_val_if_fail (SHELL_IS_EXTENSIONS (self), FALSE); success = shell_extensions_call_install_remote_extension_finish (SHELL_EXTENSIONS (self), &out_result, result, error); if (g_strcmp0 (out_result, "cancelled") == 0) success = FALSE; g_free (out_result); return success; } static int list_model_get_number_of_updates (GListModel *model) { int num_updates = 0; int n_items = g_list_model_get_n_items (model); for (int i = 0; i < n_items; i++) { ExmExtension *ext = g_list_model_get_item (model, i); gboolean has_update; g_object_get (ext, "has-update", &has_update, NULL); if (has_update) num_updates++; } return num_updates; } static guint notify_extension_updates (ExmManager *self) { // Checks for updates in the background and if found then // emits the 'updates-available' signal with the number of updates int n_updates = 0; n_updates += list_model_get_number_of_updates (self->ext_model); g_info ("There are %d new updates available.", n_updates); if (n_updates > 0) g_signal_emit (G_OBJECT (self), signals [SIGNAL_UPDATES_AVAILABLE], 0, n_updates); self->update_callback_id = 0; return G_SOURCE_REMOVE; } static void queue_notify_extension_updates (ExmManager *self) { // See: notify_extension_updates if (self->update_callback_id != 0) return; self->update_callback_id = g_timeout_add (0, G_SOURCE_FUNC (notify_extension_updates), self); } static void check_for_updates_done (ShellExtensions *proxy, GAsyncResult *res, ExmManager *manager) { GError *error = NULL; shell_extensions_call_check_for_updates_finish (proxy, res, &error); if (error) { notify_error (manager, "Could not check for updates: %s\n", error->message); } // Notify the user if updates are detected queue_notify_extension_updates (manager); } void exm_manager_check_for_updates (ExmManager *self) { shell_extensions_call_check_for_updates (self->proxy, NULL, (GAsyncReadyCallback) check_for_updates_done, self); } static void exm_manager_class_init (ExmManagerClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->get_property = exm_manager_get_property; object_class->set_property = exm_manager_set_property; properties [PROP_EXTENSIONS] = g_param_spec_object ("extensions", "Extensions List Model", "Extensions List Model", G_TYPE_LIST_MODEL, G_PARAM_READABLE); properties [PROP_SHELL_VERSION] = g_param_spec_string ("shell-version", "Shell Version", "Shell Version", NULL, G_PARAM_READWRITE); properties [PROP_EXTENSIONS_ENABLED] = g_param_spec_boolean ("extensions-enabled", "Extensions Enabled", "Extensions Enabled", FALSE, G_PARAM_READWRITE); g_object_class_install_properties (object_class, N_PROPS, properties); signals [SIGNAL_UPDATES_AVAILABLE] = g_signal_new ("updates-available", G_TYPE_FROM_CLASS (object_class), G_SIGNAL_RUN_LAST|G_SIGNAL_NO_RECURSE|G_SIGNAL_NO_HOOKS, 0, NULL, NULL, NULL, G_TYPE_NONE, 1, G_TYPE_INT); signals [SIGNAL_ERROR_OCCURRED] = g_signal_new ("error-occurred", G_TYPE_FROM_CLASS (object_class), G_SIGNAL_RUN_LAST|G_SIGNAL_NO_RECURSE|G_SIGNAL_NO_HOOKS, 0, NULL, NULL, NULL, G_TYPE_NONE, 1, G_TYPE_STRING); signals [SIGNAL_INSTALL_STATUS] = g_signal_new ("install-status", G_TYPE_FROM_CLASS (object_class), G_SIGNAL_RUN_LAST|G_SIGNAL_NO_RECURSE|G_SIGNAL_NO_HOOKS, 0, NULL, NULL, NULL, G_TYPE_NONE, 1, EXM_TYPE_INSTALL_BUTTON_STATE); } static void parse_single_extension (ExmExtension **extension, const gchar *extension_uuid, GVariantIter *variant_iter, gboolean *is_uninstall_operation) { gchar *prop_name; GVariant *prop_value; // Well-Defined Properties gchar *uuid = NULL; gchar *name = NULL; gchar *description = NULL; ExmExtensionState state = EXM_EXTENSION_STATE_INITIALIZED; gboolean enabled = FALSE; gchar *url = NULL; gchar *version = NULL; gchar *version_name = NULL; gchar *error = NULL; gboolean has_prefs = FALSE; gboolean has_update = FALSE; gboolean can_change = TRUE; gboolean is_user = FALSE; ExmExtensionType type = EXM_EXTENSION_TYPE_SYSTEM; GPtrArray *session_modes = g_ptr_array_new_with_free_func (g_free); GHashTable *donations = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free); if (extension && *extension) { const gchar *uuid_cmp; g_object_get (*extension, "uuid", &uuid_cmp, NULL); g_assert (strcmp (extension_uuid, uuid_cmp) == 0); } else { *extension = exm_extension_new (extension_uuid); } g_debug ("Found extension '%s' with properties:\n", uuid); while (g_variant_iter_loop (variant_iter, "{sv}", &prop_name, &prop_value)) { g_debug (" - Property: %s=%s\n", prop_name, g_variant_print(prop_value, 0)); // Compare with DBus property names if (g_strcmp0 (prop_name, "uuid") == 0) { g_variant_get (prop_value, "s", &uuid); // Assert that this is the same as the extension uuid g_assert (g_strcmp0 (extension_uuid, uuid) == 0); } else if (g_strcmp0 (prop_name, "name") == 0) { g_variant_get (prop_value, "s", &name); } else if (g_strcmp0 (prop_name, "description") == 0) { g_variant_get (prop_value, "s", &description); } else if (g_strcmp0 (prop_name, "state") == 0) { gdouble val; g_variant_get (prop_value, "d", &val); state = (ExmExtensionState)val; } else if (g_strcmp0 (prop_name, "enabled") == 0) { g_variant_get (prop_value, "b", &enabled); } else if (g_strcmp0 (prop_name, "url") == 0) { g_variant_get (prop_value, "s", &url); } else if (g_strcmp0 (prop_name, "version") == 0) { gdouble val; g_variant_get (prop_value, "d", &val); version = g_strdup_printf ("%d", (gint)val); } else if (g_strcmp0 (prop_name, "version-name") == 0) { g_variant_get (prop_value, "s", &version_name); } else if (g_strcmp0 (prop_name, "error") == 0) { g_variant_get (prop_value, "s", &error); } else if (g_strcmp0 (prop_name, "hasPrefs") == 0) { g_variant_get (prop_value, "b", &has_prefs); } else if (g_strcmp0 (prop_name, "hasUpdate") == 0) { g_variant_get (prop_value, "b", &has_update); } else if (g_strcmp0 (prop_name, "canChange") == 0) { g_variant_get (prop_value, "b", &can_change); } else if (g_strcmp0 (prop_name, "type") == 0) { gdouble val; g_variant_get (prop_value, "d", &val); type = (ExmExtensionType)val; } else if (g_strcmp0 (prop_name, "sessionModes") == 0) { GVariantIter iter; GVariant *variant; gchar *mode; g_variant_iter_init (&iter, prop_value); while (g_variant_iter_loop (&iter, "v", &variant)) { mode = g_variant_dup_string (variant, NULL); g_ptr_array_add (session_modes, g_strdup (mode)); } } else if (g_strcmp0 (prop_name, "donations") == 0) { GVariantIter iter; gchar *key; g_variant_iter_init (&iter, prop_value); while (g_variant_iter_loop (&iter, "{sv}", &key, &prop_value)) { const gchar *donation_value = g_variant_get_string (prop_value, NULL); g_hash_table_insert (donations, g_strdup (key), g_strdup (donation_value)); } } } // TODO: Show only version name when available in GNOME Extensions API if (version_name) version = g_strdup_printf ("%s (%s)", version, version_name); is_user = (type == EXM_EXTENSION_TYPE_PER_USER); *is_uninstall_operation = (state == EXM_EXTENSION_STATE_UNINSTALLED); g_object_set (*extension, "name", name, "description", description, "state", state, "enabled", enabled, "url", url, "version", version, "error", error, "has-prefs", has_prefs, "has-update", has_update, "can-change", can_change, "is-user", is_user, "session-modes", session_modes, "donations", donations, NULL); g_free (uuid); g_free (name); g_free (description); g_free (url); g_free (version); g_free (version_name); g_free (error); } static void parse_extension_list (GVariant *exlist, GListModel **ext_model) { GListStore *ext_store; /* format: a{sa{sv}} * array of interfaces, where each interface is an array of properties * each interface corresponds to one extension * this is terrible >:( * see also: https://stackoverflow.com/questions/54131543/how-can-i-get-the-g-dbus-connection-signal-subscribe-function-to-tell-me-about-p */ GVariantIter *iter, *iter2; gchar *exname; ext_store = g_list_store_new (EXM_TYPE_EXTENSION); g_variant_get (exlist, "a{sa{sv}}", &iter); while (g_variant_iter_loop (iter, "{sa{sv}}", &exname, &iter2)) { gboolean is_uninstall_operation; ExmExtension *extension = NULL; parse_single_extension (&extension, exname, iter2, &is_uninstall_operation); if (is_uninstall_operation) { g_error ("Invalid extension: '%s' is being uninstalled.", exname); continue; } g_list_store_append (ext_store, extension); } g_variant_iter_free (iter); *ext_model = G_LIST_MODEL (ext_store); } static void update_extension_list (ExmManager *self) { GError *error = NULL; GVariant* exlist; shell_extensions_call_list_extensions_sync (self->proxy, &exlist, NULL, &error); if (error != NULL) { notify_error (self, "Could not list extensions: %s\n", error->message); return; } // Unref object if exists g_clear_object (&self->ext_model); parse_extension_list (exlist, &self->ext_model); g_object_notify_by_pspec (G_OBJECT (self), properties [PROP_EXTENSIONS]); queue_notify_extension_updates (self); } static void on_state_changed (ShellExtensions *object G_GNUC_UNUSED, const gchar *arg_uuid, GVariant *arg_state, ExmManager *self) { ExmExtension *extension; gboolean is_new; gboolean is_uninstall_operation; GListStore *list_store; g_debug ("State Changed for extension '%s'\n", arg_uuid); // Parse the new extension state and update only that element in // the list model. This will automatically update any bound // listboxes or listviews. // This is NULL if it does not exist extension = exm_manager_get_by_uuid (self, arg_uuid); is_new = (extension == NULL); GVariantIter *iter; g_variant_get (arg_state, "a{sv}", &iter); parse_single_extension (&extension, arg_uuid, iter, &is_uninstall_operation); g_variant_iter_free (iter); list_store = G_LIST_STORE (self->ext_model); if (is_new) { g_list_store_insert_sorted (list_store, extension, (GCompareDataFunc)compare_extension, NULL); return; } guint position; if (is_uninstall_operation) { if (g_list_store_find_with_equal_func (list_store, extension, (GEqualFunc)is_extension_equal, &position)) g_list_store_remove (list_store, position); return; } // Emit items-changed signal to re-sort extension list if (g_list_store_find_with_equal_func (list_store, extension, (GEqualFunc)is_extension_equal, &position)) g_list_model_items_changed (G_LIST_MODEL (list_store), position, 0, 0); // If the extension that has changed has an update, then // one or more extensions have updates available. Lazily // check the exact number and emit the 'updates-available' // signal. gboolean has_update; g_object_get (extension, "has-update", &has_update, NULL); if (has_update) queue_notify_extension_updates (self); } static void exm_manager_init (ExmManager *self) { GError *error = NULL; self->proxy = shell_extensions_proxy_new_for_bus_sync (G_BUS_TYPE_SESSION, G_DBUS_PROXY_FLAGS_NONE, "org.gnome.Shell.Extensions", "/org/gnome/Shell/Extensions", NULL, &error); if (error != NULL) { notify_error (self, "Could not create proxy: %s\n", error->message); return; } self->update_callback_id = 0; g_object_bind_property (self->proxy, "shell-version", self, "shell-version", G_BINDING_SYNC_CREATE); g_object_bind_property (self->proxy, "user-extensions-enabled", self, "extensions-enabled", G_BINDING_BIDIRECTIONAL|G_BINDING_SYNC_CREATE); update_extension_list (self); g_signal_connect (self->proxy, "extension-state-changed", G_CALLBACK (on_state_changed), self); } extension-manager-0.6.3/src/local/exm-manager.h000066400000000000000000000051371477302130300214050ustar00rootroot00000000000000/* * exm-manager.h * * Copyright 2022-2025 Matthew Jakeman * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General 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 #include "exm-extension.h" G_BEGIN_DECLS #define EXM_TYPE_MANAGER (exm_manager_get_type()) G_DECLARE_FINAL_TYPE (ExmManager, exm_manager, EXM, MANAGER, GObject) ExmManager *exm_manager_new (void); void exm_manager_enable_extension (ExmManager *manager, ExmExtension *extension); void exm_manager_disable_extension (ExmManager *manager, ExmExtension *extension); void exm_manager_remove_extension (ExmManager *self, ExmExtension *extension); void exm_manager_open_prefs (ExmManager *self, ExmExtension *extension); void exm_manager_check_for_updates (ExmManager *self); gboolean exm_manager_is_installed_uuid (ExmManager *self, const gchar *uuid); ExmExtension *exm_manager_get_by_uuid (ExmManager *self, const gchar *uuid); void exm_manager_install_async (ExmManager *self, const gchar *uuid, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); gboolean exm_manager_install_finish (GObject *self, GAsyncResult *result, GError **error); G_END_DECLS extension-manager-0.6.3/src/local/meson.build000066400000000000000000000001661477302130300211720ustar00rootroot00000000000000exm_sources += files([ # Extension Management 'exm-manager.c', 'exm-extension.c', 'shell-dbus-interface.c' ]) extension-manager-0.6.3/src/local/org.gnome.Shell.Extensions.xml000066400000000000000000000044411477302130300246510ustar00rootroot00000000000000 extension-manager-0.6.3/src/local/regenerate-dbus.sh000077500000000000000000000002641477302130300224420ustar00rootroot00000000000000gdbus-codegen --interface-prefix org.gnome.Shell. \ --generate-c-code shell-dbus-interface \ --c-namespace Shell \ --c-generate-object-manager \ org.gnome.Shell.Extensions.xml extension-manager-0.6.3/src/local/shell-dbus-interface.c000066400000000000000000004734551477302130300232130ustar00rootroot00000000000000/* * This file is generated by gdbus-codegen, do not modify it. * * The license of this code is the same as for the D-Bus interface description * it was derived from. Note that it links to GLib, so must comply with the * LGPL linking clauses. */ #ifdef HAVE_CONFIG_H # include "config.h" #endif #include "shell-dbus-interface.h" #include #ifdef G_OS_UNIX # include #endif #ifdef G_ENABLE_DEBUG #define g_marshal_value_peek_boolean(v) g_value_get_boolean (v) #define g_marshal_value_peek_char(v) g_value_get_schar (v) #define g_marshal_value_peek_uchar(v) g_value_get_uchar (v) #define g_marshal_value_peek_int(v) g_value_get_int (v) #define g_marshal_value_peek_uint(v) g_value_get_uint (v) #define g_marshal_value_peek_long(v) g_value_get_long (v) #define g_marshal_value_peek_ulong(v) g_value_get_ulong (v) #define g_marshal_value_peek_int64(v) g_value_get_int64 (v) #define g_marshal_value_peek_uint64(v) g_value_get_uint64 (v) #define g_marshal_value_peek_enum(v) g_value_get_enum (v) #define g_marshal_value_peek_flags(v) g_value_get_flags (v) #define g_marshal_value_peek_float(v) g_value_get_float (v) #define g_marshal_value_peek_double(v) g_value_get_double (v) #define g_marshal_value_peek_string(v) (char*) g_value_get_string (v) #define g_marshal_value_peek_param(v) g_value_get_param (v) #define g_marshal_value_peek_boxed(v) g_value_get_boxed (v) #define g_marshal_value_peek_pointer(v) g_value_get_pointer (v) #define g_marshal_value_peek_object(v) g_value_get_object (v) #define g_marshal_value_peek_variant(v) g_value_get_variant (v) #else /* !G_ENABLE_DEBUG */ /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API. * Do not access GValues directly in your code. Instead, use the * g_value_get_*() functions */ #define g_marshal_value_peek_boolean(v) (v)->data[0].v_int #define g_marshal_value_peek_char(v) (v)->data[0].v_int #define g_marshal_value_peek_uchar(v) (v)->data[0].v_uint #define g_marshal_value_peek_int(v) (v)->data[0].v_int #define g_marshal_value_peek_uint(v) (v)->data[0].v_uint #define g_marshal_value_peek_long(v) (v)->data[0].v_long #define g_marshal_value_peek_ulong(v) (v)->data[0].v_ulong #define g_marshal_value_peek_int64(v) (v)->data[0].v_int64 #define g_marshal_value_peek_uint64(v) (v)->data[0].v_uint64 #define g_marshal_value_peek_enum(v) (v)->data[0].v_long #define g_marshal_value_peek_flags(v) (v)->data[0].v_ulong #define g_marshal_value_peek_float(v) (v)->data[0].v_float #define g_marshal_value_peek_double(v) (v)->data[0].v_double #define g_marshal_value_peek_string(v) (v)->data[0].v_pointer #define g_marshal_value_peek_param(v) (v)->data[0].v_pointer #define g_marshal_value_peek_boxed(v) (v)->data[0].v_pointer #define g_marshal_value_peek_pointer(v) (v)->data[0].v_pointer #define g_marshal_value_peek_object(v) (v)->data[0].v_pointer #define g_marshal_value_peek_variant(v) (v)->data[0].v_pointer #endif /* !G_ENABLE_DEBUG */ typedef struct { GDBusArgInfo parent_struct; gboolean use_gvariant; } _ExtendedGDBusArgInfo; typedef struct { GDBusMethodInfo parent_struct; const gchar *signal_name; gboolean pass_fdlist; } _ExtendedGDBusMethodInfo; typedef struct { GDBusSignalInfo parent_struct; const gchar *signal_name; } _ExtendedGDBusSignalInfo; typedef struct { GDBusPropertyInfo parent_struct; const gchar *hyphen_name; guint use_gvariant : 1; guint emits_changed_signal : 1; } _ExtendedGDBusPropertyInfo; typedef struct { GDBusInterfaceInfo parent_struct; const gchar *hyphen_name; } _ExtendedGDBusInterfaceInfo; typedef struct { const _ExtendedGDBusPropertyInfo *info; guint prop_id; GValue orig_value; /* the value before the change */ } ChangedProperty; static void _changed_property_free (ChangedProperty *data) { g_value_unset (&data->orig_value); g_free (data); } static gboolean _g_strv_equal0 (gchar **a, gchar **b) { gboolean ret = FALSE; guint n; if (a == NULL && b == NULL) { ret = TRUE; goto out; } if (a == NULL || b == NULL) goto out; if (g_strv_length (a) != g_strv_length (b)) goto out; for (n = 0; a[n] != NULL; n++) if (g_strcmp0 (a[n], b[n]) != 0) goto out; ret = TRUE; out: return ret; } static gboolean _g_variant_equal0 (GVariant *a, GVariant *b) { gboolean ret = FALSE; if (a == NULL && b == NULL) { ret = TRUE; goto out; } if (a == NULL || b == NULL) goto out; ret = g_variant_equal (a, b); out: return ret; } G_GNUC_UNUSED static gboolean _g_value_equal (const GValue *a, const GValue *b) { gboolean ret = FALSE; g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b)); switch (G_VALUE_TYPE (a)) { case G_TYPE_BOOLEAN: ret = (g_value_get_boolean (a) == g_value_get_boolean (b)); break; case G_TYPE_UCHAR: ret = (g_value_get_uchar (a) == g_value_get_uchar (b)); break; case G_TYPE_INT: ret = (g_value_get_int (a) == g_value_get_int (b)); break; case G_TYPE_UINT: ret = (g_value_get_uint (a) == g_value_get_uint (b)); break; case G_TYPE_INT64: ret = (g_value_get_int64 (a) == g_value_get_int64 (b)); break; case G_TYPE_UINT64: ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b)); break; case G_TYPE_DOUBLE: { /* Avoid -Wfloat-equal warnings by doing a direct bit compare */ gdouble da = g_value_get_double (a); gdouble db = g_value_get_double (b); ret = memcmp (&da, &db, sizeof (gdouble)) == 0; } break; case G_TYPE_STRING: ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0); break; case G_TYPE_VARIANT: ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b)); break; default: if (G_VALUE_TYPE (a) == G_TYPE_STRV) ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b)); else g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a))); break; } return ret; } static void _g_dbus_codegen_marshal_VOID__STRING_VARIANT ( GClosure *closure, GValue *return_value G_GNUC_UNUSED, unsigned int n_param_values, const GValue *param_values, void *invocation_hint G_GNUC_UNUSED, void *marshal_data) { typedef void (*_GDbusCodegenMarshalVoid_StringVariantFunc) (void *data1, const gchar *arg_uuid, GVariant *arg_state, void *data2); _GDbusCodegenMarshalVoid_StringVariantFunc callback; GCClosure *cc = (GCClosure*) closure; void *data1, *data2; g_return_if_fail (n_param_values == 3); 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 = (_GDbusCodegenMarshalVoid_StringVariantFunc) (marshal_data ? marshal_data : cc->callback); callback (data1, g_marshal_value_peek_string (param_values + 1), g_marshal_value_peek_variant (param_values + 2), data2); } static void _g_dbus_codegen_marshal_VOID__STRING_INT_STRING ( GClosure *closure, GValue *return_value G_GNUC_UNUSED, unsigned int n_param_values, const GValue *param_values, void *invocation_hint G_GNUC_UNUSED, void *marshal_data) { typedef void (*_GDbusCodegenMarshalVoid_StringIntStringFunc) (void *data1, const gchar *arg_uuid, gint arg_state, const gchar *arg_error, void *data2); _GDbusCodegenMarshalVoid_StringIntStringFunc callback; GCClosure *cc = (GCClosure*) closure; void *data1, *data2; g_return_if_fail (n_param_values == 4); 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 = (_GDbusCodegenMarshalVoid_StringIntStringFunc) (marshal_data ? marshal_data : cc->callback); callback (data1, g_marshal_value_peek_string (param_values + 1), g_marshal_value_peek_int (param_values + 2), g_marshal_value_peek_string (param_values + 3), data2); } static void _g_dbus_codegen_marshal_BOOLEAN__OBJECT ( GClosure *closure, GValue *return_value, unsigned int n_param_values, const GValue *param_values, void *invocation_hint G_GNUC_UNUSED, void *marshal_data) { typedef gboolean (*_GDbusCodegenMarshalBoolean_ObjectFunc) (void *data1, GDBusMethodInvocation *arg_method_invocation, void *data2); _GDbusCodegenMarshalBoolean_ObjectFunc callback; GCClosure *cc = (GCClosure*) closure; void *data1, *data2; gboolean v_return; g_return_if_fail (return_value != NULL); g_return_if_fail (n_param_values == 2); 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 = (_GDbusCodegenMarshalBoolean_ObjectFunc) (marshal_data ? marshal_data : cc->callback); v_return = callback (data1, g_marshal_value_peek_object (param_values + 1), data2); g_value_set_boolean (return_value, v_return); } static void _g_dbus_codegen_marshal_BOOLEAN__OBJECT_STRING ( GClosure *closure, GValue *return_value, unsigned int n_param_values, const GValue *param_values, void *invocation_hint G_GNUC_UNUSED, void *marshal_data) { typedef gboolean (*_GDbusCodegenMarshalBoolean_ObjectStringFunc) (void *data1, GDBusMethodInvocation *arg_method_invocation, const gchar *arg_uuid, void *data2); _GDbusCodegenMarshalBoolean_ObjectStringFunc callback; GCClosure *cc = (GCClosure*) closure; void *data1, *data2; gboolean v_return; g_return_if_fail (return_value != NULL); g_return_if_fail (n_param_values == 3); 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 = (_GDbusCodegenMarshalBoolean_ObjectStringFunc) (marshal_data ? marshal_data : cc->callback); v_return = callback (data1, g_marshal_value_peek_object (param_values + 1), g_marshal_value_peek_string (param_values + 2), data2); g_value_set_boolean (return_value, v_return); } static void _g_dbus_codegen_marshal_BOOLEAN__OBJECT_STRING_STRING_VARIANT ( GClosure *closure, GValue *return_value, unsigned int n_param_values, const GValue *param_values, void *invocation_hint G_GNUC_UNUSED, void *marshal_data) { typedef gboolean (*_GDbusCodegenMarshalBoolean_ObjectStringStringVariantFunc) (void *data1, GDBusMethodInvocation *arg_method_invocation, const gchar *arg_uuid, const gchar *arg_parent_window, GVariant *arg_options, void *data2); _GDbusCodegenMarshalBoolean_ObjectStringStringVariantFunc callback; GCClosure *cc = (GCClosure*) closure; void *data1, *data2; gboolean v_return; g_return_if_fail (return_value != NULL); g_return_if_fail (n_param_values == 5); 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 = (_GDbusCodegenMarshalBoolean_ObjectStringStringVariantFunc) (marshal_data ? marshal_data : cc->callback); v_return = callback (data1, g_marshal_value_peek_object (param_values + 1), g_marshal_value_peek_string (param_values + 2), g_marshal_value_peek_string (param_values + 3), g_marshal_value_peek_variant (param_values + 4), data2); g_value_set_boolean (return_value, v_return); } /* ------------------------------------------------------------------------ * Code for interface org.gnome.Shell.Extensions * ------------------------------------------------------------------------ */ /** * SECTION:ShellExtensions * @title: ShellExtensions * @short_description: Generated C code for the org.gnome.Shell.Extensions D-Bus interface * * This section contains code for working with the org.gnome.Shell.Extensions D-Bus interface in C. */ enum { SHELL__EXTENSIONS_EXTENSION_STATE_CHANGED, SHELL__EXTENSIONS_EXTENSION_STATUS_CHANGED, }; static unsigned SHELL__EXTENSIONS_SIGNALS[2] = { 0 }; /* ---- Introspection data for org.gnome.Shell.Extensions ---- */ static const _ExtendedGDBusArgInfo _shell_extensions_method_info_list_extensions_OUT_ARG_extensions = { { -1, (gchar *) "extensions", (gchar *) "a{sa{sv}}", NULL }, FALSE }; static const GDBusArgInfo * const _shell_extensions_method_info_list_extensions_OUT_ARG_pointers[] = { &_shell_extensions_method_info_list_extensions_OUT_ARG_extensions.parent_struct, NULL }; static const _ExtendedGDBusMethodInfo _shell_extensions_method_info_list_extensions = { { -1, (gchar *) "ListExtensions", NULL, (GDBusArgInfo **) &_shell_extensions_method_info_list_extensions_OUT_ARG_pointers, NULL }, "handle-list-extensions", FALSE }; static const _ExtendedGDBusArgInfo _shell_extensions_method_info_get_extension_info_IN_ARG_uuid = { { -1, (gchar *) "uuid", (gchar *) "s", NULL }, FALSE }; static const GDBusArgInfo * const _shell_extensions_method_info_get_extension_info_IN_ARG_pointers[] = { &_shell_extensions_method_info_get_extension_info_IN_ARG_uuid.parent_struct, NULL }; static const _ExtendedGDBusArgInfo _shell_extensions_method_info_get_extension_info_OUT_ARG_info = { { -1, (gchar *) "info", (gchar *) "a{sv}", NULL }, FALSE }; static const GDBusArgInfo * const _shell_extensions_method_info_get_extension_info_OUT_ARG_pointers[] = { &_shell_extensions_method_info_get_extension_info_OUT_ARG_info.parent_struct, NULL }; static const _ExtendedGDBusMethodInfo _shell_extensions_method_info_get_extension_info = { { -1, (gchar *) "GetExtensionInfo", (GDBusArgInfo **) &_shell_extensions_method_info_get_extension_info_IN_ARG_pointers, (GDBusArgInfo **) &_shell_extensions_method_info_get_extension_info_OUT_ARG_pointers, NULL }, "handle-get-extension-info", FALSE }; static const _ExtendedGDBusArgInfo _shell_extensions_method_info_get_extension_errors_IN_ARG_uuid = { { -1, (gchar *) "uuid", (gchar *) "s", NULL }, FALSE }; static const GDBusArgInfo * const _shell_extensions_method_info_get_extension_errors_IN_ARG_pointers[] = { &_shell_extensions_method_info_get_extension_errors_IN_ARG_uuid.parent_struct, NULL }; static const _ExtendedGDBusArgInfo _shell_extensions_method_info_get_extension_errors_OUT_ARG_errors = { { -1, (gchar *) "errors", (gchar *) "as", NULL }, FALSE }; static const GDBusArgInfo * const _shell_extensions_method_info_get_extension_errors_OUT_ARG_pointers[] = { &_shell_extensions_method_info_get_extension_errors_OUT_ARG_errors.parent_struct, NULL }; static const _ExtendedGDBusMethodInfo _shell_extensions_method_info_get_extension_errors = { { -1, (gchar *) "GetExtensionErrors", (GDBusArgInfo **) &_shell_extensions_method_info_get_extension_errors_IN_ARG_pointers, (GDBusArgInfo **) &_shell_extensions_method_info_get_extension_errors_OUT_ARG_pointers, NULL }, "handle-get-extension-errors", FALSE }; static const _ExtendedGDBusArgInfo _shell_extensions_method_info_install_remote_extension_IN_ARG_uuid = { { -1, (gchar *) "uuid", (gchar *) "s", NULL }, FALSE }; static const GDBusArgInfo * const _shell_extensions_method_info_install_remote_extension_IN_ARG_pointers[] = { &_shell_extensions_method_info_install_remote_extension_IN_ARG_uuid.parent_struct, NULL }; static const _ExtendedGDBusArgInfo _shell_extensions_method_info_install_remote_extension_OUT_ARG_result = { { -1, (gchar *) "result", (gchar *) "s", NULL }, FALSE }; static const GDBusArgInfo * const _shell_extensions_method_info_install_remote_extension_OUT_ARG_pointers[] = { &_shell_extensions_method_info_install_remote_extension_OUT_ARG_result.parent_struct, NULL }; static const _ExtendedGDBusMethodInfo _shell_extensions_method_info_install_remote_extension = { { -1, (gchar *) "InstallRemoteExtension", (GDBusArgInfo **) &_shell_extensions_method_info_install_remote_extension_IN_ARG_pointers, (GDBusArgInfo **) &_shell_extensions_method_info_install_remote_extension_OUT_ARG_pointers, NULL }, "handle-install-remote-extension", FALSE }; static const _ExtendedGDBusArgInfo _shell_extensions_method_info_uninstall_extension_IN_ARG_uuid = { { -1, (gchar *) "uuid", (gchar *) "s", NULL }, FALSE }; static const GDBusArgInfo * const _shell_extensions_method_info_uninstall_extension_IN_ARG_pointers[] = { &_shell_extensions_method_info_uninstall_extension_IN_ARG_uuid.parent_struct, NULL }; static const _ExtendedGDBusArgInfo _shell_extensions_method_info_uninstall_extension_OUT_ARG_success = { { -1, (gchar *) "success", (gchar *) "b", NULL }, FALSE }; static const GDBusArgInfo * const _shell_extensions_method_info_uninstall_extension_OUT_ARG_pointers[] = { &_shell_extensions_method_info_uninstall_extension_OUT_ARG_success.parent_struct, NULL }; static const _ExtendedGDBusMethodInfo _shell_extensions_method_info_uninstall_extension = { { -1, (gchar *) "UninstallExtension", (GDBusArgInfo **) &_shell_extensions_method_info_uninstall_extension_IN_ARG_pointers, (GDBusArgInfo **) &_shell_extensions_method_info_uninstall_extension_OUT_ARG_pointers, NULL }, "handle-uninstall-extension", FALSE }; static const _ExtendedGDBusArgInfo _shell_extensions_method_info_reload_extension_IN_ARG_uuid = { { -1, (gchar *) "uuid", (gchar *) "s", NULL }, FALSE }; static const GDBusArgInfo * const _shell_extensions_method_info_reload_extension_IN_ARG_pointers[] = { &_shell_extensions_method_info_reload_extension_IN_ARG_uuid.parent_struct, NULL }; static const _ExtendedGDBusMethodInfo _shell_extensions_method_info_reload_extension = { { -1, (gchar *) "ReloadExtension", (GDBusArgInfo **) &_shell_extensions_method_info_reload_extension_IN_ARG_pointers, NULL, NULL }, "handle-reload-extension", FALSE }; static const _ExtendedGDBusArgInfo _shell_extensions_method_info_enable_extension_IN_ARG_uuid = { { -1, (gchar *) "uuid", (gchar *) "s", NULL }, FALSE }; static const GDBusArgInfo * const _shell_extensions_method_info_enable_extension_IN_ARG_pointers[] = { &_shell_extensions_method_info_enable_extension_IN_ARG_uuid.parent_struct, NULL }; static const _ExtendedGDBusArgInfo _shell_extensions_method_info_enable_extension_OUT_ARG_success = { { -1, (gchar *) "success", (gchar *) "b", NULL }, FALSE }; static const GDBusArgInfo * const _shell_extensions_method_info_enable_extension_OUT_ARG_pointers[] = { &_shell_extensions_method_info_enable_extension_OUT_ARG_success.parent_struct, NULL }; static const _ExtendedGDBusMethodInfo _shell_extensions_method_info_enable_extension = { { -1, (gchar *) "EnableExtension", (GDBusArgInfo **) &_shell_extensions_method_info_enable_extension_IN_ARG_pointers, (GDBusArgInfo **) &_shell_extensions_method_info_enable_extension_OUT_ARG_pointers, NULL }, "handle-enable-extension", FALSE }; static const _ExtendedGDBusArgInfo _shell_extensions_method_info_disable_extension_IN_ARG_uuid = { { -1, (gchar *) "uuid", (gchar *) "s", NULL }, FALSE }; static const GDBusArgInfo * const _shell_extensions_method_info_disable_extension_IN_ARG_pointers[] = { &_shell_extensions_method_info_disable_extension_IN_ARG_uuid.parent_struct, NULL }; static const _ExtendedGDBusArgInfo _shell_extensions_method_info_disable_extension_OUT_ARG_success = { { -1, (gchar *) "success", (gchar *) "b", NULL }, FALSE }; static const GDBusArgInfo * const _shell_extensions_method_info_disable_extension_OUT_ARG_pointers[] = { &_shell_extensions_method_info_disable_extension_OUT_ARG_success.parent_struct, NULL }; static const _ExtendedGDBusMethodInfo _shell_extensions_method_info_disable_extension = { { -1, (gchar *) "DisableExtension", (GDBusArgInfo **) &_shell_extensions_method_info_disable_extension_IN_ARG_pointers, (GDBusArgInfo **) &_shell_extensions_method_info_disable_extension_OUT_ARG_pointers, NULL }, "handle-disable-extension", FALSE }; static const _ExtendedGDBusArgInfo _shell_extensions_method_info_launch_extension_prefs_IN_ARG_uuid = { { -1, (gchar *) "uuid", (gchar *) "s", NULL }, FALSE }; static const GDBusArgInfo * const _shell_extensions_method_info_launch_extension_prefs_IN_ARG_pointers[] = { &_shell_extensions_method_info_launch_extension_prefs_IN_ARG_uuid.parent_struct, NULL }; static const _ExtendedGDBusMethodInfo _shell_extensions_method_info_launch_extension_prefs = { { -1, (gchar *) "LaunchExtensionPrefs", (GDBusArgInfo **) &_shell_extensions_method_info_launch_extension_prefs_IN_ARG_pointers, NULL, NULL }, "handle-launch-extension-prefs", FALSE }; static const _ExtendedGDBusArgInfo _shell_extensions_method_info_open_extension_prefs_IN_ARG_uuid = { { -1, (gchar *) "uuid", (gchar *) "s", NULL }, FALSE }; static const _ExtendedGDBusArgInfo _shell_extensions_method_info_open_extension_prefs_IN_ARG_parent_window = { { -1, (gchar *) "parent_window", (gchar *) "s", NULL }, FALSE }; static const _ExtendedGDBusArgInfo _shell_extensions_method_info_open_extension_prefs_IN_ARG_options = { { -1, (gchar *) "options", (gchar *) "a{sv}", NULL }, FALSE }; static const GDBusArgInfo * const _shell_extensions_method_info_open_extension_prefs_IN_ARG_pointers[] = { &_shell_extensions_method_info_open_extension_prefs_IN_ARG_uuid.parent_struct, &_shell_extensions_method_info_open_extension_prefs_IN_ARG_parent_window.parent_struct, &_shell_extensions_method_info_open_extension_prefs_IN_ARG_options.parent_struct, NULL }; static const _ExtendedGDBusMethodInfo _shell_extensions_method_info_open_extension_prefs = { { -1, (gchar *) "OpenExtensionPrefs", (GDBusArgInfo **) &_shell_extensions_method_info_open_extension_prefs_IN_ARG_pointers, NULL, NULL }, "handle-open-extension-prefs", FALSE }; static const _ExtendedGDBusMethodInfo _shell_extensions_method_info_check_for_updates = { { -1, (gchar *) "CheckForUpdates", NULL, NULL, NULL }, "handle-check-for-updates", FALSE }; static const GDBusMethodInfo * const _shell_extensions_method_info_pointers[] = { &_shell_extensions_method_info_list_extensions.parent_struct, &_shell_extensions_method_info_get_extension_info.parent_struct, &_shell_extensions_method_info_get_extension_errors.parent_struct, &_shell_extensions_method_info_install_remote_extension.parent_struct, &_shell_extensions_method_info_uninstall_extension.parent_struct, &_shell_extensions_method_info_reload_extension.parent_struct, &_shell_extensions_method_info_enable_extension.parent_struct, &_shell_extensions_method_info_disable_extension.parent_struct, &_shell_extensions_method_info_launch_extension_prefs.parent_struct, &_shell_extensions_method_info_open_extension_prefs.parent_struct, &_shell_extensions_method_info_check_for_updates.parent_struct, NULL }; static const _ExtendedGDBusArgInfo _shell_extensions_signal_info_extension_state_changed_ARG_uuid = { { -1, (gchar *) "uuid", (gchar *) "s", NULL }, FALSE }; static const _ExtendedGDBusArgInfo _shell_extensions_signal_info_extension_state_changed_ARG_state = { { -1, (gchar *) "state", (gchar *) "a{sv}", NULL }, FALSE }; static const GDBusArgInfo * const _shell_extensions_signal_info_extension_state_changed_ARG_pointers[] = { &_shell_extensions_signal_info_extension_state_changed_ARG_uuid.parent_struct, &_shell_extensions_signal_info_extension_state_changed_ARG_state.parent_struct, NULL }; static const _ExtendedGDBusSignalInfo _shell_extensions_signal_info_extension_state_changed = { { -1, (gchar *) "ExtensionStateChanged", (GDBusArgInfo **) &_shell_extensions_signal_info_extension_state_changed_ARG_pointers, NULL }, "extension-state-changed" }; static const _ExtendedGDBusArgInfo _shell_extensions_signal_info_extension_status_changed_ARG_uuid = { { -1, (gchar *) "uuid", (gchar *) "s", NULL }, FALSE }; static const _ExtendedGDBusArgInfo _shell_extensions_signal_info_extension_status_changed_ARG_state = { { -1, (gchar *) "state", (gchar *) "i", NULL }, FALSE }; static const _ExtendedGDBusArgInfo _shell_extensions_signal_info_extension_status_changed_ARG_error = { { -1, (gchar *) "error", (gchar *) "s", NULL }, FALSE }; static const GDBusArgInfo * const _shell_extensions_signal_info_extension_status_changed_ARG_pointers[] = { &_shell_extensions_signal_info_extension_status_changed_ARG_uuid.parent_struct, &_shell_extensions_signal_info_extension_status_changed_ARG_state.parent_struct, &_shell_extensions_signal_info_extension_status_changed_ARG_error.parent_struct, NULL }; static const _ExtendedGDBusSignalInfo _shell_extensions_signal_info_extension_status_changed = { { -1, (gchar *) "ExtensionStatusChanged", (GDBusArgInfo **) &_shell_extensions_signal_info_extension_status_changed_ARG_pointers, NULL }, "extension-status-changed" }; static const GDBusSignalInfo * const _shell_extensions_signal_info_pointers[] = { &_shell_extensions_signal_info_extension_state_changed.parent_struct, &_shell_extensions_signal_info_extension_status_changed.parent_struct, NULL }; static const _ExtendedGDBusPropertyInfo _shell_extensions_property_info_shell_version = { { -1, (gchar *) "ShellVersion", (gchar *) "s", G_DBUS_PROPERTY_INFO_FLAGS_READABLE, NULL }, "shell-version", FALSE, TRUE }; static const _ExtendedGDBusPropertyInfo _shell_extensions_property_info_user_extensions_enabled = { { -1, (gchar *) "UserExtensionsEnabled", (gchar *) "b", G_DBUS_PROPERTY_INFO_FLAGS_READABLE | G_DBUS_PROPERTY_INFO_FLAGS_WRITABLE, NULL }, "user-extensions-enabled", FALSE, TRUE }; static const GDBusPropertyInfo * const _shell_extensions_property_info_pointers[] = { &_shell_extensions_property_info_shell_version.parent_struct, &_shell_extensions_property_info_user_extensions_enabled.parent_struct, NULL }; static const _ExtendedGDBusInterfaceInfo _shell_extensions_interface_info = { { -1, (gchar *) "org.gnome.Shell.Extensions", (GDBusMethodInfo **) &_shell_extensions_method_info_pointers, (GDBusSignalInfo **) &_shell_extensions_signal_info_pointers, (GDBusPropertyInfo **) &_shell_extensions_property_info_pointers, NULL }, "extensions", }; /** * shell_extensions_interface_info: * * Gets a machine-readable description of the org.gnome.Shell.Extensions D-Bus interface. * * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free. */ GDBusInterfaceInfo * shell_extensions_interface_info (void) { return (GDBusInterfaceInfo *) &_shell_extensions_interface_info.parent_struct; } /** * shell_extensions_override_properties: * @klass: The class structure for a #GObject derived class. * @property_id_begin: The property id to assign to the first overridden property. * * Overrides all #GObject properties in the #ShellExtensions interface for a concrete class. * The properties are overridden in the order they are defined. * * Returns: The last property id. */ guint shell_extensions_override_properties (GObjectClass *klass, guint property_id_begin) { g_object_class_override_property (klass, property_id_begin++, "shell-version"); g_object_class_override_property (klass, property_id_begin++, "user-extensions-enabled"); return property_id_begin - 1; } inline static void shell_extensions_signal_marshal_extension_state_changed ( GClosure *closure, GValue *return_value, unsigned int n_param_values, const GValue *param_values, void *invocation_hint, void *marshal_data) { _g_dbus_codegen_marshal_VOID__STRING_VARIANT (closure, return_value, n_param_values, param_values, invocation_hint, marshal_data); } inline static void shell_extensions_signal_marshal_extension_status_changed ( GClosure *closure, GValue *return_value, unsigned int n_param_values, const GValue *param_values, void *invocation_hint, void *marshal_data) { _g_dbus_codegen_marshal_VOID__STRING_INT_STRING (closure, return_value, n_param_values, param_values, invocation_hint, marshal_data); } inline static void shell_extensions_method_marshal_list_extensions ( GClosure *closure, GValue *return_value, unsigned int n_param_values, const GValue *param_values, void *invocation_hint, void *marshal_data) { _g_dbus_codegen_marshal_BOOLEAN__OBJECT (closure, return_value, n_param_values, param_values, invocation_hint, marshal_data); } inline static void shell_extensions_method_marshal_get_extension_info ( GClosure *closure, GValue *return_value, unsigned int n_param_values, const GValue *param_values, void *invocation_hint, void *marshal_data) { _g_dbus_codegen_marshal_BOOLEAN__OBJECT_STRING (closure, return_value, n_param_values, param_values, invocation_hint, marshal_data); } inline static void shell_extensions_method_marshal_get_extension_errors ( GClosure *closure, GValue *return_value, unsigned int n_param_values, const GValue *param_values, void *invocation_hint, void *marshal_data) { _g_dbus_codegen_marshal_BOOLEAN__OBJECT_STRING (closure, return_value, n_param_values, param_values, invocation_hint, marshal_data); } inline static void shell_extensions_method_marshal_install_remote_extension ( GClosure *closure, GValue *return_value, unsigned int n_param_values, const GValue *param_values, void *invocation_hint, void *marshal_data) { _g_dbus_codegen_marshal_BOOLEAN__OBJECT_STRING (closure, return_value, n_param_values, param_values, invocation_hint, marshal_data); } inline static void shell_extensions_method_marshal_uninstall_extension ( GClosure *closure, GValue *return_value, unsigned int n_param_values, const GValue *param_values, void *invocation_hint, void *marshal_data) { _g_dbus_codegen_marshal_BOOLEAN__OBJECT_STRING (closure, return_value, n_param_values, param_values, invocation_hint, marshal_data); } inline static void shell_extensions_method_marshal_reload_extension ( GClosure *closure, GValue *return_value, unsigned int n_param_values, const GValue *param_values, void *invocation_hint, void *marshal_data) { _g_dbus_codegen_marshal_BOOLEAN__OBJECT_STRING (closure, return_value, n_param_values, param_values, invocation_hint, marshal_data); } inline static void shell_extensions_method_marshal_enable_extension ( GClosure *closure, GValue *return_value, unsigned int n_param_values, const GValue *param_values, void *invocation_hint, void *marshal_data) { _g_dbus_codegen_marshal_BOOLEAN__OBJECT_STRING (closure, return_value, n_param_values, param_values, invocation_hint, marshal_data); } inline static void shell_extensions_method_marshal_disable_extension ( GClosure *closure, GValue *return_value, unsigned int n_param_values, const GValue *param_values, void *invocation_hint, void *marshal_data) { _g_dbus_codegen_marshal_BOOLEAN__OBJECT_STRING (closure, return_value, n_param_values, param_values, invocation_hint, marshal_data); } inline static void shell_extensions_method_marshal_launch_extension_prefs ( GClosure *closure, GValue *return_value, unsigned int n_param_values, const GValue *param_values, void *invocation_hint, void *marshal_data) { _g_dbus_codegen_marshal_BOOLEAN__OBJECT_STRING (closure, return_value, n_param_values, param_values, invocation_hint, marshal_data); } inline static void shell_extensions_method_marshal_open_extension_prefs ( GClosure *closure, GValue *return_value, unsigned int n_param_values, const GValue *param_values, void *invocation_hint, void *marshal_data) { _g_dbus_codegen_marshal_BOOLEAN__OBJECT_STRING_STRING_VARIANT (closure, return_value, n_param_values, param_values, invocation_hint, marshal_data); } inline static void shell_extensions_method_marshal_check_for_updates ( GClosure *closure, GValue *return_value, unsigned int n_param_values, const GValue *param_values, void *invocation_hint, void *marshal_data) { _g_dbus_codegen_marshal_BOOLEAN__OBJECT (closure, return_value, n_param_values, param_values, invocation_hint, marshal_data); } /** * ShellExtensions: * * Abstract interface type for the D-Bus interface org.gnome.Shell.Extensions. */ /** * ShellExtensionsIface: * @parent_iface: The parent interface. * @handle_check_for_updates: Handler for the #ShellExtensions::handle-check-for-updates signal. * @handle_disable_extension: Handler for the #ShellExtensions::handle-disable-extension signal. * @handle_enable_extension: Handler for the #ShellExtensions::handle-enable-extension signal. * @handle_get_extension_errors: Handler for the #ShellExtensions::handle-get-extension-errors signal. * @handle_get_extension_info: Handler for the #ShellExtensions::handle-get-extension-info signal. * @handle_install_remote_extension: Handler for the #ShellExtensions::handle-install-remote-extension signal. * @handle_launch_extension_prefs: Handler for the #ShellExtensions::handle-launch-extension-prefs signal. * @handle_list_extensions: Handler for the #ShellExtensions::handle-list-extensions signal. * @handle_open_extension_prefs: Handler for the #ShellExtensions::handle-open-extension-prefs signal. * @handle_reload_extension: Handler for the #ShellExtensions::handle-reload-extension signal. * @handle_uninstall_extension: Handler for the #ShellExtensions::handle-uninstall-extension signal. * @get_shell_version: Getter for the #ShellExtensions:shell-version property. * @get_user_extensions_enabled: Getter for the #ShellExtensions:user-extensions-enabled property. * @extension_state_changed: Handler for the #ShellExtensions::extension-state-changed signal. * @extension_status_changed: Handler for the #ShellExtensions::extension-status-changed signal. * * Virtual table for the D-Bus interface org.gnome.Shell.Extensions. */ typedef ShellExtensionsIface ShellExtensionsInterface; G_DEFINE_INTERFACE (ShellExtensions, shell_extensions, G_TYPE_OBJECT) static void shell_extensions_default_init (ShellExtensionsIface *iface) { /* GObject signals for incoming D-Bus method calls: */ /** * ShellExtensions::handle-list-extensions: * @object: A #ShellExtensions. * @invocation: A #GDBusMethodInvocation. * * Signal emitted when a remote caller is invoking the ListExtensions() D-Bus method. * * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call shell_extensions_complete_list_extensions() or e.g. g_dbus_method_invocation_return_error() on it) and no other signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned. * * Returns: %G_DBUS_METHOD_INVOCATION_HANDLED or %TRUE if the invocation was handled, %G_DBUS_METHOD_INVOCATION_UNHANDLED or %FALSE to let other signal handlers run. */ g_signal_new ("handle-list-extensions", G_TYPE_FROM_INTERFACE (iface), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (ShellExtensionsIface, handle_list_extensions), g_signal_accumulator_true_handled, NULL, shell_extensions_method_marshal_list_extensions, G_TYPE_BOOLEAN, 1, G_TYPE_DBUS_METHOD_INVOCATION); /** * ShellExtensions::handle-get-extension-info: * @object: A #ShellExtensions. * @invocation: A #GDBusMethodInvocation. * @arg_uuid: Argument passed by remote caller. * * Signal emitted when a remote caller is invoking the GetExtensionInfo() D-Bus method. * * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call shell_extensions_complete_get_extension_info() or e.g. g_dbus_method_invocation_return_error() on it) and no other signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned. * * Returns: %G_DBUS_METHOD_INVOCATION_HANDLED or %TRUE if the invocation was handled, %G_DBUS_METHOD_INVOCATION_UNHANDLED or %FALSE to let other signal handlers run. */ g_signal_new ("handle-get-extension-info", G_TYPE_FROM_INTERFACE (iface), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (ShellExtensionsIface, handle_get_extension_info), g_signal_accumulator_true_handled, NULL, shell_extensions_method_marshal_get_extension_info, G_TYPE_BOOLEAN, 2, G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING); /** * ShellExtensions::handle-get-extension-errors: * @object: A #ShellExtensions. * @invocation: A #GDBusMethodInvocation. * @arg_uuid: Argument passed by remote caller. * * Signal emitted when a remote caller is invoking the GetExtensionErrors() D-Bus method. * * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call shell_extensions_complete_get_extension_errors() or e.g. g_dbus_method_invocation_return_error() on it) and no other signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned. * * Returns: %G_DBUS_METHOD_INVOCATION_HANDLED or %TRUE if the invocation was handled, %G_DBUS_METHOD_INVOCATION_UNHANDLED or %FALSE to let other signal handlers run. */ g_signal_new ("handle-get-extension-errors", G_TYPE_FROM_INTERFACE (iface), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (ShellExtensionsIface, handle_get_extension_errors), g_signal_accumulator_true_handled, NULL, shell_extensions_method_marshal_get_extension_errors, G_TYPE_BOOLEAN, 2, G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING); /** * ShellExtensions::handle-install-remote-extension: * @object: A #ShellExtensions. * @invocation: A #GDBusMethodInvocation. * @arg_uuid: Argument passed by remote caller. * * Signal emitted when a remote caller is invoking the InstallRemoteExtension() D-Bus method. * * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call shell_extensions_complete_install_remote_extension() or e.g. g_dbus_method_invocation_return_error() on it) and no other signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned. * * Returns: %G_DBUS_METHOD_INVOCATION_HANDLED or %TRUE if the invocation was handled, %G_DBUS_METHOD_INVOCATION_UNHANDLED or %FALSE to let other signal handlers run. */ g_signal_new ("handle-install-remote-extension", G_TYPE_FROM_INTERFACE (iface), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (ShellExtensionsIface, handle_install_remote_extension), g_signal_accumulator_true_handled, NULL, shell_extensions_method_marshal_install_remote_extension, G_TYPE_BOOLEAN, 2, G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING); /** * ShellExtensions::handle-uninstall-extension: * @object: A #ShellExtensions. * @invocation: A #GDBusMethodInvocation. * @arg_uuid: Argument passed by remote caller. * * Signal emitted when a remote caller is invoking the UninstallExtension() D-Bus method. * * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call shell_extensions_complete_uninstall_extension() or e.g. g_dbus_method_invocation_return_error() on it) and no other signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned. * * Returns: %G_DBUS_METHOD_INVOCATION_HANDLED or %TRUE if the invocation was handled, %G_DBUS_METHOD_INVOCATION_UNHANDLED or %FALSE to let other signal handlers run. */ g_signal_new ("handle-uninstall-extension", G_TYPE_FROM_INTERFACE (iface), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (ShellExtensionsIface, handle_uninstall_extension), g_signal_accumulator_true_handled, NULL, shell_extensions_method_marshal_uninstall_extension, G_TYPE_BOOLEAN, 2, G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING); /** * ShellExtensions::handle-reload-extension: * @object: A #ShellExtensions. * @invocation: A #GDBusMethodInvocation. * @arg_uuid: Argument passed by remote caller. * * Signal emitted when a remote caller is invoking the ReloadExtension() D-Bus method. * * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call shell_extensions_complete_reload_extension() or e.g. g_dbus_method_invocation_return_error() on it) and no other signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned. * * Returns: %G_DBUS_METHOD_INVOCATION_HANDLED or %TRUE if the invocation was handled, %G_DBUS_METHOD_INVOCATION_UNHANDLED or %FALSE to let other signal handlers run. */ g_signal_new ("handle-reload-extension", G_TYPE_FROM_INTERFACE (iface), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (ShellExtensionsIface, handle_reload_extension), g_signal_accumulator_true_handled, NULL, shell_extensions_method_marshal_reload_extension, G_TYPE_BOOLEAN, 2, G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING); /** * ShellExtensions::handle-enable-extension: * @object: A #ShellExtensions. * @invocation: A #GDBusMethodInvocation. * @arg_uuid: Argument passed by remote caller. * * Signal emitted when a remote caller is invoking the EnableExtension() D-Bus method. * * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call shell_extensions_complete_enable_extension() or e.g. g_dbus_method_invocation_return_error() on it) and no other signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned. * * Returns: %G_DBUS_METHOD_INVOCATION_HANDLED or %TRUE if the invocation was handled, %G_DBUS_METHOD_INVOCATION_UNHANDLED or %FALSE to let other signal handlers run. */ g_signal_new ("handle-enable-extension", G_TYPE_FROM_INTERFACE (iface), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (ShellExtensionsIface, handle_enable_extension), g_signal_accumulator_true_handled, NULL, shell_extensions_method_marshal_enable_extension, G_TYPE_BOOLEAN, 2, G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING); /** * ShellExtensions::handle-disable-extension: * @object: A #ShellExtensions. * @invocation: A #GDBusMethodInvocation. * @arg_uuid: Argument passed by remote caller. * * Signal emitted when a remote caller is invoking the DisableExtension() D-Bus method. * * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call shell_extensions_complete_disable_extension() or e.g. g_dbus_method_invocation_return_error() on it) and no other signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned. * * Returns: %G_DBUS_METHOD_INVOCATION_HANDLED or %TRUE if the invocation was handled, %G_DBUS_METHOD_INVOCATION_UNHANDLED or %FALSE to let other signal handlers run. */ g_signal_new ("handle-disable-extension", G_TYPE_FROM_INTERFACE (iface), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (ShellExtensionsIface, handle_disable_extension), g_signal_accumulator_true_handled, NULL, shell_extensions_method_marshal_disable_extension, G_TYPE_BOOLEAN, 2, G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING); /** * ShellExtensions::handle-launch-extension-prefs: * @object: A #ShellExtensions. * @invocation: A #GDBusMethodInvocation. * @arg_uuid: Argument passed by remote caller. * * Signal emitted when a remote caller is invoking the LaunchExtensionPrefs() D-Bus method. * * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call shell_extensions_complete_launch_extension_prefs() or e.g. g_dbus_method_invocation_return_error() on it) and no other signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned. * * Returns: %G_DBUS_METHOD_INVOCATION_HANDLED or %TRUE if the invocation was handled, %G_DBUS_METHOD_INVOCATION_UNHANDLED or %FALSE to let other signal handlers run. */ g_signal_new ("handle-launch-extension-prefs", G_TYPE_FROM_INTERFACE (iface), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (ShellExtensionsIface, handle_launch_extension_prefs), g_signal_accumulator_true_handled, NULL, shell_extensions_method_marshal_launch_extension_prefs, G_TYPE_BOOLEAN, 2, G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING); /** * ShellExtensions::handle-open-extension-prefs: * @object: A #ShellExtensions. * @invocation: A #GDBusMethodInvocation. * @arg_uuid: Argument passed by remote caller. * @arg_parent_window: Argument passed by remote caller. * @arg_options: Argument passed by remote caller. * * Signal emitted when a remote caller is invoking the OpenExtensionPrefs() D-Bus method. * * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call shell_extensions_complete_open_extension_prefs() or e.g. g_dbus_method_invocation_return_error() on it) and no other signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned. * * Returns: %G_DBUS_METHOD_INVOCATION_HANDLED or %TRUE if the invocation was handled, %G_DBUS_METHOD_INVOCATION_UNHANDLED or %FALSE to let other signal handlers run. */ g_signal_new ("handle-open-extension-prefs", G_TYPE_FROM_INTERFACE (iface), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (ShellExtensionsIface, handle_open_extension_prefs), g_signal_accumulator_true_handled, NULL, shell_extensions_method_marshal_open_extension_prefs, G_TYPE_BOOLEAN, 4, G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_VARIANT); /** * ShellExtensions::handle-check-for-updates: * @object: A #ShellExtensions. * @invocation: A #GDBusMethodInvocation. * * Signal emitted when a remote caller is invoking the CheckForUpdates() D-Bus method. * * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call shell_extensions_complete_check_for_updates() or e.g. g_dbus_method_invocation_return_error() on it) and no other signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned. * * Returns: %G_DBUS_METHOD_INVOCATION_HANDLED or %TRUE if the invocation was handled, %G_DBUS_METHOD_INVOCATION_UNHANDLED or %FALSE to let other signal handlers run. */ g_signal_new ("handle-check-for-updates", G_TYPE_FROM_INTERFACE (iface), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (ShellExtensionsIface, handle_check_for_updates), g_signal_accumulator_true_handled, NULL, shell_extensions_method_marshal_check_for_updates, G_TYPE_BOOLEAN, 1, G_TYPE_DBUS_METHOD_INVOCATION); /* GObject signals for received D-Bus signals: */ /** * ShellExtensions::extension-state-changed: * @object: A #ShellExtensions. * @arg_uuid: Argument. * @arg_state: Argument. * * On the client-side, this signal is emitted whenever the D-Bus signal "ExtensionStateChanged" is received. * * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal. */ SHELL__EXTENSIONS_SIGNALS[SHELL__EXTENSIONS_EXTENSION_STATE_CHANGED] = g_signal_new ("extension-state-changed", G_TYPE_FROM_INTERFACE (iface), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (ShellExtensionsIface, extension_state_changed), NULL, NULL, shell_extensions_signal_marshal_extension_state_changed, G_TYPE_NONE, 2, G_TYPE_STRING, G_TYPE_VARIANT); /** * ShellExtensions::extension-status-changed: * @object: A #ShellExtensions. * @arg_uuid: Argument. * @arg_state: Argument. * @arg_error: Argument. * * On the client-side, this signal is emitted whenever the D-Bus signal "ExtensionStatusChanged" is received. * * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal. */ SHELL__EXTENSIONS_SIGNALS[SHELL__EXTENSIONS_EXTENSION_STATUS_CHANGED] = g_signal_new ("extension-status-changed", G_TYPE_FROM_INTERFACE (iface), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (ShellExtensionsIface, extension_status_changed), NULL, NULL, shell_extensions_signal_marshal_extension_status_changed, G_TYPE_NONE, 3, G_TYPE_STRING, G_TYPE_INT, G_TYPE_STRING); /* GObject properties for D-Bus properties: */ /** * ShellExtensions:shell-version: * * Represents the D-Bus property "ShellVersion". * * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side. */ g_object_interface_install_property (iface, g_param_spec_string ("shell-version", "ShellVersion", "ShellVersion", NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); /** * ShellExtensions:user-extensions-enabled: * * Represents the D-Bus property "UserExtensionsEnabled". * * Since the D-Bus property for this #GObject property is both readable and writable, it is meaningful to both read from it and write to it on both the service- and client-side. */ g_object_interface_install_property (iface, g_param_spec_boolean ("user-extensions-enabled", "UserExtensionsEnabled", "UserExtensionsEnabled", FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); } /** * shell_extensions_get_shell_version: (skip) * @object: A #ShellExtensions. * * Gets the value of the "ShellVersion" D-Bus property. * * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. * * The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where @object was constructed. Use shell_extensions_dup_shell_version() if on another thread. * * Returns: (transfer none) (nullable): The property value or %NULL if the property is not set. Do not free the returned value, it belongs to @object. */ const gchar * shell_extensions_get_shell_version (ShellExtensions *object) { g_return_val_if_fail (SHELL_IS_EXTENSIONS (object), NULL); return SHELL_EXTENSIONS_GET_IFACE (object)->get_shell_version (object); } /** * shell_extensions_dup_shell_version: (skip) * @object: A #ShellExtensions. * * Gets a copy of the "ShellVersion" D-Bus property. * * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. * * Returns: (transfer full) (nullable): The property value or %NULL if the property is not set. The returned value should be freed with g_free(). */ gchar * shell_extensions_dup_shell_version (ShellExtensions *object) { gchar *value; g_object_get (G_OBJECT (object), "shell-version", &value, NULL); return value; } /** * shell_extensions_set_shell_version: (skip) * @object: A #ShellExtensions. * @value: The value to set. * * Sets the "ShellVersion" D-Bus property to @value. * * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side. */ void shell_extensions_set_shell_version (ShellExtensions *object, const gchar *value) { g_object_set (G_OBJECT (object), "shell-version", value, NULL); } /** * shell_extensions_get_user_extensions_enabled: (skip) * @object: A #ShellExtensions. * * Gets the value of the "UserExtensionsEnabled" D-Bus property. * * Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side. * * Returns: The property value. */ gboolean shell_extensions_get_user_extensions_enabled (ShellExtensions *object) { g_return_val_if_fail (SHELL_IS_EXTENSIONS (object), FALSE); return SHELL_EXTENSIONS_GET_IFACE (object)->get_user_extensions_enabled (object); } /** * shell_extensions_set_user_extensions_enabled: (skip) * @object: A #ShellExtensions. * @value: The value to set. * * Sets the "UserExtensionsEnabled" D-Bus property to @value. * * Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side. */ void shell_extensions_set_user_extensions_enabled (ShellExtensions *object, gboolean value) { g_object_set (G_OBJECT (object), "user-extensions-enabled", value, NULL); } /** * shell_extensions_emit_extension_state_changed: * @object: A #ShellExtensions. * @arg_uuid: Argument to pass with the signal. * @arg_state: Argument to pass with the signal. * * Emits the "ExtensionStateChanged" D-Bus signal. */ void shell_extensions_emit_extension_state_changed ( ShellExtensions *object, const gchar *arg_uuid, GVariant *arg_state) { g_signal_emit (object, SHELL__EXTENSIONS_SIGNALS[SHELL__EXTENSIONS_EXTENSION_STATE_CHANGED], 0, arg_uuid, arg_state); } /** * shell_extensions_emit_extension_status_changed: * @object: A #ShellExtensions. * @arg_uuid: Argument to pass with the signal. * @arg_state: Argument to pass with the signal. * @arg_error: Argument to pass with the signal. * * Emits the "ExtensionStatusChanged" D-Bus signal. */ void shell_extensions_emit_extension_status_changed ( ShellExtensions *object, const gchar *arg_uuid, gint arg_state, const gchar *arg_error) { g_signal_emit (object, SHELL__EXTENSIONS_SIGNALS[SHELL__EXTENSIONS_EXTENSION_STATUS_CHANGED], 0, arg_uuid, arg_state, arg_error); } /** * shell_extensions_call_list_extensions: * @proxy: A #ShellExtensionsProxy. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. * @user_data: User data to pass to @callback. * * Asynchronously invokes the ListExtensions() D-Bus method on @proxy. * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). * You can then call shell_extensions_call_list_extensions_finish() to get the result of the operation. * * See shell_extensions_call_list_extensions_sync() for the synchronous, blocking version of this method. */ void shell_extensions_call_list_extensions ( ShellExtensions *proxy, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_dbus_proxy_call (G_DBUS_PROXY (proxy), "ListExtensions", g_variant_new ("()"), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, callback, user_data); } /** * shell_extensions_call_list_extensions_finish: * @proxy: A #ShellExtensionsProxy. * @out_extensions: (out) (optional): Return location for return parameter or %NULL to ignore. * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to shell_extensions_call_list_extensions(). * @error: Return location for error or %NULL. * * Finishes an operation started with shell_extensions_call_list_extensions(). * * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set. */ gboolean shell_extensions_call_list_extensions_finish ( ShellExtensions *proxy, GVariant **out_extensions, GAsyncResult *res, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "(@a{sa{sv}})", out_extensions); g_variant_unref (_ret); _out: return _ret != NULL; } /** * shell_extensions_call_list_extensions_sync: * @proxy: A #ShellExtensionsProxy. * @out_extensions: (out) (optional): Return location for return parameter or %NULL to ignore. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL. * * Synchronously invokes the ListExtensions() D-Bus method on @proxy. The calling thread is blocked until a reply is received. * * See shell_extensions_call_list_extensions() for the asynchronous version of this method. * * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set. */ gboolean shell_extensions_call_list_extensions_sync ( ShellExtensions *proxy, GVariant **out_extensions, GCancellable *cancellable, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), "ListExtensions", g_variant_new ("()"), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "(@a{sa{sv}})", out_extensions); g_variant_unref (_ret); _out: return _ret != NULL; } /** * shell_extensions_call_get_extension_info: * @proxy: A #ShellExtensionsProxy. * @arg_uuid: Argument to pass with the method invocation. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. * @user_data: User data to pass to @callback. * * Asynchronously invokes the GetExtensionInfo() D-Bus method on @proxy. * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). * You can then call shell_extensions_call_get_extension_info_finish() to get the result of the operation. * * See shell_extensions_call_get_extension_info_sync() for the synchronous, blocking version of this method. */ void shell_extensions_call_get_extension_info ( ShellExtensions *proxy, const gchar *arg_uuid, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_dbus_proxy_call (G_DBUS_PROXY (proxy), "GetExtensionInfo", g_variant_new ("(s)", arg_uuid), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, callback, user_data); } /** * shell_extensions_call_get_extension_info_finish: * @proxy: A #ShellExtensionsProxy. * @out_info: (out) (optional): Return location for return parameter or %NULL to ignore. * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to shell_extensions_call_get_extension_info(). * @error: Return location for error or %NULL. * * Finishes an operation started with shell_extensions_call_get_extension_info(). * * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set. */ gboolean shell_extensions_call_get_extension_info_finish ( ShellExtensions *proxy, GVariant **out_info, GAsyncResult *res, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "(@a{sv})", out_info); g_variant_unref (_ret); _out: return _ret != NULL; } /** * shell_extensions_call_get_extension_info_sync: * @proxy: A #ShellExtensionsProxy. * @arg_uuid: Argument to pass with the method invocation. * @out_info: (out) (optional): Return location for return parameter or %NULL to ignore. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL. * * Synchronously invokes the GetExtensionInfo() D-Bus method on @proxy. The calling thread is blocked until a reply is received. * * See shell_extensions_call_get_extension_info() for the asynchronous version of this method. * * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set. */ gboolean shell_extensions_call_get_extension_info_sync ( ShellExtensions *proxy, const gchar *arg_uuid, GVariant **out_info, GCancellable *cancellable, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), "GetExtensionInfo", g_variant_new ("(s)", arg_uuid), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "(@a{sv})", out_info); g_variant_unref (_ret); _out: return _ret != NULL; } /** * shell_extensions_call_get_extension_errors: * @proxy: A #ShellExtensionsProxy. * @arg_uuid: Argument to pass with the method invocation. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. * @user_data: User data to pass to @callback. * * Asynchronously invokes the GetExtensionErrors() D-Bus method on @proxy. * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). * You can then call shell_extensions_call_get_extension_errors_finish() to get the result of the operation. * * See shell_extensions_call_get_extension_errors_sync() for the synchronous, blocking version of this method. */ void shell_extensions_call_get_extension_errors ( ShellExtensions *proxy, const gchar *arg_uuid, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_dbus_proxy_call (G_DBUS_PROXY (proxy), "GetExtensionErrors", g_variant_new ("(s)", arg_uuid), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, callback, user_data); } /** * shell_extensions_call_get_extension_errors_finish: * @proxy: A #ShellExtensionsProxy. * @out_errors: (out) (optional) (array zero-terminated=1): Return location for return parameter or %NULL to ignore. * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to shell_extensions_call_get_extension_errors(). * @error: Return location for error or %NULL. * * Finishes an operation started with shell_extensions_call_get_extension_errors(). * * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set. */ gboolean shell_extensions_call_get_extension_errors_finish ( ShellExtensions *proxy, gchar ***out_errors, GAsyncResult *res, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "(^as)", out_errors); g_variant_unref (_ret); _out: return _ret != NULL; } /** * shell_extensions_call_get_extension_errors_sync: * @proxy: A #ShellExtensionsProxy. * @arg_uuid: Argument to pass with the method invocation. * @out_errors: (out) (optional) (array zero-terminated=1): Return location for return parameter or %NULL to ignore. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL. * * Synchronously invokes the GetExtensionErrors() D-Bus method on @proxy. The calling thread is blocked until a reply is received. * * See shell_extensions_call_get_extension_errors() for the asynchronous version of this method. * * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set. */ gboolean shell_extensions_call_get_extension_errors_sync ( ShellExtensions *proxy, const gchar *arg_uuid, gchar ***out_errors, GCancellable *cancellable, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), "GetExtensionErrors", g_variant_new ("(s)", arg_uuid), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "(^as)", out_errors); g_variant_unref (_ret); _out: return _ret != NULL; } /** * shell_extensions_call_install_remote_extension: * @proxy: A #ShellExtensionsProxy. * @arg_uuid: Argument to pass with the method invocation. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. * @user_data: User data to pass to @callback. * * Asynchronously invokes the InstallRemoteExtension() D-Bus method on @proxy. * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). * You can then call shell_extensions_call_install_remote_extension_finish() to get the result of the operation. * * See shell_extensions_call_install_remote_extension_sync() for the synchronous, blocking version of this method. */ void shell_extensions_call_install_remote_extension ( ShellExtensions *proxy, const gchar *arg_uuid, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_dbus_proxy_call (G_DBUS_PROXY (proxy), "InstallRemoteExtension", g_variant_new ("(s)", arg_uuid), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, callback, user_data); } /** * shell_extensions_call_install_remote_extension_finish: * @proxy: A #ShellExtensionsProxy. * @out_result: (out) (optional): Return location for return parameter or %NULL to ignore. * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to shell_extensions_call_install_remote_extension(). * @error: Return location for error or %NULL. * * Finishes an operation started with shell_extensions_call_install_remote_extension(). * * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set. */ gboolean shell_extensions_call_install_remote_extension_finish ( ShellExtensions *proxy, gchar **out_result, GAsyncResult *res, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "(s)", out_result); g_variant_unref (_ret); _out: return _ret != NULL; } /** * shell_extensions_call_install_remote_extension_sync: * @proxy: A #ShellExtensionsProxy. * @arg_uuid: Argument to pass with the method invocation. * @out_result: (out) (optional): Return location for return parameter or %NULL to ignore. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL. * * Synchronously invokes the InstallRemoteExtension() D-Bus method on @proxy. The calling thread is blocked until a reply is received. * * See shell_extensions_call_install_remote_extension() for the asynchronous version of this method. * * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set. */ gboolean shell_extensions_call_install_remote_extension_sync ( ShellExtensions *proxy, const gchar *arg_uuid, gchar **out_result, GCancellable *cancellable, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), "InstallRemoteExtension", g_variant_new ("(s)", arg_uuid), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "(s)", out_result); g_variant_unref (_ret); _out: return _ret != NULL; } /** * shell_extensions_call_uninstall_extension: * @proxy: A #ShellExtensionsProxy. * @arg_uuid: Argument to pass with the method invocation. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. * @user_data: User data to pass to @callback. * * Asynchronously invokes the UninstallExtension() D-Bus method on @proxy. * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). * You can then call shell_extensions_call_uninstall_extension_finish() to get the result of the operation. * * See shell_extensions_call_uninstall_extension_sync() for the synchronous, blocking version of this method. */ void shell_extensions_call_uninstall_extension ( ShellExtensions *proxy, const gchar *arg_uuid, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_dbus_proxy_call (G_DBUS_PROXY (proxy), "UninstallExtension", g_variant_new ("(s)", arg_uuid), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, callback, user_data); } /** * shell_extensions_call_uninstall_extension_finish: * @proxy: A #ShellExtensionsProxy. * @out_success: (out) (optional): Return location for return parameter or %NULL to ignore. * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to shell_extensions_call_uninstall_extension(). * @error: Return location for error or %NULL. * * Finishes an operation started with shell_extensions_call_uninstall_extension(). * * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set. */ gboolean shell_extensions_call_uninstall_extension_finish ( ShellExtensions *proxy, gboolean *out_success, GAsyncResult *res, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "(b)", out_success); g_variant_unref (_ret); _out: return _ret != NULL; } /** * shell_extensions_call_uninstall_extension_sync: * @proxy: A #ShellExtensionsProxy. * @arg_uuid: Argument to pass with the method invocation. * @out_success: (out) (optional): Return location for return parameter or %NULL to ignore. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL. * * Synchronously invokes the UninstallExtension() D-Bus method on @proxy. The calling thread is blocked until a reply is received. * * See shell_extensions_call_uninstall_extension() for the asynchronous version of this method. * * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set. */ gboolean shell_extensions_call_uninstall_extension_sync ( ShellExtensions *proxy, const gchar *arg_uuid, gboolean *out_success, GCancellable *cancellable, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), "UninstallExtension", g_variant_new ("(s)", arg_uuid), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "(b)", out_success); g_variant_unref (_ret); _out: return _ret != NULL; } /** * shell_extensions_call_reload_extension: * @proxy: A #ShellExtensionsProxy. * @arg_uuid: Argument to pass with the method invocation. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. * @user_data: User data to pass to @callback. * * Asynchronously invokes the ReloadExtension() D-Bus method on @proxy. * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). * You can then call shell_extensions_call_reload_extension_finish() to get the result of the operation. * * See shell_extensions_call_reload_extension_sync() for the synchronous, blocking version of this method. */ void shell_extensions_call_reload_extension ( ShellExtensions *proxy, const gchar *arg_uuid, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_dbus_proxy_call (G_DBUS_PROXY (proxy), "ReloadExtension", g_variant_new ("(s)", arg_uuid), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, callback, user_data); } /** * shell_extensions_call_reload_extension_finish: * @proxy: A #ShellExtensionsProxy. * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to shell_extensions_call_reload_extension(). * @error: Return location for error or %NULL. * * Finishes an operation started with shell_extensions_call_reload_extension(). * * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set. */ gboolean shell_extensions_call_reload_extension_finish ( ShellExtensions *proxy, GAsyncResult *res, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "()"); g_variant_unref (_ret); _out: return _ret != NULL; } /** * shell_extensions_call_reload_extension_sync: * @proxy: A #ShellExtensionsProxy. * @arg_uuid: Argument to pass with the method invocation. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL. * * Synchronously invokes the ReloadExtension() D-Bus method on @proxy. The calling thread is blocked until a reply is received. * * See shell_extensions_call_reload_extension() for the asynchronous version of this method. * * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set. */ gboolean shell_extensions_call_reload_extension_sync ( ShellExtensions *proxy, const gchar *arg_uuid, GCancellable *cancellable, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), "ReloadExtension", g_variant_new ("(s)", arg_uuid), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "()"); g_variant_unref (_ret); _out: return _ret != NULL; } /** * shell_extensions_call_enable_extension: * @proxy: A #ShellExtensionsProxy. * @arg_uuid: Argument to pass with the method invocation. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. * @user_data: User data to pass to @callback. * * Asynchronously invokes the EnableExtension() D-Bus method on @proxy. * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). * You can then call shell_extensions_call_enable_extension_finish() to get the result of the operation. * * See shell_extensions_call_enable_extension_sync() for the synchronous, blocking version of this method. */ void shell_extensions_call_enable_extension ( ShellExtensions *proxy, const gchar *arg_uuid, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_dbus_proxy_call (G_DBUS_PROXY (proxy), "EnableExtension", g_variant_new ("(s)", arg_uuid), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, callback, user_data); } /** * shell_extensions_call_enable_extension_finish: * @proxy: A #ShellExtensionsProxy. * @out_success: (out) (optional): Return location for return parameter or %NULL to ignore. * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to shell_extensions_call_enable_extension(). * @error: Return location for error or %NULL. * * Finishes an operation started with shell_extensions_call_enable_extension(). * * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set. */ gboolean shell_extensions_call_enable_extension_finish ( ShellExtensions *proxy, gboolean *out_success, GAsyncResult *res, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "(b)", out_success); g_variant_unref (_ret); _out: return _ret != NULL; } /** * shell_extensions_call_enable_extension_sync: * @proxy: A #ShellExtensionsProxy. * @arg_uuid: Argument to pass with the method invocation. * @out_success: (out) (optional): Return location for return parameter or %NULL to ignore. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL. * * Synchronously invokes the EnableExtension() D-Bus method on @proxy. The calling thread is blocked until a reply is received. * * See shell_extensions_call_enable_extension() for the asynchronous version of this method. * * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set. */ gboolean shell_extensions_call_enable_extension_sync ( ShellExtensions *proxy, const gchar *arg_uuid, gboolean *out_success, GCancellable *cancellable, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), "EnableExtension", g_variant_new ("(s)", arg_uuid), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "(b)", out_success); g_variant_unref (_ret); _out: return _ret != NULL; } /** * shell_extensions_call_disable_extension: * @proxy: A #ShellExtensionsProxy. * @arg_uuid: Argument to pass with the method invocation. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. * @user_data: User data to pass to @callback. * * Asynchronously invokes the DisableExtension() D-Bus method on @proxy. * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). * You can then call shell_extensions_call_disable_extension_finish() to get the result of the operation. * * See shell_extensions_call_disable_extension_sync() for the synchronous, blocking version of this method. */ void shell_extensions_call_disable_extension ( ShellExtensions *proxy, const gchar *arg_uuid, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_dbus_proxy_call (G_DBUS_PROXY (proxy), "DisableExtension", g_variant_new ("(s)", arg_uuid), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, callback, user_data); } /** * shell_extensions_call_disable_extension_finish: * @proxy: A #ShellExtensionsProxy. * @out_success: (out) (optional): Return location for return parameter or %NULL to ignore. * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to shell_extensions_call_disable_extension(). * @error: Return location for error or %NULL. * * Finishes an operation started with shell_extensions_call_disable_extension(). * * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set. */ gboolean shell_extensions_call_disable_extension_finish ( ShellExtensions *proxy, gboolean *out_success, GAsyncResult *res, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "(b)", out_success); g_variant_unref (_ret); _out: return _ret != NULL; } /** * shell_extensions_call_disable_extension_sync: * @proxy: A #ShellExtensionsProxy. * @arg_uuid: Argument to pass with the method invocation. * @out_success: (out) (optional): Return location for return parameter or %NULL to ignore. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL. * * Synchronously invokes the DisableExtension() D-Bus method on @proxy. The calling thread is blocked until a reply is received. * * See shell_extensions_call_disable_extension() for the asynchronous version of this method. * * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set. */ gboolean shell_extensions_call_disable_extension_sync ( ShellExtensions *proxy, const gchar *arg_uuid, gboolean *out_success, GCancellable *cancellable, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), "DisableExtension", g_variant_new ("(s)", arg_uuid), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "(b)", out_success); g_variant_unref (_ret); _out: return _ret != NULL; } /** * shell_extensions_call_launch_extension_prefs: * @proxy: A #ShellExtensionsProxy. * @arg_uuid: Argument to pass with the method invocation. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. * @user_data: User data to pass to @callback. * * Asynchronously invokes the LaunchExtensionPrefs() D-Bus method on @proxy. * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). * You can then call shell_extensions_call_launch_extension_prefs_finish() to get the result of the operation. * * See shell_extensions_call_launch_extension_prefs_sync() for the synchronous, blocking version of this method. */ void shell_extensions_call_launch_extension_prefs ( ShellExtensions *proxy, const gchar *arg_uuid, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_dbus_proxy_call (G_DBUS_PROXY (proxy), "LaunchExtensionPrefs", g_variant_new ("(s)", arg_uuid), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, callback, user_data); } /** * shell_extensions_call_launch_extension_prefs_finish: * @proxy: A #ShellExtensionsProxy. * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to shell_extensions_call_launch_extension_prefs(). * @error: Return location for error or %NULL. * * Finishes an operation started with shell_extensions_call_launch_extension_prefs(). * * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set. */ gboolean shell_extensions_call_launch_extension_prefs_finish ( ShellExtensions *proxy, GAsyncResult *res, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "()"); g_variant_unref (_ret); _out: return _ret != NULL; } /** * shell_extensions_call_launch_extension_prefs_sync: * @proxy: A #ShellExtensionsProxy. * @arg_uuid: Argument to pass with the method invocation. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL. * * Synchronously invokes the LaunchExtensionPrefs() D-Bus method on @proxy. The calling thread is blocked until a reply is received. * * See shell_extensions_call_launch_extension_prefs() for the asynchronous version of this method. * * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set. */ gboolean shell_extensions_call_launch_extension_prefs_sync ( ShellExtensions *proxy, const gchar *arg_uuid, GCancellable *cancellable, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), "LaunchExtensionPrefs", g_variant_new ("(s)", arg_uuid), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "()"); g_variant_unref (_ret); _out: return _ret != NULL; } /** * shell_extensions_call_open_extension_prefs: * @proxy: A #ShellExtensionsProxy. * @arg_uuid: Argument to pass with the method invocation. * @arg_parent_window: Argument to pass with the method invocation. * @arg_options: Argument to pass with the method invocation. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. * @user_data: User data to pass to @callback. * * Asynchronously invokes the OpenExtensionPrefs() D-Bus method on @proxy. * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). * You can then call shell_extensions_call_open_extension_prefs_finish() to get the result of the operation. * * See shell_extensions_call_open_extension_prefs_sync() for the synchronous, blocking version of this method. */ void shell_extensions_call_open_extension_prefs ( ShellExtensions *proxy, const gchar *arg_uuid, const gchar *arg_parent_window, GVariant *arg_options, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_dbus_proxy_call (G_DBUS_PROXY (proxy), "OpenExtensionPrefs", g_variant_new ("(ss@a{sv})", arg_uuid, arg_parent_window, arg_options), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, callback, user_data); } /** * shell_extensions_call_open_extension_prefs_finish: * @proxy: A #ShellExtensionsProxy. * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to shell_extensions_call_open_extension_prefs(). * @error: Return location for error or %NULL. * * Finishes an operation started with shell_extensions_call_open_extension_prefs(). * * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set. */ gboolean shell_extensions_call_open_extension_prefs_finish ( ShellExtensions *proxy, GAsyncResult *res, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "()"); g_variant_unref (_ret); _out: return _ret != NULL; } /** * shell_extensions_call_open_extension_prefs_sync: * @proxy: A #ShellExtensionsProxy. * @arg_uuid: Argument to pass with the method invocation. * @arg_parent_window: Argument to pass with the method invocation. * @arg_options: Argument to pass with the method invocation. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL. * * Synchronously invokes the OpenExtensionPrefs() D-Bus method on @proxy. The calling thread is blocked until a reply is received. * * See shell_extensions_call_open_extension_prefs() for the asynchronous version of this method. * * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set. */ gboolean shell_extensions_call_open_extension_prefs_sync ( ShellExtensions *proxy, const gchar *arg_uuid, const gchar *arg_parent_window, GVariant *arg_options, GCancellable *cancellable, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), "OpenExtensionPrefs", g_variant_new ("(ss@a{sv})", arg_uuid, arg_parent_window, arg_options), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "()"); g_variant_unref (_ret); _out: return _ret != NULL; } /** * shell_extensions_call_check_for_updates: * @proxy: A #ShellExtensionsProxy. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. * @user_data: User data to pass to @callback. * * Asynchronously invokes the CheckForUpdates() D-Bus method on @proxy. * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). * You can then call shell_extensions_call_check_for_updates_finish() to get the result of the operation. * * See shell_extensions_call_check_for_updates_sync() for the synchronous, blocking version of this method. */ void shell_extensions_call_check_for_updates ( ShellExtensions *proxy, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_dbus_proxy_call (G_DBUS_PROXY (proxy), "CheckForUpdates", g_variant_new ("()"), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, callback, user_data); } /** * shell_extensions_call_check_for_updates_finish: * @proxy: A #ShellExtensionsProxy. * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to shell_extensions_call_check_for_updates(). * @error: Return location for error or %NULL. * * Finishes an operation started with shell_extensions_call_check_for_updates(). * * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set. */ gboolean shell_extensions_call_check_for_updates_finish ( ShellExtensions *proxy, GAsyncResult *res, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "()"); g_variant_unref (_ret); _out: return _ret != NULL; } /** * shell_extensions_call_check_for_updates_sync: * @proxy: A #ShellExtensionsProxy. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL. * * Synchronously invokes the CheckForUpdates() D-Bus method on @proxy. The calling thread is blocked until a reply is received. * * See shell_extensions_call_check_for_updates() for the asynchronous version of this method. * * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set. */ gboolean shell_extensions_call_check_for_updates_sync ( ShellExtensions *proxy, GCancellable *cancellable, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), "CheckForUpdates", g_variant_new ("()"), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "()"); g_variant_unref (_ret); _out: return _ret != NULL; } /** * shell_extensions_complete_list_extensions: * @object: A #ShellExtensions. * @invocation: (transfer full): A #GDBusMethodInvocation. * @extensions: Parameter to return. * * Helper function used in service implementations to finish handling invocations of the ListExtensions() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar. * * This method will free @invocation, you cannot use it afterwards. */ void shell_extensions_complete_list_extensions ( ShellExtensions *object G_GNUC_UNUSED, GDBusMethodInvocation *invocation, GVariant *extensions) { g_dbus_method_invocation_return_value (invocation, g_variant_new ("(@a{sa{sv}})", extensions)); } /** * shell_extensions_complete_get_extension_info: * @object: A #ShellExtensions. * @invocation: (transfer full): A #GDBusMethodInvocation. * @info: Parameter to return. * * Helper function used in service implementations to finish handling invocations of the GetExtensionInfo() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar. * * This method will free @invocation, you cannot use it afterwards. */ void shell_extensions_complete_get_extension_info ( ShellExtensions *object G_GNUC_UNUSED, GDBusMethodInvocation *invocation, GVariant *info) { g_dbus_method_invocation_return_value (invocation, g_variant_new ("(@a{sv})", info)); } /** * shell_extensions_complete_get_extension_errors: * @object: A #ShellExtensions. * @invocation: (transfer full): A #GDBusMethodInvocation. * @errors: Parameter to return. * * Helper function used in service implementations to finish handling invocations of the GetExtensionErrors() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar. * * This method will free @invocation, you cannot use it afterwards. */ void shell_extensions_complete_get_extension_errors ( ShellExtensions *object G_GNUC_UNUSED, GDBusMethodInvocation *invocation, const gchar *const *errors) { g_dbus_method_invocation_return_value (invocation, g_variant_new ("(^as)", errors)); } /** * shell_extensions_complete_install_remote_extension: * @object: A #ShellExtensions. * @invocation: (transfer full): A #GDBusMethodInvocation. * @result: Parameter to return. * * Helper function used in service implementations to finish handling invocations of the InstallRemoteExtension() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar. * * This method will free @invocation, you cannot use it afterwards. */ void shell_extensions_complete_install_remote_extension ( ShellExtensions *object G_GNUC_UNUSED, GDBusMethodInvocation *invocation, const gchar *result) { g_dbus_method_invocation_return_value (invocation, g_variant_new ("(s)", result)); } /** * shell_extensions_complete_uninstall_extension: * @object: A #ShellExtensions. * @invocation: (transfer full): A #GDBusMethodInvocation. * @success: Parameter to return. * * Helper function used in service implementations to finish handling invocations of the UninstallExtension() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar. * * This method will free @invocation, you cannot use it afterwards. */ void shell_extensions_complete_uninstall_extension ( ShellExtensions *object G_GNUC_UNUSED, GDBusMethodInvocation *invocation, gboolean success) { g_dbus_method_invocation_return_value (invocation, g_variant_new ("(b)", success)); } /** * shell_extensions_complete_reload_extension: * @object: A #ShellExtensions. * @invocation: (transfer full): A #GDBusMethodInvocation. * * Helper function used in service implementations to finish handling invocations of the ReloadExtension() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar. * * This method will free @invocation, you cannot use it afterwards. */ void shell_extensions_complete_reload_extension ( ShellExtensions *object G_GNUC_UNUSED, GDBusMethodInvocation *invocation) { g_dbus_method_invocation_return_value (invocation, g_variant_new ("()")); } /** * shell_extensions_complete_enable_extension: * @object: A #ShellExtensions. * @invocation: (transfer full): A #GDBusMethodInvocation. * @success: Parameter to return. * * Helper function used in service implementations to finish handling invocations of the EnableExtension() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar. * * This method will free @invocation, you cannot use it afterwards. */ void shell_extensions_complete_enable_extension ( ShellExtensions *object G_GNUC_UNUSED, GDBusMethodInvocation *invocation, gboolean success) { g_dbus_method_invocation_return_value (invocation, g_variant_new ("(b)", success)); } /** * shell_extensions_complete_disable_extension: * @object: A #ShellExtensions. * @invocation: (transfer full): A #GDBusMethodInvocation. * @success: Parameter to return. * * Helper function used in service implementations to finish handling invocations of the DisableExtension() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar. * * This method will free @invocation, you cannot use it afterwards. */ void shell_extensions_complete_disable_extension ( ShellExtensions *object G_GNUC_UNUSED, GDBusMethodInvocation *invocation, gboolean success) { g_dbus_method_invocation_return_value (invocation, g_variant_new ("(b)", success)); } /** * shell_extensions_complete_launch_extension_prefs: * @object: A #ShellExtensions. * @invocation: (transfer full): A #GDBusMethodInvocation. * * Helper function used in service implementations to finish handling invocations of the LaunchExtensionPrefs() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar. * * This method will free @invocation, you cannot use it afterwards. */ void shell_extensions_complete_launch_extension_prefs ( ShellExtensions *object G_GNUC_UNUSED, GDBusMethodInvocation *invocation) { g_dbus_method_invocation_return_value (invocation, g_variant_new ("()")); } /** * shell_extensions_complete_open_extension_prefs: * @object: A #ShellExtensions. * @invocation: (transfer full): A #GDBusMethodInvocation. * * Helper function used in service implementations to finish handling invocations of the OpenExtensionPrefs() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar. * * This method will free @invocation, you cannot use it afterwards. */ void shell_extensions_complete_open_extension_prefs ( ShellExtensions *object G_GNUC_UNUSED, GDBusMethodInvocation *invocation) { g_dbus_method_invocation_return_value (invocation, g_variant_new ("()")); } /** * shell_extensions_complete_check_for_updates: * @object: A #ShellExtensions. * @invocation: (transfer full): A #GDBusMethodInvocation. * * Helper function used in service implementations to finish handling invocations of the CheckForUpdates() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar. * * This method will free @invocation, you cannot use it afterwards. */ void shell_extensions_complete_check_for_updates ( ShellExtensions *object G_GNUC_UNUSED, GDBusMethodInvocation *invocation) { g_dbus_method_invocation_return_value (invocation, g_variant_new ("()")); } /* ------------------------------------------------------------------------ */ /** * ShellExtensionsProxy: * * The #ShellExtensionsProxy structure contains only private data and should only be accessed using the provided API. */ /** * ShellExtensionsProxyClass: * @parent_class: The parent class. * * Class structure for #ShellExtensionsProxy. */ struct _ShellExtensionsProxyPrivate { GData *qdata; }; static void shell_extensions_proxy_iface_init (ShellExtensionsIface *iface); #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 G_DEFINE_TYPE_WITH_CODE (ShellExtensionsProxy, shell_extensions_proxy, G_TYPE_DBUS_PROXY, G_ADD_PRIVATE (ShellExtensionsProxy) G_IMPLEMENT_INTERFACE (SHELL_TYPE_EXTENSIONS, shell_extensions_proxy_iface_init)) #else G_DEFINE_TYPE_WITH_CODE (ShellExtensionsProxy, shell_extensions_proxy, G_TYPE_DBUS_PROXY, G_IMPLEMENT_INTERFACE (SHELL_TYPE_EXTENSIONS, shell_extensions_proxy_iface_init)) #endif static void shell_extensions_proxy_finalize (GObject *object) { ShellExtensionsProxy *proxy = SHELL_EXTENSIONS_PROXY (object); g_datalist_clear (&proxy->priv->qdata); G_OBJECT_CLASS (shell_extensions_proxy_parent_class)->finalize (object); } static void shell_extensions_proxy_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec G_GNUC_UNUSED) { const _ExtendedGDBusPropertyInfo *info; GVariant *variant; g_assert (prop_id != 0 && prop_id - 1 < 2); info = (const _ExtendedGDBusPropertyInfo *) _shell_extensions_property_info_pointers[prop_id - 1]; variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (object), info->parent_struct.name); if (info->use_gvariant) { g_value_set_variant (value, variant); } else { if (variant != NULL) g_dbus_gvariant_to_gvalue (variant, value); } if (variant != NULL) g_variant_unref (variant); } static void shell_extensions_proxy_set_property_cb (GDBusProxy *proxy, GAsyncResult *res, gpointer user_data) { const _ExtendedGDBusPropertyInfo *info = user_data; GError *error; GVariant *_ret; error = NULL; _ret = g_dbus_proxy_call_finish (proxy, res, &error); if (!_ret) { g_warning ("Error setting property '%s' on interface org.gnome.Shell.Extensions: %s (%s, %d)", info->parent_struct.name, error->message, g_quark_to_string (error->domain), error->code); g_error_free (error); } else { g_variant_unref (_ret); } } static void shell_extensions_proxy_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec G_GNUC_UNUSED) { const _ExtendedGDBusPropertyInfo *info; GVariant *variant; g_assert (prop_id != 0 && prop_id - 1 < 2); info = (const _ExtendedGDBusPropertyInfo *) _shell_extensions_property_info_pointers[prop_id - 1]; variant = g_dbus_gvalue_to_gvariant (value, G_VARIANT_TYPE (info->parent_struct.signature)); g_dbus_proxy_call (G_DBUS_PROXY (object), "org.freedesktop.DBus.Properties.Set", g_variant_new ("(ssv)", "org.gnome.Shell.Extensions", info->parent_struct.name, variant), G_DBUS_CALL_FLAGS_NONE, -1, NULL, (GAsyncReadyCallback) shell_extensions_proxy_set_property_cb, (GDBusPropertyInfo *) &info->parent_struct); g_variant_unref (variant); } static void shell_extensions_proxy_g_signal (GDBusProxy *proxy, const gchar *sender_name G_GNUC_UNUSED, const gchar *signal_name, GVariant *parameters) { _ExtendedGDBusSignalInfo *info; GVariantIter iter; GVariant *child; GValue *paramv; gsize num_params; gsize n; guint signal_id; info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_shell_extensions_interface_info.parent_struct, signal_name); if (info == NULL) return; num_params = g_variant_n_children (parameters); paramv = g_new0 (GValue, num_params + 1); g_value_init (¶mv[0], SHELL_TYPE_EXTENSIONS); g_value_set_object (¶mv[0], proxy); g_variant_iter_init (&iter, parameters); n = 1; while ((child = g_variant_iter_next_value (&iter)) != NULL) { _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1]; if (arg_info->use_gvariant) { g_value_init (¶mv[n], G_TYPE_VARIANT); g_value_set_variant (¶mv[n], child); n++; } else g_dbus_gvariant_to_gvalue (child, ¶mv[n++]); g_variant_unref (child); } signal_id = g_signal_lookup (info->signal_name, SHELL_TYPE_EXTENSIONS); g_signal_emitv (paramv, signal_id, 0, NULL); for (n = 0; n < num_params + 1; n++) g_value_unset (¶mv[n]); g_free (paramv); } static void shell_extensions_proxy_g_properties_changed (GDBusProxy *_proxy, GVariant *changed_properties, const gchar *const *invalidated_properties) { ShellExtensionsProxy *proxy = SHELL_EXTENSIONS_PROXY (_proxy); guint n; const gchar *key; GVariantIter *iter; _ExtendedGDBusPropertyInfo *info; g_variant_get (changed_properties, "a{sv}", &iter); while (g_variant_iter_next (iter, "{&sv}", &key, NULL)) { info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_shell_extensions_interface_info.parent_struct, key); g_datalist_remove_data (&proxy->priv->qdata, key); if (info != NULL) g_object_notify (G_OBJECT (proxy), info->hyphen_name); } g_variant_iter_free (iter); for (n = 0; invalidated_properties[n] != NULL; n++) { info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_shell_extensions_interface_info.parent_struct, invalidated_properties[n]); g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]); if (info != NULL) g_object_notify (G_OBJECT (proxy), info->hyphen_name); } } static const gchar * shell_extensions_proxy_get_shell_version (ShellExtensions *object) { ShellExtensionsProxy *proxy = SHELL_EXTENSIONS_PROXY (object); GVariant *variant; const gchar *value = NULL; variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "ShellVersion"); if (variant != NULL) { value = g_variant_get_string (variant, NULL); g_variant_unref (variant); } return value; } static gboolean shell_extensions_proxy_get_user_extensions_enabled (ShellExtensions *object) { ShellExtensionsProxy *proxy = SHELL_EXTENSIONS_PROXY (object); GVariant *variant; gboolean value = FALSE; variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "UserExtensionsEnabled"); if (variant != NULL) { value = g_variant_get_boolean (variant); g_variant_unref (variant); } return value; } static void shell_extensions_proxy_init (ShellExtensionsProxy *proxy) { #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 proxy->priv = shell_extensions_proxy_get_instance_private (proxy); #else proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, SHELL_TYPE_EXTENSIONS_PROXY, ShellExtensionsProxyPrivate); #endif g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), shell_extensions_interface_info ()); } static void shell_extensions_proxy_class_init (ShellExtensionsProxyClass *klass) { GObjectClass *gobject_class; GDBusProxyClass *proxy_class; gobject_class = G_OBJECT_CLASS (klass); gobject_class->finalize = shell_extensions_proxy_finalize; gobject_class->get_property = shell_extensions_proxy_get_property; gobject_class->set_property = shell_extensions_proxy_set_property; proxy_class = G_DBUS_PROXY_CLASS (klass); proxy_class->g_signal = shell_extensions_proxy_g_signal; proxy_class->g_properties_changed = shell_extensions_proxy_g_properties_changed; shell_extensions_override_properties (gobject_class, 1); #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38 g_type_class_add_private (klass, sizeof (ShellExtensionsProxyPrivate)); #endif } static void shell_extensions_proxy_iface_init (ShellExtensionsIface *iface) { iface->get_shell_version = shell_extensions_proxy_get_shell_version; iface->get_user_extensions_enabled = shell_extensions_proxy_get_user_extensions_enabled; } /** * shell_extensions_proxy_new: * @connection: A #GDBusConnection. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied. * @user_data: User data to pass to @callback. * * Asynchronously creates a proxy for the D-Bus interface org.gnome.Shell.Extensions. See g_dbus_proxy_new() for more details. * * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). * You can then call shell_extensions_proxy_new_finish() to get the result of the operation. * * See shell_extensions_proxy_new_sync() for the synchronous, blocking version of this constructor. */ void shell_extensions_proxy_new ( GDBusConnection *connection, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_async_initable_new_async (SHELL_TYPE_EXTENSIONS_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.gnome.Shell.Extensions", NULL); } /** * shell_extensions_proxy_new_finish: * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to shell_extensions_proxy_new(). * @error: Return location for error or %NULL * * Finishes an operation started with shell_extensions_proxy_new(). * * Returns: (transfer full) (type ShellExtensionsProxy): The constructed proxy object or %NULL if @error is set. */ ShellExtensions * shell_extensions_proxy_new_finish ( GAsyncResult *res, GError **error) { GObject *ret; GObject *source_object; source_object = g_async_result_get_source_object (res); ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error); g_object_unref (source_object); if (ret != NULL) return SHELL_EXTENSIONS (ret); else return NULL; } /** * shell_extensions_proxy_new_sync: * @connection: A #GDBusConnection. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL * * Synchronously creates a proxy for the D-Bus interface org.gnome.Shell.Extensions. See g_dbus_proxy_new_sync() for more details. * * The calling thread is blocked until a reply is received. * * See shell_extensions_proxy_new() for the asynchronous version of this constructor. * * Returns: (transfer full) (type ShellExtensionsProxy): The constructed proxy object or %NULL if @error is set. */ ShellExtensions * shell_extensions_proxy_new_sync ( GDBusConnection *connection, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GError **error) { GInitable *ret; ret = g_initable_new (SHELL_TYPE_EXTENSIONS_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.gnome.Shell.Extensions", NULL); if (ret != NULL) return SHELL_EXTENSIONS (ret); else return NULL; } /** * shell_extensions_proxy_new_for_bus: * @bus_type: A #GBusType. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: A bus name (well-known or unique). * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied. * @user_data: User data to pass to @callback. * * Like shell_extensions_proxy_new() but takes a #GBusType instead of a #GDBusConnection. * * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). * You can then call shell_extensions_proxy_new_for_bus_finish() to get the result of the operation. * * See shell_extensions_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor. */ void shell_extensions_proxy_new_for_bus ( GBusType bus_type, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_async_initable_new_async (SHELL_TYPE_EXTENSIONS_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.gnome.Shell.Extensions", NULL); } /** * shell_extensions_proxy_new_for_bus_finish: * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to shell_extensions_proxy_new_for_bus(). * @error: Return location for error or %NULL * * Finishes an operation started with shell_extensions_proxy_new_for_bus(). * * Returns: (transfer full) (type ShellExtensionsProxy): The constructed proxy object or %NULL if @error is set. */ ShellExtensions * shell_extensions_proxy_new_for_bus_finish ( GAsyncResult *res, GError **error) { GObject *ret; GObject *source_object; source_object = g_async_result_get_source_object (res); ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error); g_object_unref (source_object); if (ret != NULL) return SHELL_EXTENSIONS (ret); else return NULL; } /** * shell_extensions_proxy_new_for_bus_sync: * @bus_type: A #GBusType. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: A bus name (well-known or unique). * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL * * Like shell_extensions_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection. * * The calling thread is blocked until a reply is received. * * See shell_extensions_proxy_new_for_bus() for the asynchronous version of this constructor. * * Returns: (transfer full) (type ShellExtensionsProxy): The constructed proxy object or %NULL if @error is set. */ ShellExtensions * shell_extensions_proxy_new_for_bus_sync ( GBusType bus_type, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GError **error) { GInitable *ret; ret = g_initable_new (SHELL_TYPE_EXTENSIONS_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.gnome.Shell.Extensions", NULL); if (ret != NULL) return SHELL_EXTENSIONS (ret); else return NULL; } /* ------------------------------------------------------------------------ */ /** * ShellExtensionsSkeleton: * * The #ShellExtensionsSkeleton structure contains only private data and should only be accessed using the provided API. */ /** * ShellExtensionsSkeletonClass: * @parent_class: The parent class. * * Class structure for #ShellExtensionsSkeleton. */ struct _ShellExtensionsSkeletonPrivate { GValue *properties; GList *changed_properties; GSource *changed_properties_idle_source; GMainContext *context; GMutex lock; }; static void _shell_extensions_skeleton_handle_method_call ( GDBusConnection *connection G_GNUC_UNUSED, const gchar *sender G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name, const gchar *method_name, GVariant *parameters, GDBusMethodInvocation *invocation, gpointer user_data) { ShellExtensionsSkeleton *skeleton = SHELL_EXTENSIONS_SKELETON (user_data); _ExtendedGDBusMethodInfo *info; GVariantIter iter; GVariant *child; GValue *paramv; gsize num_params; guint num_extra; gsize n; guint signal_id; GValue return_value = G_VALUE_INIT; info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation); g_assert (info != NULL); num_params = g_variant_n_children (parameters); num_extra = info->pass_fdlist ? 3 : 2; paramv = g_new0 (GValue, num_params + num_extra); n = 0; g_value_init (¶mv[n], SHELL_TYPE_EXTENSIONS); g_value_set_object (¶mv[n++], skeleton); g_value_init (¶mv[n], G_TYPE_DBUS_METHOD_INVOCATION); g_value_set_object (¶mv[n++], invocation); if (info->pass_fdlist) { #ifdef G_OS_UNIX g_value_init (¶mv[n], G_TYPE_UNIX_FD_LIST); g_value_set_object (¶mv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation))); #else g_assert_not_reached (); #endif } g_variant_iter_init (&iter, parameters); while ((child = g_variant_iter_next_value (&iter)) != NULL) { _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra]; if (arg_info->use_gvariant) { g_value_init (¶mv[n], G_TYPE_VARIANT); g_value_set_variant (¶mv[n], child); n++; } else g_dbus_gvariant_to_gvalue (child, ¶mv[n++]); g_variant_unref (child); } signal_id = g_signal_lookup (info->signal_name, SHELL_TYPE_EXTENSIONS); g_value_init (&return_value, G_TYPE_BOOLEAN); g_signal_emitv (paramv, signal_id, 0, &return_value); if (!g_value_get_boolean (&return_value)) g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name); g_value_unset (&return_value); for (n = 0; n < num_params + num_extra; n++) g_value_unset (¶mv[n]); g_free (paramv); } static GVariant * _shell_extensions_skeleton_handle_get_property ( GDBusConnection *connection G_GNUC_UNUSED, const gchar *sender G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name G_GNUC_UNUSED, const gchar *property_name, GError **error, gpointer user_data) { ShellExtensionsSkeleton *skeleton = SHELL_EXTENSIONS_SKELETON (user_data); GValue value = G_VALUE_INIT; GParamSpec *pspec; _ExtendedGDBusPropertyInfo *info; GVariant *ret; ret = NULL; info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_shell_extensions_interface_info.parent_struct, property_name); g_assert (info != NULL); pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name); if (pspec == NULL) { g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name); } else { g_value_init (&value, pspec->value_type); g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value); ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature)); g_value_unset (&value); } return ret; } static gboolean _shell_extensions_skeleton_handle_set_property ( GDBusConnection *connection G_GNUC_UNUSED, const gchar *sender G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name G_GNUC_UNUSED, const gchar *property_name, GVariant *variant, GError **error, gpointer user_data) { ShellExtensionsSkeleton *skeleton = SHELL_EXTENSIONS_SKELETON (user_data); GValue value = G_VALUE_INIT; GParamSpec *pspec; _ExtendedGDBusPropertyInfo *info; gboolean ret; ret = FALSE; info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_shell_extensions_interface_info.parent_struct, property_name); g_assert (info != NULL); pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name); if (pspec == NULL) { g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name); } else { if (info->use_gvariant) g_value_set_variant (&value, variant); else g_dbus_gvariant_to_gvalue (variant, &value); g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value); g_value_unset (&value); ret = TRUE; } return ret; } static const GDBusInterfaceVTable _shell_extensions_skeleton_vtable = { _shell_extensions_skeleton_handle_method_call, _shell_extensions_skeleton_handle_get_property, _shell_extensions_skeleton_handle_set_property, {NULL} }; static GDBusInterfaceInfo * shell_extensions_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED) { return shell_extensions_interface_info (); } static GDBusInterfaceVTable * shell_extensions_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED) { return (GDBusInterfaceVTable *) &_shell_extensions_skeleton_vtable; } static GVariant * shell_extensions_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton) { ShellExtensionsSkeleton *skeleton = SHELL_EXTENSIONS_SKELETON (_skeleton); GVariantBuilder builder; guint n; g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}")); if (_shell_extensions_interface_info.parent_struct.properties == NULL) goto out; for (n = 0; _shell_extensions_interface_info.parent_struct.properties[n] != NULL; n++) { GDBusPropertyInfo *info = _shell_extensions_interface_info.parent_struct.properties[n]; if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE) { GVariant *value; value = _shell_extensions_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.gnome.Shell.Extensions", info->name, NULL, skeleton); if (value != NULL) { g_variant_take_ref (value); g_variant_builder_add (&builder, "{sv}", info->name, value); g_variant_unref (value); } } } out: return g_variant_builder_end (&builder); } static gboolean _shell_extensions_emit_changed (gpointer user_data); static void shell_extensions_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton) { ShellExtensionsSkeleton *skeleton = SHELL_EXTENSIONS_SKELETON (_skeleton); gboolean emit_changed = FALSE; g_mutex_lock (&skeleton->priv->lock); if (skeleton->priv->changed_properties_idle_source != NULL) { g_source_destroy (skeleton->priv->changed_properties_idle_source); skeleton->priv->changed_properties_idle_source = NULL; emit_changed = TRUE; } g_mutex_unlock (&skeleton->priv->lock); if (emit_changed) _shell_extensions_emit_changed (skeleton); } static void _shell_extensions_on_signal_extension_state_changed ( ShellExtensions *object, const gchar *arg_uuid, GVariant *arg_state) { ShellExtensionsSkeleton *skeleton = SHELL_EXTENSIONS_SKELETON (object); GList *connections, *l; GVariant *signal_variant; connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton)); signal_variant = g_variant_ref_sink (g_variant_new ("(s@a{sv})", arg_uuid, arg_state)); for (l = connections; l != NULL; l = l->next) { GDBusConnection *connection = l->data; g_dbus_connection_emit_signal (connection, NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.gnome.Shell.Extensions", "ExtensionStateChanged", signal_variant, NULL); } g_variant_unref (signal_variant); g_list_free_full (connections, g_object_unref); } static void _shell_extensions_on_signal_extension_status_changed ( ShellExtensions *object, const gchar *arg_uuid, gint arg_state, const gchar *arg_error) { ShellExtensionsSkeleton *skeleton = SHELL_EXTENSIONS_SKELETON (object); GList *connections, *l; GVariant *signal_variant; connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton)); signal_variant = g_variant_ref_sink (g_variant_new ("(sis)", arg_uuid, arg_state, arg_error)); for (l = connections; l != NULL; l = l->next) { GDBusConnection *connection = l->data; g_dbus_connection_emit_signal (connection, NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.gnome.Shell.Extensions", "ExtensionStatusChanged", signal_variant, NULL); } g_variant_unref (signal_variant); g_list_free_full (connections, g_object_unref); } static void shell_extensions_skeleton_iface_init (ShellExtensionsIface *iface); #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 G_DEFINE_TYPE_WITH_CODE (ShellExtensionsSkeleton, shell_extensions_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON, G_ADD_PRIVATE (ShellExtensionsSkeleton) G_IMPLEMENT_INTERFACE (SHELL_TYPE_EXTENSIONS, shell_extensions_skeleton_iface_init)) #else G_DEFINE_TYPE_WITH_CODE (ShellExtensionsSkeleton, shell_extensions_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON, G_IMPLEMENT_INTERFACE (SHELL_TYPE_EXTENSIONS, shell_extensions_skeleton_iface_init)) #endif static void shell_extensions_skeleton_finalize (GObject *object) { ShellExtensionsSkeleton *skeleton = SHELL_EXTENSIONS_SKELETON (object); guint n; for (n = 0; n < 2; n++) g_value_unset (&skeleton->priv->properties[n]); g_free (skeleton->priv->properties); g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free); if (skeleton->priv->changed_properties_idle_source != NULL) g_source_destroy (skeleton->priv->changed_properties_idle_source); g_main_context_unref (skeleton->priv->context); g_mutex_clear (&skeleton->priv->lock); G_OBJECT_CLASS (shell_extensions_skeleton_parent_class)->finalize (object); } static void shell_extensions_skeleton_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec G_GNUC_UNUSED) { ShellExtensionsSkeleton *skeleton = SHELL_EXTENSIONS_SKELETON (object); g_assert (prop_id != 0 && prop_id - 1 < 2); g_mutex_lock (&skeleton->priv->lock); g_value_copy (&skeleton->priv->properties[prop_id - 1], value); g_mutex_unlock (&skeleton->priv->lock); } static gboolean _shell_extensions_emit_changed (gpointer user_data) { ShellExtensionsSkeleton *skeleton = SHELL_EXTENSIONS_SKELETON (user_data); GList *l; GVariantBuilder builder; GVariantBuilder invalidated_builder; guint num_changes; g_mutex_lock (&skeleton->priv->lock); g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}")); g_variant_builder_init (&invalidated_builder, G_VARIANT_TYPE ("as")); for (l = skeleton->priv->changed_properties, num_changes = 0; l != NULL; l = l->next) { ChangedProperty *cp = l->data; GVariant *variant; const GValue *cur_value; cur_value = &skeleton->priv->properties[cp->prop_id - 1]; if (!_g_value_equal (cur_value, &cp->orig_value)) { variant = g_dbus_gvalue_to_gvariant (cur_value, G_VARIANT_TYPE (cp->info->parent_struct.signature)); g_variant_builder_add (&builder, "{sv}", cp->info->parent_struct.name, variant); g_variant_unref (variant); num_changes++; } } if (num_changes > 0) { GList *connections, *ll; GVariant *signal_variant; signal_variant = g_variant_ref_sink (g_variant_new ("(sa{sv}as)", "org.gnome.Shell.Extensions", &builder, &invalidated_builder)); connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton)); for (ll = connections; ll != NULL; ll = ll->next) { GDBusConnection *connection = ll->data; g_dbus_connection_emit_signal (connection, NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.freedesktop.DBus.Properties", "PropertiesChanged", signal_variant, NULL); } g_variant_unref (signal_variant); g_list_free_full (connections, g_object_unref); } else { g_variant_builder_clear (&builder); g_variant_builder_clear (&invalidated_builder); } g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free); skeleton->priv->changed_properties = NULL; skeleton->priv->changed_properties_idle_source = NULL; g_mutex_unlock (&skeleton->priv->lock); return FALSE; } static void _shell_extensions_schedule_emit_changed (ShellExtensionsSkeleton *skeleton, const _ExtendedGDBusPropertyInfo *info, guint prop_id, const GValue *orig_value) { ChangedProperty *cp; GList *l; cp = NULL; for (l = skeleton->priv->changed_properties; l != NULL; l = l->next) { ChangedProperty *i_cp = l->data; if (i_cp->info == info) { cp = i_cp; break; } } if (cp == NULL) { cp = g_new0 (ChangedProperty, 1); cp->prop_id = prop_id; cp->info = info; skeleton->priv->changed_properties = g_list_prepend (skeleton->priv->changed_properties, cp); g_value_init (&cp->orig_value, G_VALUE_TYPE (orig_value)); g_value_copy (orig_value, &cp->orig_value); } } static void shell_extensions_skeleton_notify (GObject *object, GParamSpec *pspec G_GNUC_UNUSED) { ShellExtensionsSkeleton *skeleton = SHELL_EXTENSIONS_SKELETON (object); g_mutex_lock (&skeleton->priv->lock); if (skeleton->priv->changed_properties != NULL && skeleton->priv->changed_properties_idle_source == NULL) { skeleton->priv->changed_properties_idle_source = g_idle_source_new (); g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT); g_source_set_callback (skeleton->priv->changed_properties_idle_source, _shell_extensions_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref); g_source_set_name (skeleton->priv->changed_properties_idle_source, "[generated] _shell_extensions_emit_changed"); g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context); g_source_unref (skeleton->priv->changed_properties_idle_source); } g_mutex_unlock (&skeleton->priv->lock); } static void shell_extensions_skeleton_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { const _ExtendedGDBusPropertyInfo *info; ShellExtensionsSkeleton *skeleton = SHELL_EXTENSIONS_SKELETON (object); g_assert (prop_id != 0 && prop_id - 1 < 2); info = (const _ExtendedGDBusPropertyInfo *) _shell_extensions_property_info_pointers[prop_id - 1]; g_mutex_lock (&skeleton->priv->lock); g_object_freeze_notify (object); if (!_g_value_equal (value, &skeleton->priv->properties[prop_id - 1])) { if (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)) != NULL && info->emits_changed_signal) _shell_extensions_schedule_emit_changed (skeleton, info, prop_id, &skeleton->priv->properties[prop_id - 1]); g_value_copy (value, &skeleton->priv->properties[prop_id - 1]); g_object_notify_by_pspec (object, pspec); } g_mutex_unlock (&skeleton->priv->lock); g_object_thaw_notify (object); } static void shell_extensions_skeleton_init (ShellExtensionsSkeleton *skeleton) { #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 skeleton->priv = shell_extensions_skeleton_get_instance_private (skeleton); #else skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, SHELL_TYPE_EXTENSIONS_SKELETON, ShellExtensionsSkeletonPrivate); #endif g_mutex_init (&skeleton->priv->lock); skeleton->priv->context = g_main_context_ref_thread_default (); skeleton->priv->properties = g_new0 (GValue, 2); g_value_init (&skeleton->priv->properties[0], G_TYPE_STRING); g_value_init (&skeleton->priv->properties[1], G_TYPE_BOOLEAN); } static const gchar * shell_extensions_skeleton_get_shell_version (ShellExtensions *object) { ShellExtensionsSkeleton *skeleton = SHELL_EXTENSIONS_SKELETON (object); const gchar *value; g_mutex_lock (&skeleton->priv->lock); value = g_marshal_value_peek_string (&(skeleton->priv->properties[0])); g_mutex_unlock (&skeleton->priv->lock); return value; } static gboolean shell_extensions_skeleton_get_user_extensions_enabled (ShellExtensions *object) { ShellExtensionsSkeleton *skeleton = SHELL_EXTENSIONS_SKELETON (object); gboolean value; g_mutex_lock (&skeleton->priv->lock); value = g_marshal_value_peek_boolean (&(skeleton->priv->properties[1])); g_mutex_unlock (&skeleton->priv->lock); return value; } static void shell_extensions_skeleton_class_init (ShellExtensionsSkeletonClass *klass) { GObjectClass *gobject_class; GDBusInterfaceSkeletonClass *skeleton_class; gobject_class = G_OBJECT_CLASS (klass); gobject_class->finalize = shell_extensions_skeleton_finalize; gobject_class->get_property = shell_extensions_skeleton_get_property; gobject_class->set_property = shell_extensions_skeleton_set_property; gobject_class->notify = shell_extensions_skeleton_notify; shell_extensions_override_properties (gobject_class, 1); skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass); skeleton_class->get_info = shell_extensions_skeleton_dbus_interface_get_info; skeleton_class->get_properties = shell_extensions_skeleton_dbus_interface_get_properties; skeleton_class->flush = shell_extensions_skeleton_dbus_interface_flush; skeleton_class->get_vtable = shell_extensions_skeleton_dbus_interface_get_vtable; #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38 g_type_class_add_private (klass, sizeof (ShellExtensionsSkeletonPrivate)); #endif } static void shell_extensions_skeleton_iface_init (ShellExtensionsIface *iface) { iface->extension_state_changed = _shell_extensions_on_signal_extension_state_changed; iface->extension_status_changed = _shell_extensions_on_signal_extension_status_changed; iface->get_shell_version = shell_extensions_skeleton_get_shell_version; iface->get_user_extensions_enabled = shell_extensions_skeleton_get_user_extensions_enabled; } /** * shell_extensions_skeleton_new: * * Creates a skeleton object for the D-Bus interface org.gnome.Shell.Extensions. * * Returns: (transfer full) (type ShellExtensionsSkeleton): The skeleton object. */ ShellExtensions * shell_extensions_skeleton_new (void) { return SHELL_EXTENSIONS (g_object_new (SHELL_TYPE_EXTENSIONS_SKELETON, NULL)); } /* ------------------------------------------------------------------------ * Code for Object, ObjectProxy and ObjectSkeleton * ------------------------------------------------------------------------ */ /** * SECTION:ShellObject * @title: ShellObject * @short_description: Specialized GDBusObject types * * This section contains the #ShellObject, #ShellObjectProxy, and #ShellObjectSkeleton types which make it easier to work with objects implementing generated types for D-Bus interfaces. */ /** * ShellObject: * * The #ShellObject type is a specialized container of interfaces. */ /** * ShellObjectIface: * @parent_iface: The parent interface. * * Virtual table for the #ShellObject interface. */ typedef ShellObjectIface ShellObjectInterface; G_DEFINE_INTERFACE_WITH_CODE (ShellObject, shell_object, G_TYPE_OBJECT, g_type_interface_add_prerequisite (g_define_type_id, G_TYPE_DBUS_OBJECT);) static void shell_object_default_init (ShellObjectIface *iface) { /** * ShellObject:extensions: * * The #ShellExtensions instance corresponding to the D-Bus interface org.gnome.Shell.Extensions, if any. * * Connect to the #GObject::notify signal to get informed of property changes. */ g_object_interface_install_property (iface, g_param_spec_object ("extensions", "extensions", "extensions", SHELL_TYPE_EXTENSIONS, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); } /** * shell_object_get_extensions: * @object: A #ShellObject. * * Gets the #ShellExtensions instance for the D-Bus interface org.gnome.Shell.Extensions on @object, if any. * * Returns: (transfer full) (nullable): A #ShellExtensions that must be freed with g_object_unref() or %NULL if @object does not implement the interface. */ ShellExtensions *shell_object_get_extensions (ShellObject *object) { GDBusInterface *ret; ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.Shell.Extensions"); if (ret == NULL) return NULL; return SHELL_EXTENSIONS (ret); } /** * shell_object_peek_extensions: (skip) * @object: A #ShellObject. * * Like shell_object_get_extensions() but doesn't increase the reference count on the returned object. * * It is not safe to use the returned object if you are on another thread than the one where the #GDBusObjectManagerClient or #GDBusObjectManagerServer for @object is running. * * Returns: (transfer none) (nullable): A #ShellExtensions or %NULL if @object does not implement the interface. Do not free the returned object, it is owned by @object. */ ShellExtensions *shell_object_peek_extensions (ShellObject *object) { GDBusInterface *ret; ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.Shell.Extensions"); if (ret == NULL) return NULL; g_object_unref (ret); return SHELL_EXTENSIONS (ret); } static void shell_object_notify (GDBusObject *object, GDBusInterface *interface) { _ExtendedGDBusInterfaceInfo *info = (_ExtendedGDBusInterfaceInfo *) g_dbus_interface_get_info (interface); /* info can be NULL if the other end is using a D-Bus interface we don't know * anything about, for example old generated code in this process talking to * newer generated code in the other process. */ if (info != NULL) g_object_notify (G_OBJECT (object), info->hyphen_name); } /** * ShellObjectProxy: * * The #ShellObjectProxy structure contains only private data and should only be accessed using the provided API. */ /** * ShellObjectProxyClass: * @parent_class: The parent class. * * Class structure for #ShellObjectProxy. */ static void shell_object_proxy__shell_object_iface_init (ShellObjectIface *iface G_GNUC_UNUSED) { } static void shell_object_proxy__g_dbus_object_iface_init (GDBusObjectIface *iface) { iface->interface_added = shell_object_notify; iface->interface_removed = shell_object_notify; } G_DEFINE_TYPE_WITH_CODE (ShellObjectProxy, shell_object_proxy, G_TYPE_DBUS_OBJECT_PROXY, G_IMPLEMENT_INTERFACE (SHELL_TYPE_OBJECT, shell_object_proxy__shell_object_iface_init) G_IMPLEMENT_INTERFACE (G_TYPE_DBUS_OBJECT, shell_object_proxy__g_dbus_object_iface_init)) static void shell_object_proxy_init (ShellObjectProxy *object G_GNUC_UNUSED) { } static void shell_object_proxy_set_property (GObject *gobject, guint prop_id, const GValue *value G_GNUC_UNUSED, GParamSpec *pspec) { G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec); } static void shell_object_proxy_get_property (GObject *gobject, guint prop_id, GValue *value, GParamSpec *pspec) { ShellObjectProxy *object = SHELL_OBJECT_PROXY (gobject); GDBusInterface *interface; switch (prop_id) { case 1: interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.Shell.Extensions"); g_value_take_object (value, interface); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec); break; } } static void shell_object_proxy_class_init (ShellObjectProxyClass *klass) { GObjectClass *gobject_class = G_OBJECT_CLASS (klass); gobject_class->set_property = shell_object_proxy_set_property; gobject_class->get_property = shell_object_proxy_get_property; g_object_class_override_property (gobject_class, 1, "extensions"); } /** * shell_object_proxy_new: * @connection: A #GDBusConnection. * @object_path: An object path. * * Creates a new proxy object. * * Returns: (transfer full): The proxy object. */ ShellObjectProxy * shell_object_proxy_new (GDBusConnection *connection, const gchar *object_path) { g_return_val_if_fail (G_IS_DBUS_CONNECTION (connection), NULL); g_return_val_if_fail (g_variant_is_object_path (object_path), NULL); return SHELL_OBJECT_PROXY (g_object_new (SHELL_TYPE_OBJECT_PROXY, "g-connection", connection, "g-object-path", object_path, NULL)); } /** * ShellObjectSkeleton: * * The #ShellObjectSkeleton structure contains only private data and should only be accessed using the provided API. */ /** * ShellObjectSkeletonClass: * @parent_class: The parent class. * * Class structure for #ShellObjectSkeleton. */ static void shell_object_skeleton__shell_object_iface_init (ShellObjectIface *iface G_GNUC_UNUSED) { } static void shell_object_skeleton__g_dbus_object_iface_init (GDBusObjectIface *iface) { iface->interface_added = shell_object_notify; iface->interface_removed = shell_object_notify; } G_DEFINE_TYPE_WITH_CODE (ShellObjectSkeleton, shell_object_skeleton, G_TYPE_DBUS_OBJECT_SKELETON, G_IMPLEMENT_INTERFACE (SHELL_TYPE_OBJECT, shell_object_skeleton__shell_object_iface_init) G_IMPLEMENT_INTERFACE (G_TYPE_DBUS_OBJECT, shell_object_skeleton__g_dbus_object_iface_init)) static void shell_object_skeleton_init (ShellObjectSkeleton *object G_GNUC_UNUSED) { } static void shell_object_skeleton_set_property (GObject *gobject, guint prop_id, const GValue *value, GParamSpec *pspec) { ShellObjectSkeleton *object = SHELL_OBJECT_SKELETON (gobject); GDBusInterfaceSkeleton *interface; switch (prop_id) { case 1: interface = g_value_get_object (value); if (interface != NULL) { g_warn_if_fail (SHELL_IS_EXTENSIONS (interface)); g_dbus_object_skeleton_add_interface (G_DBUS_OBJECT_SKELETON (object), interface); } else { g_dbus_object_skeleton_remove_interface_by_name (G_DBUS_OBJECT_SKELETON (object), "org.gnome.Shell.Extensions"); } break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec); break; } } static void shell_object_skeleton_get_property (GObject *gobject, guint prop_id, GValue *value, GParamSpec *pspec) { ShellObjectSkeleton *object = SHELL_OBJECT_SKELETON (gobject); GDBusInterface *interface; switch (prop_id) { case 1: interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.Shell.Extensions"); g_value_take_object (value, interface); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec); break; } } static void shell_object_skeleton_class_init (ShellObjectSkeletonClass *klass) { GObjectClass *gobject_class = G_OBJECT_CLASS (klass); gobject_class->set_property = shell_object_skeleton_set_property; gobject_class->get_property = shell_object_skeleton_get_property; g_object_class_override_property (gobject_class, 1, "extensions"); } /** * shell_object_skeleton_new: * @object_path: An object path. * * Creates a new skeleton object. * * Returns: (transfer full): The skeleton object. */ ShellObjectSkeleton * shell_object_skeleton_new (const gchar *object_path) { g_return_val_if_fail (g_variant_is_object_path (object_path), NULL); return SHELL_OBJECT_SKELETON (g_object_new (SHELL_TYPE_OBJECT_SKELETON, "g-object-path", object_path, NULL)); } /** * shell_object_skeleton_set_extensions: * @object: A #ShellObjectSkeleton. * @interface_: (nullable): A #ShellExtensions or %NULL to clear the interface. * * Sets the #ShellExtensions instance for the D-Bus interface org.gnome.Shell.Extensions on @object. */ void shell_object_skeleton_set_extensions (ShellObjectSkeleton *object, ShellExtensions *interface_) { g_object_set (G_OBJECT (object), "extensions", interface_, NULL); } /* ------------------------------------------------------------------------ * Code for ObjectManager client * ------------------------------------------------------------------------ */ /** * SECTION:ShellObjectManagerClient * @title: ShellObjectManagerClient * @short_description: Generated GDBusObjectManagerClient type * * This section contains a #GDBusObjectManagerClient that uses shell_object_manager_client_get_proxy_type() as the #GDBusProxyTypeFunc. */ /** * ShellObjectManagerClient: * * The #ShellObjectManagerClient structure contains only private data and should only be accessed using the provided API. */ /** * ShellObjectManagerClientClass: * @parent_class: The parent class. * * Class structure for #ShellObjectManagerClient. */ G_DEFINE_TYPE (ShellObjectManagerClient, shell_object_manager_client, G_TYPE_DBUS_OBJECT_MANAGER_CLIENT) static void shell_object_manager_client_init (ShellObjectManagerClient *manager G_GNUC_UNUSED) { } static void shell_object_manager_client_class_init (ShellObjectManagerClientClass *klass G_GNUC_UNUSED) { } /** * shell_object_manager_client_get_proxy_type: * @manager: A #GDBusObjectManagerClient. * @object_path: The object path of the remote object (unused). * @interface_name: (nullable): Interface name of the remote object or %NULL to get the object proxy #GType. * @user_data: User data (unused). * * A #GDBusProxyTypeFunc that maps @interface_name to the generated #GDBusObjectProxy derived and #GDBusProxy derived types. * * Returns: A #GDBusProxy derived #GType if @interface_name is not %NULL, otherwise the #GType for #ShellObjectProxy. */ GType shell_object_manager_client_get_proxy_type (GDBusObjectManagerClient *manager G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name, gpointer user_data G_GNUC_UNUSED) { static gsize once_init_value = 0; static GHashTable *lookup_hash; GType ret; if (interface_name == NULL) return SHELL_TYPE_OBJECT_PROXY; if (g_once_init_enter (&once_init_value)) { lookup_hash = g_hash_table_new (g_str_hash, g_str_equal); g_hash_table_insert (lookup_hash, (gpointer) "org.gnome.Shell.Extensions", (gpointer) (guintptr) (SHELL_TYPE_EXTENSIONS_PROXY)); g_once_init_leave (&once_init_value, 1); } ret = (GType) (guintptr) (g_hash_table_lookup (lookup_hash, interface_name)); if (ret == (GType) 0) ret = G_TYPE_DBUS_PROXY; return ret; } /** * shell_object_manager_client_new: * @connection: A #GDBusConnection. * @flags: Flags from the #GDBusObjectManagerClientFlags enumeration. * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied. * @user_data: User data to pass to @callback. * * Asynchronously creates #GDBusObjectManagerClient using shell_object_manager_client_get_proxy_type() as the #GDBusProxyTypeFunc. See g_dbus_object_manager_client_new() for more details. * * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). * You can then call shell_object_manager_client_new_finish() to get the result of the operation. * * See shell_object_manager_client_new_sync() for the synchronous, blocking version of this constructor. */ void shell_object_manager_client_new ( GDBusConnection *connection, GDBusObjectManagerClientFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_async_initable_new_async (SHELL_TYPE_OBJECT_MANAGER_CLIENT, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "flags", flags, "name", name, "connection", connection, "object-path", object_path, "get-proxy-type-func", shell_object_manager_client_get_proxy_type, NULL); } /** * shell_object_manager_client_new_finish: * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to shell_object_manager_client_new(). * @error: Return location for error or %NULL * * Finishes an operation started with shell_object_manager_client_new(). * * Returns: (transfer full) (type ShellObjectManagerClient): The constructed object manager client or %NULL if @error is set. */ GDBusObjectManager * shell_object_manager_client_new_finish ( GAsyncResult *res, GError **error) { GObject *ret; GObject *source_object; source_object = g_async_result_get_source_object (res); ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error); g_object_unref (source_object); if (ret != NULL) return G_DBUS_OBJECT_MANAGER (ret); else return NULL; } /** * shell_object_manager_client_new_sync: * @connection: A #GDBusConnection. * @flags: Flags from the #GDBusObjectManagerClientFlags enumeration. * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL * * Synchronously creates #GDBusObjectManagerClient using shell_object_manager_client_get_proxy_type() as the #GDBusProxyTypeFunc. See g_dbus_object_manager_client_new_sync() for more details. * * The calling thread is blocked until a reply is received. * * See shell_object_manager_client_new() for the asynchronous version of this constructor. * * Returns: (transfer full) (type ShellObjectManagerClient): The constructed object manager client or %NULL if @error is set. */ GDBusObjectManager * shell_object_manager_client_new_sync ( GDBusConnection *connection, GDBusObjectManagerClientFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GError **error) { GInitable *ret; ret = g_initable_new (SHELL_TYPE_OBJECT_MANAGER_CLIENT, cancellable, error, "flags", flags, "name", name, "connection", connection, "object-path", object_path, "get-proxy-type-func", shell_object_manager_client_get_proxy_type, NULL); if (ret != NULL) return G_DBUS_OBJECT_MANAGER (ret); else return NULL; } /** * shell_object_manager_client_new_for_bus: * @bus_type: A #GBusType. * @flags: Flags from the #GDBusObjectManagerClientFlags enumeration. * @name: A bus name (well-known or unique). * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied. * @user_data: User data to pass to @callback. * * Like shell_object_manager_client_new() but takes a #GBusType instead of a #GDBusConnection. * * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). * You can then call shell_object_manager_client_new_for_bus_finish() to get the result of the operation. * * See shell_object_manager_client_new_for_bus_sync() for the synchronous, blocking version of this constructor. */ void shell_object_manager_client_new_for_bus ( GBusType bus_type, GDBusObjectManagerClientFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_async_initable_new_async (SHELL_TYPE_OBJECT_MANAGER_CLIENT, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "flags", flags, "name", name, "bus-type", bus_type, "object-path", object_path, "get-proxy-type-func", shell_object_manager_client_get_proxy_type, NULL); } /** * shell_object_manager_client_new_for_bus_finish: * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to shell_object_manager_client_new_for_bus(). * @error: Return location for error or %NULL * * Finishes an operation started with shell_object_manager_client_new_for_bus(). * * Returns: (transfer full) (type ShellObjectManagerClient): The constructed object manager client or %NULL if @error is set. */ GDBusObjectManager * shell_object_manager_client_new_for_bus_finish ( GAsyncResult *res, GError **error) { GObject *ret; GObject *source_object; source_object = g_async_result_get_source_object (res); ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error); g_object_unref (source_object); if (ret != NULL) return G_DBUS_OBJECT_MANAGER (ret); else return NULL; } /** * shell_object_manager_client_new_for_bus_sync: * @bus_type: A #GBusType. * @flags: Flags from the #GDBusObjectManagerClientFlags enumeration. * @name: A bus name (well-known or unique). * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL * * Like shell_object_manager_client_new_sync() but takes a #GBusType instead of a #GDBusConnection. * * The calling thread is blocked until a reply is received. * * See shell_object_manager_client_new_for_bus() for the asynchronous version of this constructor. * * Returns: (transfer full) (type ShellObjectManagerClient): The constructed object manager client or %NULL if @error is set. */ GDBusObjectManager * shell_object_manager_client_new_for_bus_sync ( GBusType bus_type, GDBusObjectManagerClientFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GError **error) { GInitable *ret; ret = g_initable_new (SHELL_TYPE_OBJECT_MANAGER_CLIENT, cancellable, error, "flags", flags, "name", name, "bus-type", bus_type, "object-path", object_path, "get-proxy-type-func", shell_object_manager_client_get_proxy_type, NULL); if (ret != NULL) return G_DBUS_OBJECT_MANAGER (ret); else return NULL; } extension-manager-0.6.3/src/local/shell-dbus-interface.h000066400000000000000000000524341477302130300232060ustar00rootroot00000000000000/* * This file is generated by gdbus-codegen, do not modify it. * * The license of this code is the same as for the D-Bus interface description * it was derived from. Note that it links to GLib, so must comply with the * LGPL linking clauses. */ #ifndef __SHELL_DBUS_INTERFACE_H__ #define __SHELL_DBUS_INTERFACE_H__ #include G_BEGIN_DECLS /* ------------------------------------------------------------------------ */ /* Declarations for org.gnome.Shell.Extensions */ #define SHELL_TYPE_EXTENSIONS (shell_extensions_get_type ()) #define SHELL_EXTENSIONS(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), SHELL_TYPE_EXTENSIONS, ShellExtensions)) #define SHELL_IS_EXTENSIONS(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), SHELL_TYPE_EXTENSIONS)) #define SHELL_EXTENSIONS_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), SHELL_TYPE_EXTENSIONS, ShellExtensionsIface)) struct _ShellExtensions; typedef struct _ShellExtensions ShellExtensions; typedef struct _ShellExtensionsIface ShellExtensionsIface; struct _ShellExtensionsIface { GTypeInterface parent_iface; gboolean (*handle_check_for_updates) ( ShellExtensions *object, GDBusMethodInvocation *invocation); gboolean (*handle_disable_extension) ( ShellExtensions *object, GDBusMethodInvocation *invocation, const gchar *arg_uuid); gboolean (*handle_enable_extension) ( ShellExtensions *object, GDBusMethodInvocation *invocation, const gchar *arg_uuid); gboolean (*handle_get_extension_errors) ( ShellExtensions *object, GDBusMethodInvocation *invocation, const gchar *arg_uuid); gboolean (*handle_get_extension_info) ( ShellExtensions *object, GDBusMethodInvocation *invocation, const gchar *arg_uuid); gboolean (*handle_install_remote_extension) ( ShellExtensions *object, GDBusMethodInvocation *invocation, const gchar *arg_uuid); gboolean (*handle_launch_extension_prefs) ( ShellExtensions *object, GDBusMethodInvocation *invocation, const gchar *arg_uuid); gboolean (*handle_list_extensions) ( ShellExtensions *object, GDBusMethodInvocation *invocation); gboolean (*handle_open_extension_prefs) ( ShellExtensions *object, GDBusMethodInvocation *invocation, const gchar *arg_uuid, const gchar *arg_parent_window, GVariant *arg_options); gboolean (*handle_reload_extension) ( ShellExtensions *object, GDBusMethodInvocation *invocation, const gchar *arg_uuid); gboolean (*handle_uninstall_extension) ( ShellExtensions *object, GDBusMethodInvocation *invocation, const gchar *arg_uuid); const gchar * (*get_shell_version) (ShellExtensions *object); gboolean (*get_user_extensions_enabled) (ShellExtensions *object); void (*extension_state_changed) ( ShellExtensions *object, const gchar *arg_uuid, GVariant *arg_state); void (*extension_status_changed) ( ShellExtensions *object, const gchar *arg_uuid, gint arg_state, const gchar *arg_error); }; GType shell_extensions_get_type (void) G_GNUC_CONST; GDBusInterfaceInfo *shell_extensions_interface_info (void); guint shell_extensions_override_properties (GObjectClass *klass, guint property_id_begin); /* D-Bus method call completion functions: */ void shell_extensions_complete_list_extensions ( ShellExtensions *object, GDBusMethodInvocation *invocation, GVariant *extensions); void shell_extensions_complete_get_extension_info ( ShellExtensions *object, GDBusMethodInvocation *invocation, GVariant *info); void shell_extensions_complete_get_extension_errors ( ShellExtensions *object, GDBusMethodInvocation *invocation, const gchar *const *errors); void shell_extensions_complete_install_remote_extension ( ShellExtensions *object, GDBusMethodInvocation *invocation, const gchar *result); void shell_extensions_complete_uninstall_extension ( ShellExtensions *object, GDBusMethodInvocation *invocation, gboolean success); void shell_extensions_complete_reload_extension ( ShellExtensions *object, GDBusMethodInvocation *invocation); void shell_extensions_complete_enable_extension ( ShellExtensions *object, GDBusMethodInvocation *invocation, gboolean success); void shell_extensions_complete_disable_extension ( ShellExtensions *object, GDBusMethodInvocation *invocation, gboolean success); void shell_extensions_complete_launch_extension_prefs ( ShellExtensions *object, GDBusMethodInvocation *invocation); void shell_extensions_complete_open_extension_prefs ( ShellExtensions *object, GDBusMethodInvocation *invocation); void shell_extensions_complete_check_for_updates ( ShellExtensions *object, GDBusMethodInvocation *invocation); /* D-Bus signal emissions functions: */ void shell_extensions_emit_extension_state_changed ( ShellExtensions *object, const gchar *arg_uuid, GVariant *arg_state); void shell_extensions_emit_extension_status_changed ( ShellExtensions *object, const gchar *arg_uuid, gint arg_state, const gchar *arg_error); /* D-Bus method calls: */ void shell_extensions_call_list_extensions ( ShellExtensions *proxy, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); gboolean shell_extensions_call_list_extensions_finish ( ShellExtensions *proxy, GVariant **out_extensions, GAsyncResult *res, GError **error); gboolean shell_extensions_call_list_extensions_sync ( ShellExtensions *proxy, GVariant **out_extensions, GCancellable *cancellable, GError **error); void shell_extensions_call_get_extension_info ( ShellExtensions *proxy, const gchar *arg_uuid, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); gboolean shell_extensions_call_get_extension_info_finish ( ShellExtensions *proxy, GVariant **out_info, GAsyncResult *res, GError **error); gboolean shell_extensions_call_get_extension_info_sync ( ShellExtensions *proxy, const gchar *arg_uuid, GVariant **out_info, GCancellable *cancellable, GError **error); void shell_extensions_call_get_extension_errors ( ShellExtensions *proxy, const gchar *arg_uuid, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); gboolean shell_extensions_call_get_extension_errors_finish ( ShellExtensions *proxy, gchar ***out_errors, GAsyncResult *res, GError **error); gboolean shell_extensions_call_get_extension_errors_sync ( ShellExtensions *proxy, const gchar *arg_uuid, gchar ***out_errors, GCancellable *cancellable, GError **error); void shell_extensions_call_install_remote_extension ( ShellExtensions *proxy, const gchar *arg_uuid, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); gboolean shell_extensions_call_install_remote_extension_finish ( ShellExtensions *proxy, gchar **out_result, GAsyncResult *res, GError **error); gboolean shell_extensions_call_install_remote_extension_sync ( ShellExtensions *proxy, const gchar *arg_uuid, gchar **out_result, GCancellable *cancellable, GError **error); void shell_extensions_call_uninstall_extension ( ShellExtensions *proxy, const gchar *arg_uuid, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); gboolean shell_extensions_call_uninstall_extension_finish ( ShellExtensions *proxy, gboolean *out_success, GAsyncResult *res, GError **error); gboolean shell_extensions_call_uninstall_extension_sync ( ShellExtensions *proxy, const gchar *arg_uuid, gboolean *out_success, GCancellable *cancellable, GError **error); void shell_extensions_call_reload_extension ( ShellExtensions *proxy, const gchar *arg_uuid, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); gboolean shell_extensions_call_reload_extension_finish ( ShellExtensions *proxy, GAsyncResult *res, GError **error); gboolean shell_extensions_call_reload_extension_sync ( ShellExtensions *proxy, const gchar *arg_uuid, GCancellable *cancellable, GError **error); void shell_extensions_call_enable_extension ( ShellExtensions *proxy, const gchar *arg_uuid, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); gboolean shell_extensions_call_enable_extension_finish ( ShellExtensions *proxy, gboolean *out_success, GAsyncResult *res, GError **error); gboolean shell_extensions_call_enable_extension_sync ( ShellExtensions *proxy, const gchar *arg_uuid, gboolean *out_success, GCancellable *cancellable, GError **error); void shell_extensions_call_disable_extension ( ShellExtensions *proxy, const gchar *arg_uuid, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); gboolean shell_extensions_call_disable_extension_finish ( ShellExtensions *proxy, gboolean *out_success, GAsyncResult *res, GError **error); gboolean shell_extensions_call_disable_extension_sync ( ShellExtensions *proxy, const gchar *arg_uuid, gboolean *out_success, GCancellable *cancellable, GError **error); void shell_extensions_call_launch_extension_prefs ( ShellExtensions *proxy, const gchar *arg_uuid, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); gboolean shell_extensions_call_launch_extension_prefs_finish ( ShellExtensions *proxy, GAsyncResult *res, GError **error); gboolean shell_extensions_call_launch_extension_prefs_sync ( ShellExtensions *proxy, const gchar *arg_uuid, GCancellable *cancellable, GError **error); void shell_extensions_call_open_extension_prefs ( ShellExtensions *proxy, const gchar *arg_uuid, const gchar *arg_parent_window, GVariant *arg_options, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); gboolean shell_extensions_call_open_extension_prefs_finish ( ShellExtensions *proxy, GAsyncResult *res, GError **error); gboolean shell_extensions_call_open_extension_prefs_sync ( ShellExtensions *proxy, const gchar *arg_uuid, const gchar *arg_parent_window, GVariant *arg_options, GCancellable *cancellable, GError **error); void shell_extensions_call_check_for_updates ( ShellExtensions *proxy, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); gboolean shell_extensions_call_check_for_updates_finish ( ShellExtensions *proxy, GAsyncResult *res, GError **error); gboolean shell_extensions_call_check_for_updates_sync ( ShellExtensions *proxy, GCancellable *cancellable, GError **error); /* D-Bus property accessors: */ const gchar *shell_extensions_get_shell_version (ShellExtensions *object); gchar *shell_extensions_dup_shell_version (ShellExtensions *object); void shell_extensions_set_shell_version (ShellExtensions *object, const gchar *value); gboolean shell_extensions_get_user_extensions_enabled (ShellExtensions *object); void shell_extensions_set_user_extensions_enabled (ShellExtensions *object, gboolean value); /* ---- */ #define SHELL_TYPE_EXTENSIONS_PROXY (shell_extensions_proxy_get_type ()) #define SHELL_EXTENSIONS_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), SHELL_TYPE_EXTENSIONS_PROXY, ShellExtensionsProxy)) #define SHELL_EXTENSIONS_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), SHELL_TYPE_EXTENSIONS_PROXY, ShellExtensionsProxyClass)) #define SHELL_EXTENSIONS_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), SHELL_TYPE_EXTENSIONS_PROXY, ShellExtensionsProxyClass)) #define SHELL_IS_EXTENSIONS_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), SHELL_TYPE_EXTENSIONS_PROXY)) #define SHELL_IS_EXTENSIONS_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), SHELL_TYPE_EXTENSIONS_PROXY)) typedef struct _ShellExtensionsProxy ShellExtensionsProxy; typedef struct _ShellExtensionsProxyClass ShellExtensionsProxyClass; typedef struct _ShellExtensionsProxyPrivate ShellExtensionsProxyPrivate; struct _ShellExtensionsProxy { /*< private >*/ GDBusProxy parent_instance; ShellExtensionsProxyPrivate *priv; }; struct _ShellExtensionsProxyClass { GDBusProxyClass parent_class; }; GType shell_extensions_proxy_get_type (void) G_GNUC_CONST; #if GLIB_CHECK_VERSION(2, 44, 0) G_DEFINE_AUTOPTR_CLEANUP_FUNC (ShellExtensionsProxy, g_object_unref) #endif void shell_extensions_proxy_new ( GDBusConnection *connection, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); ShellExtensions *shell_extensions_proxy_new_finish ( GAsyncResult *res, GError **error); ShellExtensions *shell_extensions_proxy_new_sync ( GDBusConnection *connection, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GError **error); void shell_extensions_proxy_new_for_bus ( GBusType bus_type, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); ShellExtensions *shell_extensions_proxy_new_for_bus_finish ( GAsyncResult *res, GError **error); ShellExtensions *shell_extensions_proxy_new_for_bus_sync ( GBusType bus_type, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GError **error); /* ---- */ #define SHELL_TYPE_EXTENSIONS_SKELETON (shell_extensions_skeleton_get_type ()) #define SHELL_EXTENSIONS_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), SHELL_TYPE_EXTENSIONS_SKELETON, ShellExtensionsSkeleton)) #define SHELL_EXTENSIONS_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), SHELL_TYPE_EXTENSIONS_SKELETON, ShellExtensionsSkeletonClass)) #define SHELL_EXTENSIONS_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), SHELL_TYPE_EXTENSIONS_SKELETON, ShellExtensionsSkeletonClass)) #define SHELL_IS_EXTENSIONS_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), SHELL_TYPE_EXTENSIONS_SKELETON)) #define SHELL_IS_EXTENSIONS_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), SHELL_TYPE_EXTENSIONS_SKELETON)) typedef struct _ShellExtensionsSkeleton ShellExtensionsSkeleton; typedef struct _ShellExtensionsSkeletonClass ShellExtensionsSkeletonClass; typedef struct _ShellExtensionsSkeletonPrivate ShellExtensionsSkeletonPrivate; struct _ShellExtensionsSkeleton { /*< private >*/ GDBusInterfaceSkeleton parent_instance; ShellExtensionsSkeletonPrivate *priv; }; struct _ShellExtensionsSkeletonClass { GDBusInterfaceSkeletonClass parent_class; }; GType shell_extensions_skeleton_get_type (void) G_GNUC_CONST; #if GLIB_CHECK_VERSION(2, 44, 0) G_DEFINE_AUTOPTR_CLEANUP_FUNC (ShellExtensionsSkeleton, g_object_unref) #endif ShellExtensions *shell_extensions_skeleton_new (void); /* ---- */ #define SHELL_TYPE_OBJECT (shell_object_get_type ()) #define SHELL_OBJECT(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), SHELL_TYPE_OBJECT, ShellObject)) #define SHELL_IS_OBJECT(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), SHELL_TYPE_OBJECT)) #define SHELL_OBJECT_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), SHELL_TYPE_OBJECT, ShellObject)) struct _ShellObject; typedef struct _ShellObject ShellObject; typedef struct _ShellObjectIface ShellObjectIface; struct _ShellObjectIface { GTypeInterface parent_iface; }; GType shell_object_get_type (void) G_GNUC_CONST; ShellExtensions *shell_object_get_extensions (ShellObject *object); ShellExtensions *shell_object_peek_extensions (ShellObject *object); #define SHELL_TYPE_OBJECT_PROXY (shell_object_proxy_get_type ()) #define SHELL_OBJECT_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), SHELL_TYPE_OBJECT_PROXY, ShellObjectProxy)) #define SHELL_OBJECT_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), SHELL_TYPE_OBJECT_PROXY, ShellObjectProxyClass)) #define SHELL_OBJECT_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), SHELL_TYPE_OBJECT_PROXY, ShellObjectProxyClass)) #define SHELL_IS_OBJECT_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), SHELL_TYPE_OBJECT_PROXY)) #define SHELL_IS_OBJECT_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), SHELL_TYPE_OBJECT_PROXY)) typedef struct _ShellObjectProxy ShellObjectProxy; typedef struct _ShellObjectProxyClass ShellObjectProxyClass; typedef struct _ShellObjectProxyPrivate ShellObjectProxyPrivate; struct _ShellObjectProxy { /*< private >*/ GDBusObjectProxy parent_instance; ShellObjectProxyPrivate *priv; }; struct _ShellObjectProxyClass { GDBusObjectProxyClass parent_class; }; GType shell_object_proxy_get_type (void) G_GNUC_CONST; #if GLIB_CHECK_VERSION(2, 44, 0) G_DEFINE_AUTOPTR_CLEANUP_FUNC (ShellObjectProxy, g_object_unref) #endif ShellObjectProxy *shell_object_proxy_new (GDBusConnection *connection, const gchar *object_path); #define SHELL_TYPE_OBJECT_SKELETON (shell_object_skeleton_get_type ()) #define SHELL_OBJECT_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), SHELL_TYPE_OBJECT_SKELETON, ShellObjectSkeleton)) #define SHELL_OBJECT_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), SHELL_TYPE_OBJECT_SKELETON, ShellObjectSkeletonClass)) #define SHELL_OBJECT_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), SHELL_TYPE_OBJECT_SKELETON, ShellObjectSkeletonClass)) #define SHELL_IS_OBJECT_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), SHELL_TYPE_OBJECT_SKELETON)) #define SHELL_IS_OBJECT_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), SHELL_TYPE_OBJECT_SKELETON)) typedef struct _ShellObjectSkeleton ShellObjectSkeleton; typedef struct _ShellObjectSkeletonClass ShellObjectSkeletonClass; typedef struct _ShellObjectSkeletonPrivate ShellObjectSkeletonPrivate; struct _ShellObjectSkeleton { /*< private >*/ GDBusObjectSkeleton parent_instance; ShellObjectSkeletonPrivate *priv; }; struct _ShellObjectSkeletonClass { GDBusObjectSkeletonClass parent_class; }; GType shell_object_skeleton_get_type (void) G_GNUC_CONST; #if GLIB_CHECK_VERSION(2, 44, 0) G_DEFINE_AUTOPTR_CLEANUP_FUNC (ShellObjectSkeleton, g_object_unref) #endif ShellObjectSkeleton *shell_object_skeleton_new (const gchar *object_path); void shell_object_skeleton_set_extensions (ShellObjectSkeleton *object, ShellExtensions *interface_); /* ---- */ #define SHELL_TYPE_OBJECT_MANAGER_CLIENT (shell_object_manager_client_get_type ()) #define SHELL_OBJECT_MANAGER_CLIENT(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), SHELL_TYPE_OBJECT_MANAGER_CLIENT, ShellObjectManagerClient)) #define SHELL_OBJECT_MANAGER_CLIENT_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), SHELL_TYPE_OBJECT_MANAGER_CLIENT, ShellObjectManagerClientClass)) #define SHELL_OBJECT_MANAGER_CLIENT_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), SHELL_TYPE_OBJECT_MANAGER_CLIENT, ShellObjectManagerClientClass)) #define SHELL_IS_OBJECT_MANAGER_CLIENT(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), SHELL_TYPE_OBJECT_MANAGER_CLIENT)) #define SHELL_IS_OBJECT_MANAGER_CLIENT_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), SHELL_TYPE_OBJECT_MANAGER_CLIENT)) typedef struct _ShellObjectManagerClient ShellObjectManagerClient; typedef struct _ShellObjectManagerClientClass ShellObjectManagerClientClass; typedef struct _ShellObjectManagerClientPrivate ShellObjectManagerClientPrivate; struct _ShellObjectManagerClient { /*< private >*/ GDBusObjectManagerClient parent_instance; ShellObjectManagerClientPrivate *priv; }; struct _ShellObjectManagerClientClass { GDBusObjectManagerClientClass parent_class; }; #if GLIB_CHECK_VERSION(2, 44, 0) G_DEFINE_AUTOPTR_CLEANUP_FUNC (ShellObjectManagerClient, g_object_unref) #endif GType shell_object_manager_client_get_type (void) G_GNUC_CONST; GType shell_object_manager_client_get_proxy_type (GDBusObjectManagerClient *manager, const gchar *object_path, const gchar *interface_name, gpointer user_data); void shell_object_manager_client_new ( GDBusConnection *connection, GDBusObjectManagerClientFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); GDBusObjectManager *shell_object_manager_client_new_finish ( GAsyncResult *res, GError **error); GDBusObjectManager *shell_object_manager_client_new_sync ( GDBusConnection *connection, GDBusObjectManagerClientFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GError **error); void shell_object_manager_client_new_for_bus ( GBusType bus_type, GDBusObjectManagerClientFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); GDBusObjectManager *shell_object_manager_client_new_for_bus_finish ( GAsyncResult *res, GError **error); GDBusObjectManager *shell_object_manager_client_new_for_bus_sync ( GBusType bus_type, GDBusObjectManagerClientFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GError **error); G_END_DECLS #endif /* __SHELL_DBUS_INTERFACE_H__ */ extension-manager-0.6.3/src/main.c000066400000000000000000000120341477302130300170230ustar00rootroot00000000000000/* * main.c * * Copyright 2022-2025 Matthew Jakeman * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General 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 #include #include #include "exm-config.h" #include "exm-application.h" #include "exm-backtrace.h" #include "exm-error-dialog.h" #define APP_URL "https://github.com/mjakeman/extension-manager" static int pipe_fd[2]; void handler (int sig) { const char *backtrace; g_print ("A fatal error has occurred.\n"); g_print ("Please report this to '%s' and attach the following crash report:\n\n", APP_URL); g_print ("START BACKTRACE\n\n"); backtrace = exm_backtrace_print (); g_print ("%s\n", backtrace); g_print ("END BACKTRACE\n\n"); if (backtrace) { // Send backtrace string over pipe ssize_t bytes_written = write (pipe_fd[1], backtrace, strlen (backtrace)); if (bytes_written < 0) g_warning ("Failed to write backtrace to pipe: %s", g_strerror (errno)); } close (pipe_fd[1]); // Terminate process signal (sig, SIG_DFL); kill (getpid (), sig); } static void run_crash_reporter (const char *error_text) { adw_init (); // Setup CSS GdkDisplay *display = gdk_display_get_default (); GtkCssProvider *provider = gtk_css_provider_new (); gtk_css_provider_load_from_resource (provider, g_strdup_printf ("%s/style.css", RESOURCE_PATH)); gtk_style_context_add_provider_for_display (display, GTK_STYLE_PROVIDER (provider), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); // Show error dialog with provided string ExmErrorDialog *err_dialog; err_dialog = exm_error_dialog_new (error_text); gtk_window_present (GTK_WINDOW (err_dialog)); // Iterate main loop until closed while (g_list_model_get_n_items (gtk_window_get_toplevels ()) > 0) g_main_context_iteration (NULL, TRUE); } static int run_app (int argc, char *argv[]) { g_autoptr(ExmApplication) app = NULL; int ret; /* Setup backtrace service */ exm_backtrace_init (argv[0]); signal (SIGSEGV, handler); /* * Create a new GtkApplication. The application manages our main loop, * application windows, integration with the window manager/compositor, and * desktop features such as file opening and single-instance applications. */ app = exm_application_new (APP_ID, G_APPLICATION_HANDLES_OPEN); /* * Run the application. This function will block until the application * exits. Upon return, we have our exit code to return to the shell. (This * is the code you see when you do `echo $?` after running a command in a * terminal. * * Since GtkApplication inherits from GApplication, we use the parent class * method "run". But we need to cast, which is what the "G_APPLICATION()" * macro does. */ ret = g_application_run (G_APPLICATION (app), argc, argv); return ret; } int main (int argc, char *argv[]) { gboolean use_crash_reporter; int pid; // Either side of the pipe use_crash_reporter = TRUE; // Set up gettext translations bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); textdomain (GETTEXT_PACKAGE); // Attempt to create the pipe if (pipe (pipe_fd) == -1) use_crash_reporter = FALSE; // Run app normally if (!use_crash_reporter) return run_app (argc, argv); // Run the GUI as a subprocess of the crash reporter. Depending // on the exit code, we can display the crash dialog. pid = fork(); // Child process if (pid == 0) { // Close reading end of pipe close (pipe_fd[0]); // Run app normally return run_app (argc, argv); } // Parent process else { char ch; GString *string_builder; char *error_text; // Close the writing end of pipe close (pipe_fd [1]); string_builder = g_string_new (""); while (read (pipe_fd[0], &ch, 1) != 0) g_string_append_c (string_builder, ch); // Wait for child to finish waitpid (pid, 0, 0); close (pipe_fd[0]); error_text = g_string_free (string_builder, FALSE); if (strlen (error_text) > 0) { // An error has occurred run_crash_reporter (error_text); g_free (error_text); return -1; } return 0; } } extension-manager-0.6.3/src/meson.build000066400000000000000000000043331477302130300201000ustar00rootroot00000000000000exm_sources = [ 'main.c', 'exm-window.c', 'exm-application.c', # Detail View 'exm-detail-view.c', 'exm-screenshot.c', 'exm-zoom-picture.c', 'exm-comment-tile.c', 'exm-comment-dialog.c', 'exm-rating.c', 'exm-info-bar.c', # Screenshot View 'exm-screenshot-view.c', # Installed Page 'exm-installed-page.c', 'exm-extension-row.c', # Browse Page 'exm-browse-page.c', 'exm-search-row.c', # Misc 'exm-error-dialog.c', 'exm-upgrade-assistant.c', 'exm-upgrade-result.c', 'exm-install-button.c', 'exm-backtrace.c', 'exm-utils.c' ] cc = meson.get_compiler('c') libbacktrace_dep = cc.find_library('backtrace', required: get_option('backtrace')) exm_deps = [ dependency('gtk4'), dependency('libadwaita-1', version: '>= 1.7.0'), dependency('gio-unix-2.0'), dependency('json-glib-1.0'), dependency('libsoup-3.0'), dependency('libxml-2.0'), ] if libbacktrace_dep.found() exm_deps += libbacktrace_dep endif gnome = import('gnome') subdir('local') subdir('web') blueprints = custom_target('blueprints', input: files( 'exm-browse-page.blp', 'exm-comment-dialog.blp', 'exm-comment-tile.blp', 'exm-detail-view.blp', 'exm-error-dialog.blp', 'exm-extension-row.blp', 'exm-help-overlay.blp', 'exm-info-bar.blp', 'exm-installed-page.blp', 'exm-install-button.blp', 'exm-rating.blp', 'exm-screenshot-view.blp', 'exm-screenshot.blp', 'exm-search-row.blp', 'exm-upgrade-assistant.blp', 'exm-window.blp' ), output: '.', command: [find_program('blueprint-compiler'), 'batch-compile', '@OUTPUT@', '@CURRENT_SOURCE_DIR@', '@INPUT@'], ) exm_sources += gnome.mkenums_simple('exm-enums', sources: 'exm-types.h' ) gresourceconf = configuration_data() gresourceconf.set('appstream_file', '@0@.metainfo.xml'.format(app_id)) gresourceconf.set('resource_path', '/' + app_id.replace('.', '/')) gresource_file = configure_file( input: 'exm.gresource.xml.in', output: 'exm.gresource.xml', configuration: gresourceconf, ) exm_sources += gnome.compile_resources('exm-resources', gresource_file, dependencies: [blueprints, appstream_file], c_name: 'exm' ) executable('extension-manager', exm_sources, dependencies: exm_deps, install: true, )extension-manager-0.6.3/src/res/000077500000000000000000000000001477302130300165245ustar00rootroot00000000000000extension-manager-0.6.3/src/res/plugin.png000066400000000000000000000036751477302130300205430ustar00rootroot00000000000000PNG  IHDR szzsBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org<:IDATXŖ[l\u9sg<۹'QЪZU*%Ry*%(V T<^T E"*PDUU!Ҥ&ع)6zޫs|@+uKKG3{kEUq$SŒ =щ77!V̓$䩎l+Ke>{D1R`˃fxSeύ>~8MLyF88H2 ?MX>ay4a YI" qD8r#;gzmrFxg4M;F/J%8ϢXs!!J%ZcN o{- ,|/'9-NaT!NSGUš+x \{)SꙜgza2ɃCHRHYTu"/EUWl޶ƆbUU\­{N8|.p,&)WK UT"͊|?8ũ9sgrq=U7@֬؛x("X9t(sY&J8uU,0X׻DPQCDq@+p-0WPը5x' a魔;mzKƱ%aCՈF6^Qmi6t4 z cM2Ok6[dK7]hARuRDdCb0ੰeVrA7]Ձi9`t!}:T %xod犄sraD!*iZhp4Kn*^jo=>@Lק|>es[\ŋ8`nlfJdYSE.RH___Egt3sGϝ>LaĕچlϮ<6NMжU}'\+tX:K^# {Z~Nr!3Gp=y{k_|T gߘ8$nfNiL&P;!`0wK{Y+<^NOxc2#"FḎg)e;z[ݲ>JqRuTLO' 1 Pm _=YhV-VGЅ n) o{Ŧ, ju}a#Y%$3S9 2@\&Qܷ^SfΜC!0%e6ױ֝(4 D ۞dI H^a+ݧ{:ox[V.!lBaR+Ewx (-G8(2>yg D,4bG%w@=J,%a0gY7O""UHgk+IENDB`extension-manager-0.6.3/src/res/suggestions.txt000066400000000000000000000000711477302130300216350ustar00rootroot00000000000000Blur my Shell Just Perfection Night Theme Switcher RunCatextension-manager-0.6.3/src/style.css000066400000000000000000000036701477302130300176130ustar00rootroot00000000000000.detail { margin: 24px; } .multiline { line-height: 140%; } .tint { /* Dark view_bg_color */ background-color: rgb(30 30 30); color: white; } .search-row { padding: 2px; } .update { color: #ff7800; } comment-tile { padding: 16px; } .detail-heading { margin-bottom: 6px; } rating { color: var(--yellow-4); } info-bar.horizontal > :not(:first-child), info-bar.horizontal > :not(:first-child) > row { border-radius: 0 12px 12px 0; } info-bar.horizontal > :not(:last-child), info-bar.horizontal > :not(:last-child) > row { border-radius: 12px 0 0 12px; } info-bar.vertical > :not(:first-child), info-bar.vertical > :not(:first-child) > row { border-radius: 0 0 12px 12px; } info-bar.vertical > :not(:last-child), info-bar.vertical > :not(:last-child) > row { border-radius: 12px 12px 0 0; } info-bar > :not(:first-child):not(:last-child), info-bar > :not(:first-child):not(:last-child) > row { border-radius: 0; } .card-separator { background: var(--card-shade-color); } .info-bar-item { background: transparent; box-shadow: 0 0 0 1px color-mix(in srgb, var(--card-shade-color), transparent); border-radius: 0; padding: 0; } .author-badge { background-color: var(--accent-color); border-radius: 999px; color: var(--window-bg-color); margin-left: 6px; padding: 2px 6px; } progressbar text { font-size: 14px; font-weight: bold; } /* Workaround for https://gitlab.gnome.org/GNOME/gtk/-/issues/5309 */ .boxed-list-placeholder > row:nth-last-child(2), .boxed-list-placeholder > row.expander:nth-last-child(2):not(:checked) > box > list > row.header, .boxed-list-placeholder > row.expander:nth-last-child(2) > box > revealer > list.nested > row:last-child { border-bottom: 0; border-bottom-left-radius: 12px; border-bottom-right-radius: 12px; } .boxed-list-placeholder > row.expander:nth-last-child(2) > box > revealer > list.nested { border-bottom-left-radius: 12px; border-bottom-right-radius: 12px; } extension-manager-0.6.3/src/web/000077500000000000000000000000001477302130300165105ustar00rootroot00000000000000extension-manager-0.6.3/src/web/exm-comment-provider.c000066400000000000000000000077051477302130300227460ustar00rootroot00000000000000/* * exm-comment-provider.c * * Copyright 2022-2025 Matthew Jakeman * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General 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 "exm-comment-provider.h" #include "model/exm-comment.h" #include struct _ExmCommentProvider { ExmRequestHandler parent_instance; }; G_DEFINE_FINAL_TYPE (ExmCommentProvider, exm_comment_provider, EXM_TYPE_REQUEST_HANDLER) ExmCommentProvider * exm_comment_provider_new (void) { return g_object_new (EXM_TYPE_COMMENT_PROVIDER, NULL); } static GListModel * parse_comments (GBytes *bytes, GError **out_error) { JsonParser *parser; gconstpointer data; gsize length; GError *error = NULL; *out_error = NULL; data = g_bytes_get_data (bytes, &length); parser = json_parser_new (); if (json_parser_load_from_data (parser, data, length, &error)) { // Returned format is an array of objects // - each object is one comment GListStore *store = g_list_store_new (EXM_TYPE_COMMENT); JsonNode *root = json_parser_get_root (parser); g_assert (JSON_NODE_HOLDS_ARRAY (root)); JsonArray *array = json_node_get_array (root); GList *comments = json_array_get_elements (array); GList *l; for (l = comments; l != NULL; l = l->next) { GObject *result; result = json_gobject_deserialize (EXM_TYPE_COMMENT, l->data); g_list_store_append (store, result); } return G_LIST_MODEL (store); } *out_error = error; return NULL; } void exm_comment_provider_get_comments_async (ExmCommentProvider *self, int extension_id, gboolean retrieve_all, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { // Query https://extensions.gnome.org/comments/all/?pk={%d}&all=false const gchar *all_str = retrieve_all ? "true" : "false"; gchar *url; url = g_strdup_printf ("https://extensions.gnome.org/comments/all/?pk=%d&all=%s", extension_id, all_str); exm_request_handler_request_async (EXM_REQUEST_HANDLER (self), url, cancellable, callback, user_data); } GListModel * exm_comment_provider_get_comments_finish (ExmCommentProvider *self, GAsyncResult *result, GError **error) { gpointer ret; ret = exm_request_handler_request_finish (EXM_REQUEST_HANDLER (self), result, error); return G_LIST_MODEL (ret); } static void exm_comment_provider_class_init (ExmCommentProviderClass *klass) { ExmRequestHandlerClass *request_handler_class = EXM_REQUEST_HANDLER_CLASS (klass); request_handler_class->handle_response = (ResponseHandler) parse_comments; } static void exm_comment_provider_init (ExmCommentProvider *self G_GNUC_UNUSED) { } extension-manager-0.6.3/src/web/exm-comment-provider.h000066400000000000000000000017511477302130300227460ustar00rootroot00000000000000#pragma once #include #include "exm-request-handler.h" G_BEGIN_DECLS #define EXM_TYPE_COMMENT_PROVIDER (exm_comment_provider_get_type()) G_DECLARE_FINAL_TYPE (ExmCommentProvider, exm_comment_provider, EXM, COMMENT_PROVIDER, ExmRequestHandler) ExmCommentProvider *exm_comment_provider_new (void); void exm_comment_provider_get_comments_async (ExmCommentProvider *self, int extension_id, gboolean retrieve_all, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); GListModel * exm_comment_provider_get_comments_finish (ExmCommentProvider *self, GAsyncResult *result, GError **error); G_END_DECLS extension-manager-0.6.3/src/web/exm-data-provider.c000066400000000000000000000066021477302130300222100ustar00rootroot00000000000000/* * exm-data-provider.c * * Copyright 2022-2025 Matthew Jakeman * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General 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 "exm-data-provider.h" #include "model/exm-search-result.h" #include struct _ExmDataProvider { ExmRequestHandler parent_instance; }; G_DEFINE_FINAL_TYPE (ExmDataProvider, exm_data_provider, EXM_TYPE_REQUEST_HANDLER) ExmDataProvider * exm_data_provider_new (void) { return g_object_new (EXM_TYPE_DATA_PROVIDER, NULL); } static ExmSearchResult * parse_extension (GBytes *bytes, GError **out_error) { JsonParser *parser; gconstpointer data; gsize length; GError *error = NULL; *out_error = NULL; data = g_bytes_get_data (bytes, &length); g_debug ("Received JSON search results:\n"); g_debug ("%s\n", (gchar *)data); parser = json_parser_new (); if (json_parser_load_from_data (parser, data, length, &error)) { // Returned format is one single extension object JsonNode *root = json_parser_get_root (parser); g_assert (JSON_NODE_HOLDS_OBJECT (root)); GObject *result = json_gobject_deserialize (EXM_TYPE_SEARCH_RESULT, root); return EXM_SEARCH_RESULT (result); } *out_error = error; return NULL; } void exm_data_provider_get_async (ExmDataProvider *self, const gchar *uuid, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { // Query https://extensions.gnome.org/extension-info/?uuid={%s} const gchar *url; url = g_strdup_printf ("https://extensions.gnome.org/extension-info/?uuid=%s", uuid); exm_request_handler_request_async (EXM_REQUEST_HANDLER (self), url, cancellable, callback, user_data); } ExmSearchResult * exm_data_provider_get_finish (ExmDataProvider *self, GAsyncResult *result, GError **error) { gpointer ret; ret = exm_request_handler_request_finish (EXM_REQUEST_HANDLER (self), result, error); return EXM_SEARCH_RESULT (ret); } static void exm_data_provider_class_init (ExmDataProviderClass *klass) { ExmRequestHandlerClass *request_handler_class = EXM_REQUEST_HANDLER_CLASS (klass); request_handler_class->handle_response = (ResponseHandler) parse_extension; } static void exm_data_provider_init (ExmDataProvider *self G_GNUC_UNUSED) { } extension-manager-0.6.3/src/web/exm-data-provider.h000066400000000000000000000015041477302130300222110ustar00rootroot00000000000000#pragma once #include #include "exm-request-handler.h" #include "model/exm-search-result.h" G_BEGIN_DECLS #define EXM_TYPE_DATA_PROVIDER (exm_data_provider_get_type()) G_DECLARE_FINAL_TYPE (ExmDataProvider, exm_data_provider, EXM, DATA_PROVIDER, ExmRequestHandler) ExmDataProvider *exm_data_provider_new (void); void exm_data_provider_get_async (ExmDataProvider *self, const gchar *uuid, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); ExmSearchResult * exm_data_provider_get_finish (ExmDataProvider *self, GAsyncResult *result, GError **error); G_END_DECLS extension-manager-0.6.3/src/web/exm-image-resolver.c000066400000000000000000000101421477302130300223620ustar00rootroot00000000000000/* * exm-image-resolver.c * * Copyright 2022-2025 Matthew Jakeman * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General 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 "exm-image-resolver.h" #include struct _ExmImageResolver { GObject parent_instance; SoupSession *session; GMutex mutex; }; G_DEFINE_FINAL_TYPE (ExmImageResolver, exm_image_resolver, G_TYPE_OBJECT) ExmImageResolver * exm_image_resolver_new (void) { return g_object_new (EXM_TYPE_IMAGE_RESOLVER, NULL); } static void exm_image_resolver_finalize (GObject *object) { ExmImageResolver *self = (ExmImageResolver *)object; g_object_unref (self->session); g_mutex_clear (&self->mutex); G_OBJECT_CLASS (exm_image_resolver_parent_class)->finalize (object); } static void image_loaded_callback (GObject *source, GAsyncResult *res, GTask *task) { GBytes *bytes; GdkTexture *texture; GError *error = NULL; bytes = soup_session_send_and_read_finish (SOUP_SESSION (source), res, &error); if (error) { g_task_return_error (task, error); } else { texture = gdk_texture_new_from_bytes (bytes, &error); if (error) { g_task_return_error (task, error); } g_task_return_pointer (task, texture, g_object_unref); g_bytes_unref (bytes); } g_object_unref (task); } void exm_image_resolver_resolve_async (ExmImageResolver *self, const gchar *rel_path, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { GTask *task; const gchar *url; SoupMessage *msg; if (rel_path == NULL) return; task = g_task_new (self, cancellable, callback, user_data); // Resolve https://extensions.gnome.org{rel_path} url = g_uri_resolve_relative ("https://extensions.gnome.org/", rel_path, G_URI_FLAGS_NONE, NULL); msg = soup_message_new (SOUP_METHOD_GET, url); if (!msg) { g_task_return_new_error (task, g_quark_from_string ("exm-image-resolver"), -1, "Could not construct message for uri: %s", url); return; } g_mutex_lock (&self->mutex); soup_session_send_and_read_async (self->session, msg, G_PRIORITY_DEFAULT, cancellable, (GAsyncReadyCallback) image_loaded_callback, task); g_mutex_unlock (&self->mutex); g_object_unref (msg); } GdkTexture * exm_image_resolver_resolve_finish (ExmImageResolver *self, GAsyncResult *result, GError **error) { g_return_val_if_fail (g_task_is_valid (result, self), NULL); return g_task_propagate_pointer (G_TASK (result), error); } static void exm_image_resolver_class_init (ExmImageResolverClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->finalize = exm_image_resolver_finalize; } static void exm_image_resolver_init (ExmImageResolver *self) { self->session = soup_session_new_with_options ("timeout", 30, NULL); g_mutex_init (&self->mutex); } extension-manager-0.6.3/src/web/exm-image-resolver.h000066400000000000000000000015661477302130300224010ustar00rootroot00000000000000#pragma once #include #include #include G_BEGIN_DECLS #define EXM_TYPE_IMAGE_RESOLVER (exm_image_resolver_get_type()) G_DECLARE_FINAL_TYPE (ExmImageResolver, exm_image_resolver, EXM, IMAGE_RESOLVER, GObject) ExmImageResolver *exm_image_resolver_new (void); void exm_image_resolver_resolve_async (ExmImageResolver *self, const gchar *rel_path, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); GdkTexture *exm_image_resolver_resolve_finish (ExmImageResolver *self, GAsyncResult *result, GError **error); G_END_DECLS extension-manager-0.6.3/src/web/exm-request-handler.c000066400000000000000000000132571477302130300225560ustar00rootroot00000000000000/* * exm-request-handler.c * * Copyright 2022-2025 Matthew Jakeman * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General 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 "exm-request-handler.h" #include #include #include typedef struct { SoupSession *session; } ExmRequestHandlerPrivate; G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE (ExmRequestHandler, exm_request_handler, G_TYPE_OBJECT) /** * exm_request_handler_new: * * Create a new #ExmRequestHandler. * * Returns: (transfer full): a newly created #ExmRequestHandler */ ExmRequestHandler * exm_request_handler_new (void) { return g_object_new (EXM_TYPE_REQUEST_HANDLER, NULL); } static void exm_request_handler_finalize (GObject *object) { ExmRequestHandler *self = (ExmRequestHandler *)object; ExmRequestHandlerPrivate *priv = exm_request_handler_get_instance_private (self); g_object_unref (priv->session); G_OBJECT_CLASS (exm_request_handler_parent_class)->finalize (object); } static void * default_handle_response (GBytes *bytes G_GNUC_UNUSED, GError **out_error) { *out_error = NULL; g_warning ("You have not overridden the `handle_response` virtual method for subclass of ExmRequestHandler. Nothing will happen.\n"); return NULL; } typedef struct { ExmRequestHandler *self; GTask *task; SoupMessage *msg; } RequestData; static void request_callback (GObject *source, GAsyncResult *res, RequestData *data) { GBytes *bytes; GListModel *model; guint status_code; GError *error = NULL; bytes = soup_session_send_and_read_finish (SOUP_SESSION (source), res, &error); g_object_get (G_OBJECT (data->msg), "status-code", &status_code, NULL); if (error) { g_task_return_error (data->task, error); } else if (status_code >= SOUP_STATUS_BAD_REQUEST) { g_task_return_new_error (data->task, g_quark_from_string ("request-error-quark"), status_code, status_code >= SOUP_STATUS_INTERNAL_SERVER_ERROR ? _("Check GNOME infrastructure status and try again later") : _("Check your network status and try again")); } else { // Get derived class to handle response ExmRequestHandlerClass *klass = EXM_REQUEST_HANDLER_CLASS (G_OBJECT_GET_CLASS (data->self)); model = klass->handle_response (bytes, &error); if (model == NULL) g_task_return_error (data->task, error); else g_task_return_pointer (data->task, model, g_object_unref); g_bytes_unref (bytes); } g_object_unref (data->self); g_object_unref (data->task); g_object_unref (data->msg); g_free (data); } void exm_request_handler_request_async (ExmRequestHandler *self, const gchar *url_endpoint, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { ExmRequestHandlerPrivate *priv; GTask *task; SoupMessage *msg; priv = exm_request_handler_get_instance_private (self); task = g_task_new (self, cancellable, callback, user_data); msg = soup_message_new (SOUP_METHOD_GET, url_endpoint); if (!msg) { g_task_return_new_error (task, g_quark_from_string ("exm-search-provider"), -1, "Could not construct message for uri: %s", url_endpoint); return; } RequestData *data = g_new0 (RequestData, 1); data->self = g_object_ref (self); data->task = g_object_ref (task); data->msg = g_object_ref (msg); soup_session_send_and_read_async (priv->session, msg, G_PRIORITY_DEFAULT, cancellable, (GAsyncReadyCallback) request_callback, data); g_object_unref (msg); } gpointer exm_request_handler_request_finish (ExmRequestHandler *self, GAsyncResult *result, GError **error) { g_return_val_if_fail (g_task_is_valid (result, self), NULL); return g_task_propagate_pointer (G_TASK (result), error); } static void exm_request_handler_class_init (ExmRequestHandlerClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->finalize = exm_request_handler_finalize; ExmRequestHandlerClass *request_handler_class = EXM_REQUEST_HANDLER_CLASS (klass); request_handler_class->handle_response = default_handle_response; } static void exm_request_handler_init (ExmRequestHandler *self) { ExmRequestHandlerPrivate *priv = exm_request_handler_get_instance_private (self); priv->session = soup_session_new_with_options ("timeout", 30, NULL); } extension-manager-0.6.3/src/web/exm-request-handler.h000066400000000000000000000020001477302130300225430ustar00rootroot00000000000000#pragma once #include #include G_BEGIN_DECLS #define EXM_TYPE_REQUEST_HANDLER (exm_request_handler_get_type()) G_DECLARE_DERIVABLE_TYPE (ExmRequestHandler, exm_request_handler, EXM, REQUEST_HANDLER, GObject) typedef gpointer (*ResponseHandler)(GBytes *bytes, GError **out_error); struct _ExmRequestHandlerClass { GObjectClass parent_class; ResponseHandler handle_response; }; ExmRequestHandler *exm_request_handler_new (void); void exm_request_handler_request_async (ExmRequestHandler *self, const gchar *url_endpoint, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); gpointer exm_request_handler_request_finish (ExmRequestHandler *self, GAsyncResult *result, GError **error); G_END_DECLS extension-manager-0.6.3/src/web/exm-search-provider.c000066400000000000000000000202641477302130300225440ustar00rootroot00000000000000/* * exm-search-provider.c * * Copyright 2022-2025 Matthew Jakeman * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General 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 "exm-search-provider.h" #include "model/exm-search-result.h" #include struct _ExmSearchProvider { ExmRequestHandler parent_instance; const gchar *shell_version; gboolean show_unsupported; }; G_DEFINE_FINAL_TYPE (ExmSearchProvider, exm_search_provider, EXM_TYPE_REQUEST_HANDLER) enum { PROP_0, PROP_SHOW_UNSUPPORTED, PROP_SHELL_VERSION, N_PROPS }; static GParamSpec *properties [N_PROPS]; typedef struct { GListModel *list_model; int num_pages; } SearchRequestData; ExmSearchProvider * exm_search_provider_new (void) { return g_object_new (EXM_TYPE_SEARCH_PROVIDER, NULL); } static void exm_search_provider_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { ExmSearchProvider *self = EXM_SEARCH_PROVIDER (object); switch (prop_id) { case PROP_SHOW_UNSUPPORTED: g_value_set_boolean (value, self->show_unsupported); break; case PROP_SHELL_VERSION: g_value_set_string (value, self->shell_version); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void exm_search_provider_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { ExmSearchProvider *self = EXM_SEARCH_PROVIDER (object); switch (prop_id) { case PROP_SHOW_UNSUPPORTED: self->show_unsupported = g_value_get_boolean (value); break; case PROP_SHELL_VERSION: self->shell_version = g_value_get_string (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static SearchRequestData * parse_search_results (GBytes *bytes, GError **out_error) { JsonParser *parser; gconstpointer data; gsize length; int num_pages; SearchRequestData *result; GError *error = NULL; *out_error = NULL; num_pages = 0; data = g_bytes_get_data (bytes, &length); g_debug ("Received JSON search results:\n"); g_debug ("%s\n", (gchar *)data); parser = json_parser_new (); if (json_parser_load_from_data (parser, data, length, &error)) { // Returned format is a root object // - which contains an array // - of extension objects GListStore *store = g_list_store_new (EXM_TYPE_SEARCH_RESULT); JsonNode *root = json_parser_get_root (parser); g_assert (JSON_NODE_HOLDS_OBJECT (root)); JsonObject *root_object = json_node_get_object (root); g_assert (json_object_has_member (root_object, "extensions")); g_assert (json_object_has_member (root_object, "numpages")); num_pages = json_object_get_int_member (root_object, "numpages"); g_info ("Num Pages: %d\n", num_pages); JsonArray *array = json_object_get_array_member (root_object, "extensions"); GList *search_results = json_array_get_elements (array); GList *l; for (l = search_results; l != NULL; l = l->next) { GObject *result; result = json_gobject_deserialize (EXM_TYPE_SEARCH_RESULT, l->data); g_list_store_append (store, result); } result = g_slice_new0 (SearchRequestData); result->list_model = G_LIST_MODEL (store); result->num_pages = num_pages; return result; } if (out_error) *out_error = error; //if (out_num_pages) // *out_num_pages = num_pages; return NULL; } const gchar * get_sort_string (ExmSearchSort sort_type) { switch (sort_type) { case EXM_SEARCH_SORT_DOWNLOADS: return "downloads"; case EXM_SEARCH_SORT_RECENT: return "created"; case EXM_SEARCH_SORT_NAME: return "name"; case EXM_SEARCH_SORT_RELEVANCE: default: return "relevance"; } } void exm_search_provider_query_async (ExmSearchProvider *self, const gchar *query, int page, ExmSearchSort sort_type, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { // Query https://extensions.gnome.org/extension-query/?search={%s}&sort={%s} const gchar *url; const gchar *sort; sort = get_sort_string (sort_type); if (self->show_unsupported) url = g_strdup_printf ("https://extensions.gnome.org/extension-query/?search=%s&sort=%s&page=%d", query, sort, page); else url = g_strdup_printf ("https://extensions.gnome.org/extension-query/?search=%s&sort=%s&shell_version=%s&page=%d", query, sort, self->shell_version, page); exm_request_handler_request_async (EXM_REQUEST_HANDLER (self), url, cancellable, callback, user_data); } GListModel * exm_search_provider_query_finish (ExmSearchProvider *self, GAsyncResult *result, int *num_pages, GError **error) { gpointer ret; SearchRequestData *data; GListModel *list_model; // Check whether the task has been cancelled and if so, return null // This prevents a race condition in the search logic GCancellable *cancellable = g_task_get_cancellable (G_TASK (result)); if (g_cancellable_is_cancelled (cancellable)) { return NULL; } ret = exm_request_handler_request_finish (EXM_REQUEST_HANDLER (self), result, error); if (ret == NULL) return NULL; data = (SearchRequestData *) ret; if (num_pages) *num_pages = data->num_pages; list_model = data->list_model; g_slice_free (SearchRequestData, data); return list_model; } static void exm_search_provider_class_init (ExmSearchProviderClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->get_property = exm_search_provider_get_property; object_class->set_property = exm_search_provider_set_property; ExmRequestHandlerClass *request_handler_class = EXM_REQUEST_HANDLER_CLASS (klass); request_handler_class->handle_response = (ResponseHandler) parse_search_results; properties [PROP_SHOW_UNSUPPORTED] = g_param_spec_boolean ("show-unsupported", "Show Unsupported", "Show Unsupported", FALSE, G_PARAM_READWRITE); properties [PROP_SHELL_VERSION] = g_param_spec_string ("shell-version", "Shell Version", "Shell Version", NULL, G_PARAM_READWRITE); g_object_class_install_properties (object_class, N_PROPS, properties); } static void exm_search_provider_init (ExmSearchProvider *self) { // TODO: Get current GNOME Shell Version self->shell_version = "42"; } extension-manager-0.6.3/src/web/exm-search-provider.h000066400000000000000000000023051477302130300225450ustar00rootroot00000000000000#pragma once #include #include #include "exm-request-handler.h" G_BEGIN_DECLS #define EXM_TYPE_SEARCH_PROVIDER (exm_search_provider_get_type()) G_DECLARE_FINAL_TYPE (ExmSearchProvider, exm_search_provider, EXM, SEARCH_PROVIDER, ExmRequestHandler) typedef enum { EXM_SEARCH_SORT_RELEVANCE = 0, EXM_SEARCH_SORT_DOWNLOADS = 1, EXM_SEARCH_SORT_RECENT = 2, EXM_SEARCH_SORT_NAME = 3 } ExmSearchSort; ExmSearchProvider *exm_search_provider_new (void); void exm_search_provider_query_async (ExmSearchProvider *self, const gchar *query, int page, ExmSearchSort sort_type, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); GListModel * exm_search_provider_query_finish (ExmSearchProvider *self, GAsyncResult *result, int *num_pages, GError **error); G_END_DECLS extension-manager-0.6.3/src/web/meson.build000066400000000000000000000003711477302130300206530ustar00rootroot00000000000000exm_sources += files([ 'exm-search-provider.c', 'exm-image-resolver.c', 'exm-request-handler.c', 'exm-data-provider.c', 'exm-comment-provider.c', 'model/exm-search-result.c', 'model/exm-comment.c', 'model/exm-shell-version-map.c' ]) extension-manager-0.6.3/src/web/model/000077500000000000000000000000001477302130300176105ustar00rootroot00000000000000extension-manager-0.6.3/src/web/model/exm-comment.c000066400000000000000000000144121477302130300222070ustar00rootroot00000000000000/* exm-comment.c * * Copyright 2022-2024 Matthew Jakeman * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General 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 "exm-comment.h" #include "exm-utils.h" #include struct _ExmComment { GObject parent_instance; gboolean is_extension_creator; gchar *comment; gchar *author; int rating; gchar *date; }; static JsonSerializableIface *serializable_iface = NULL; static void json_serializable_iface_init (JsonSerializableIface *iface); G_DEFINE_FINAL_TYPE_WITH_CODE (ExmComment, exm_comment, G_TYPE_OBJECT, G_IMPLEMENT_INTERFACE (JSON_TYPE_SERIALIZABLE, json_serializable_iface_init)) enum { PROP_0, PROP_IS_EXTENSION_CREATOR, PROP_COMMENT, PROP_AUTHOR, PROP_RATING, PROP_DATE, N_PROPS }; static GParamSpec *properties [N_PROPS]; ExmComment * exm_comment_new (void) { return g_object_new (EXM_TYPE_COMMENT, NULL); } static void exm_comment_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { ExmComment *self = EXM_COMMENT (object); switch (prop_id) { case PROP_IS_EXTENSION_CREATOR: g_value_set_boolean (value, self->is_extension_creator); break; case PROP_COMMENT: g_value_set_string (value, exm_utils_convert_html (self->comment)); break; case PROP_AUTHOR: g_value_set_string (value, self->author); break; case PROP_RATING: g_value_set_int (value, self->rating); break; case PROP_DATE: g_value_set_string (value, self->date); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void exm_comment_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { ExmComment *self = EXM_COMMENT (object); switch (prop_id) { case PROP_IS_EXTENSION_CREATOR: self->is_extension_creator = g_value_get_boolean (value); break; case PROP_COMMENT: self->comment = g_value_dup_string (value); break; case PROP_AUTHOR: self->author = g_value_dup_string (value); break; case PROP_RATING: self->rating = g_value_get_int (value); break; case PROP_DATE: self->date = g_value_dup_string (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void exm_comment_class_init (ExmCommentClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->get_property = exm_comment_get_property; object_class->set_property = exm_comment_set_property; properties [PROP_IS_EXTENSION_CREATOR] = g_param_spec_boolean ("is_extension_creator", "Is Extension Creator", "Is the creator of the extension", FALSE, G_PARAM_READWRITE); properties [PROP_COMMENT] = g_param_spec_string ("comment", "Comment", "Comment", NULL, G_PARAM_READWRITE); properties [PROP_AUTHOR] = g_param_spec_string ("author", "Author", "Author", NULL, G_PARAM_READWRITE); properties [PROP_RATING] = g_param_spec_int ("rating", "Rating", "Rating", -1, 5, -1, /* min -1, max 5, default -1 */ G_PARAM_READWRITE); properties [PROP_DATE] = g_param_spec_string ("date", "Date", "Date", NULL, G_PARAM_READWRITE); g_object_class_install_properties (object_class, N_PROPS, properties); } static void exm_comment_init (ExmComment *self) { // Initialise to -1 for no rating self->rating = -1; } static gboolean exm_comment_deserialize_property (JsonSerializable *serializable, const gchar *property_name, GValue *value, GParamSpec *pspec, JsonNode *property_node) { if (strcmp (property_name, "author") == 0) { JsonObject *obj; obj = json_node_get_object (property_node); g_value_set_string (value, json_object_get_string_member (obj, "username")); return TRUE; } else if (strcmp (property_name, "date") == 0) { JsonObject *obj; obj = json_node_get_object (property_node); g_value_set_string (value, json_object_get_string_member (obj, "timestamp")); return TRUE; } return serializable_iface->deserialize_property (serializable, property_name, value, pspec, property_node); } static void json_serializable_iface_init (JsonSerializableIface *iface) { serializable_iface = g_type_default_interface_peek (JSON_TYPE_SERIALIZABLE); iface->deserialize_property = exm_comment_deserialize_property; } extension-manager-0.6.3/src/web/model/exm-comment.h000066400000000000000000000003421477302130300222110ustar00rootroot00000000000000#pragma once #include G_BEGIN_DECLS #define EXM_TYPE_COMMENT (exm_comment_get_type()) G_DECLARE_FINAL_TYPE (ExmComment, exm_comment, EXM, COMMENT, GObject) ExmComment *exm_comment_new (void); G_END_DECLS extension-manager-0.6.3/src/web/model/exm-search-result.c000066400000000000000000000237201477302130300233300ustar00rootroot00000000000000/* * exm-search-result.c * * Copyright 2022-2025 Matthew Jakeman * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General 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 "exm-search-result.h" #include "exm-shell-version-map.h" #include struct _ExmSearchResult { GObject parent_instance; gchar *uuid; gchar *name; gchar *creator; gchar *icon; gchar *screenshot; gchar *url; gchar **donation_urls; gchar *link; gchar *description; int pk; int downloads; ExmShellVersionMap *shell_version_map; }; G_DEFINE_FINAL_TYPE (ExmSearchResult, exm_search_result, G_TYPE_OBJECT) enum { PROP_0, PROP_UUID, PROP_NAME, PROP_CREATOR, PROP_ICON, PROP_SCREENSHOT, PROP_URL, PROP_DONATION_URLS, PROP_LINK, PROP_DESCRIPTION, PROP_PK, PROP_DOWNLOADS, PROP_SHELL_VERSION_MAP, N_PROPS }; static GParamSpec *properties [N_PROPS]; ExmSearchResult * exm_search_result_new (void) { return g_object_new (EXM_TYPE_SEARCH_RESULT, NULL); } static void exm_search_result_finalize (GObject *object) { ExmSearchResult *self = (ExmSearchResult *)object; g_clear_pointer (&self->shell_version_map, exm_shell_version_map_unref); G_OBJECT_CLASS (exm_search_result_parent_class)->finalize (object); } static void exm_search_result_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { ExmSearchResult *self = EXM_SEARCH_RESULT (object); switch (prop_id) { case PROP_UUID: g_value_set_string (value, self->uuid); break; case PROP_NAME: g_value_set_string (value, self->name); break; case PROP_CREATOR: g_value_set_string (value, self->creator); break; case PROP_ICON: g_value_set_string (value, self->icon); break; case PROP_SCREENSHOT: g_value_set_string (value, self->screenshot); break; case PROP_URL: g_value_set_string (value, self->url); break; case PROP_DONATION_URLS: g_value_set_boxed (value, self->donation_urls); break; case PROP_LINK: g_value_set_string (value, self->link); break; case PROP_DESCRIPTION: g_value_set_string (value, self->description); break; case PROP_PK: g_value_set_int (value, self->pk); break; case PROP_DOWNLOADS: g_value_set_int (value, self->downloads); break; case PROP_SHELL_VERSION_MAP: g_value_set_boxed (value, self->shell_version_map); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void exm_search_result_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { ExmSearchResult *self = EXM_SEARCH_RESULT (object); switch (prop_id) { case PROP_UUID: self->uuid = g_value_dup_string (value); break; case PROP_NAME: self->name = g_value_dup_string (value); break; case PROP_CREATOR: self->creator = g_value_dup_string (value); break; case PROP_ICON: self->icon = g_value_dup_string (value); break; case PROP_SCREENSHOT: self->screenshot = g_value_dup_string (value); break; case PROP_URL: self->url = g_value_dup_string (value); break; case PROP_DONATION_URLS: self->donation_urls = g_value_dup_boxed (value); break; case PROP_LINK: self->link = g_value_dup_string (value); break; case PROP_DESCRIPTION: self->description = g_value_dup_string (value); break; case PROP_PK: self->pk = g_value_get_int (value); break; case PROP_DOWNLOADS: self->downloads = g_value_get_int (value); break; case PROP_SHELL_VERSION_MAP: if (self->shell_version_map) g_clear_pointer (&self->shell_version_map, exm_shell_version_map_unref); self->shell_version_map = exm_shell_version_map_ref (g_value_get_boxed (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } gboolean exm_search_result_supports_shell_version (ExmSearchResult *self, const gchar *shell_version) { g_return_val_if_fail (shell_version, FALSE); return exm_shell_version_map_supports (self->shell_version_map, shell_version); } static void deserialize_version (JsonObject *object G_GNUC_UNUSED, const gchar *shell_version, JsonNode *member_node, ExmShellVersionMap *version_map) { int package; double version; JsonObject *version_obj; version_obj = json_node_get_object (member_node); package = json_object_get_int_member (version_obj, "pk"); version = json_object_get_double_member (version_obj, "version"); exm_shell_version_map_add (version_map, shell_version, package, version); } static gpointer deserialize_shell_version_map (JsonNode* node) { ExmShellVersionMap *version_map; JsonObject *object; version_map = exm_shell_version_map_new (); g_assert (JSON_NODE_HOLDS_OBJECT (node)); object = json_node_get_object (node); json_object_foreach_member (object, (JsonObjectForeach) deserialize_version, version_map); return version_map; } static void exm_search_result_class_init (ExmSearchResultClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->finalize = exm_search_result_finalize; object_class->get_property = exm_search_result_get_property; object_class->set_property = exm_search_result_set_property; properties [PROP_UUID] = g_param_spec_string ("uuid", "UUID", "UUID", NULL, G_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY); properties [PROP_NAME] = g_param_spec_string ("name", "Name", "Name", NULL, G_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY); properties [PROP_CREATOR] = g_param_spec_string ("creator", "Creator", "Creator", NULL, G_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY); properties [PROP_ICON] = g_param_spec_string ("icon", "Icon", "Icon", NULL, G_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY); properties [PROP_SCREENSHOT] = g_param_spec_string ("screenshot", "Screenshot", "Screenshot", NULL, G_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY); properties [PROP_URL] = g_param_spec_string ("url", "Url", "Url", NULL, G_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY); properties[PROP_DONATION_URLS] = g_param_spec_boxed ("donation_urls", "Donation URLs", "Donation URLs", G_TYPE_STRV, G_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY); properties [PROP_LINK] = g_param_spec_string ("link", "Link", "Link", NULL, G_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY); properties [PROP_DESCRIPTION] = g_param_spec_string ("description", "Description", "Description", NULL, G_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY); properties [PROP_PK] = g_param_spec_int ("pk", "Package ID", "Package ID", 0, G_MAXINT, 0, G_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY); properties [PROP_DOWNLOADS] = g_param_spec_int ("downloads", "Downloads", "Downloads", 0, G_MAXINT, 0, G_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY); properties [PROP_SHELL_VERSION_MAP] = g_param_spec_boxed ("shell_version_map", "Shell Version Map", "Shell Version Map", EXM_TYPE_SHELL_VERSION_MAP, G_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY); g_object_class_install_properties (object_class, N_PROPS, properties); json_boxed_register_deserialize_func (EXM_TYPE_SHELL_VERSION_MAP, JSON_NODE_OBJECT, deserialize_shell_version_map); } static void exm_search_result_init (ExmSearchResult *self G_GNUC_UNUSED) { } extension-manager-0.6.3/src/web/model/exm-search-result.h000066400000000000000000000006511477302130300233330ustar00rootroot00000000000000#pragma once #include G_BEGIN_DECLS #define EXM_TYPE_SEARCH_RESULT (exm_search_result_get_type()) G_DECLARE_FINAL_TYPE (ExmSearchResult, exm_search_result, EXM, SEARCH_RESULT, GObject) ExmSearchResult *exm_search_result_new (void); gboolean exm_search_result_supports_shell_version (ExmSearchResult *self, const gchar *shell_version); G_END_DECLS extension-manager-0.6.3/src/web/model/exm-shell-version-map.c000066400000000000000000000071741477302130300241210ustar00rootroot00000000000000#include "exm-shell-version-map.h" G_DEFINE_BOXED_TYPE (ExmShellVersionMap, exm_shell_version_map, exm_shell_version_map_ref, exm_shell_version_map_unref) /** * exm_shell_version_map_new: * * Creates a new #ExmShellVersionMap. * * Returns: (transfer full): A newly created #ExmShellVersionMap */ ExmShellVersionMap * exm_shell_version_map_new (void) { ExmShellVersionMap *self; self = g_slice_new0 (ExmShellVersionMap); self->ref_count = 1; return self; } static void free_entry (MapEntry *entry) { g_free (entry->shell_major_version); if (entry->shell_minor_version) g_free (entry->shell_minor_version); g_slice_free (MapEntry, entry); } static void exm_shell_version_map_free (ExmShellVersionMap *self) { g_assert (self); g_assert_cmpint (self->ref_count, ==, 0); g_list_free_full (g_steal_pointer (&self->map), (GDestroyNotify) free_entry); g_slice_free (ExmShellVersionMap, self); } /** * exm_shell_version_map_ref: * @self: A #ExmShellVersionMap * * Increments the reference count of @self by one. * * Returns: (transfer full): @self */ ExmShellVersionMap * exm_shell_version_map_ref (ExmShellVersionMap *self) { g_return_val_if_fail (self, NULL); g_return_val_if_fail (self->ref_count, NULL); g_atomic_int_inc (&self->ref_count); return self; } /** * exm_shell_version_map_unref: * @self: A #ExmShellVersionMap * * Decrements the reference count of @self by one, freeing the structure when * the reference count reaches zero. */ void exm_shell_version_map_unref (ExmShellVersionMap *self) { g_return_if_fail (self); g_return_if_fail (self->ref_count); if (g_atomic_int_dec_and_test (&self->ref_count)) exm_shell_version_map_free (self); } void exm_shell_version_map_add (ExmShellVersionMap *self, const gchar *shell_version, int ext_package, double ext_version) { gchar **strarr; const gchar *major; const gchar *minor; strarr = g_strsplit (shell_version, ".", 2); major = strarr[0]; minor = strarr[1]; g_debug ("Parsed Version: %s as %s.%s\n", shell_version, major, minor); MapEntry *entry = g_slice_new0 (MapEntry); entry->shell_major_version = g_strdup (major); entry->shell_minor_version = g_strdup (minor); entry->extension_version = ext_version; entry->extension_package = ext_package; self->map = g_list_append (self->map, entry); } gboolean exm_shell_version_map_supports (ExmShellVersionMap *self, const gchar *shell_version) { // The shell_version string can be either in the form 3.32, 3.36, // 3.38, etc or it can be 40, 41, etc. As a rule, we return true // if the minor version of `shell_version` is equal or more specific // to the minor version string stored in the version map. gchar **strarr; GList *element; const gchar *major; const gchar *minor; // Some entries on the website do not define a shell_version_map. Assume // these extensions have been retired and ignore. if (self->map == NULL) return FALSE; strarr = g_strsplit (shell_version, ".", 2); major = strarr[0]; minor = strarr[1]; for (element = self->map; element != NULL; element = element->next) { MapEntry *entry = element->data; if (g_strcmp0 (major, entry->shell_major_version) != 0) continue; if (!entry->shell_minor_version || g_str_has_prefix (minor, entry->shell_minor_version)) return TRUE; } return FALSE; } extension-manager-0.6.3/src/web/model/exm-shell-version-map.h000066400000000000000000000025061477302130300241200ustar00rootroot00000000000000#pragma once #include G_BEGIN_DECLS #define EXM_TYPE_SHELL_VERSION_MAP (exm_shell_version_map_get_type ()) typedef struct _ExmShellVersionMap ExmShellVersionMap; typedef struct { gchar *shell_major_version; gchar *shell_minor_version; int extension_package; double extension_version; } MapEntry; struct _ExmShellVersionMap { /*< private >*/ guint ref_count; GList *map; }; GType exm_shell_version_map_get_type (void) G_GNUC_CONST; ExmShellVersionMap *exm_shell_version_map_new (void); ExmShellVersionMap *exm_shell_version_map_ref (ExmShellVersionMap *self); void exm_shell_version_map_unref (ExmShellVersionMap *self); void exm_shell_version_map_add (ExmShellVersionMap *self, const gchar *shell_version, int ext_package, double ext_version); gboolean exm_shell_version_map_supports (ExmShellVersionMap *self, const gchar *shell_version); G_DEFINE_AUTOPTR_CLEANUP_FUNC (ExmShellVersionMap, exm_shell_version_map_unref) G_END_DECLS

Translation status